建立專案
建立專案。
1 2
| mkdir line-bot-node cd line-bot-node
|
初始化專案。
安裝依賴套件。
1
| npm install express axios dotenv
|
新增 .env
檔。
1
| LINE_CHANNEL_ACCESS_TOKEN=
|
新增 .gitignore
檔。
建立頻道
登入 LINE Developers 頁面,選擇 Messaging API 產品,建立一個 Channel。
實作
新增 services/line.js
檔。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| import dotenv from 'dotenv'; import axios from 'axios';
dotenv.config();
const instance = axios.create({ baseURL: 'https://api.line.me', timeout: 9000, headers: { Authorization: `Bearer ${process.env.LINE_CHANNEL_ACCESS_TOKEN}`, }, });
const reply = ({ replyToken, messages, }) => instance.post('/v2/bot/message/reply', { replyToken, messages, });
export { reply, };
export default null;
|
新增 api/index.js
檔。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| import express from 'express'; import { reply } from '../services/line.js';
const app = express();
app.use(express.json());
app.get('/', (req, res) => { res.sendStatus(200); });
app.post('/webhook', async (req, res) => { const events = req.body.events || []; const replies = events .filter(({ type }) => type === 'message') .map(({ replyToken, message }) => reply({ replyToken, messages: [ { type: 'text', text: message.text, }, ], })); await Promise.all(replies); res.sendStatus(200); });
export default app;
|
在專案根目錄新增 vercel.json
檔。
1 2 3
| { "rewrites": [{ "source": "/(.*)", "destination": "/api" }] }
|
推送程式碼到儲存庫。
部署
在 Vercel 平台註冊帳號,並且連結儲存庫。
然後在設定頁面,新增相關環境變數。
將 Function 區域改為東京或新加坡。
設定
- 進到「Messaging API」頁面,設置應用程式的「Webhook URL」。
1
| https://line-bot-node.vercel.app/webhook
|
點選「Verify」按鈕。
將「Use webhook」功能開啟。
將「Auto-reply messages」和「Greeting messages」功能關閉。
程式碼
參考資料