跳至主要内容

Line Bot Messaging API 測試筆記

· 5 分鐘閱讀
Eric Cheng

因為 Line Notify 即將停止服務,原本是在寫【如何快速將服務從 Line Notify 轉換至 Line 官方帳號及 Messaging API】,不過文章太長了,所以把 Line Bot Messaging API 的部份獨立出來,寫成一篇筆記

一開始接觸 Line Bot 可能會讓人有點困惑的是有不同的入口,一般的區分 Line 官方帳號是給一般管理者使用的,Line Developers 則是開發者專用,但是有部份功能會同時重覆出現在這兩個網站,這篇文章簡單的做了一下使用 Line Bot Messagin API 會用到的功能

Line 官方帳號

https://tw.linebiz.com/

這個介面是給一般使用者管理官方帳號,但是要使用 Line Bot Messaging API 要有官方帳號,所以需要先建立一個官方帳號

在建立好官方帳號後,點「聊天」的 Tab,點選後選取「前往回應設定頁面」

2024-10-28_172049.png

選單選取「Messaging API」,然後點選「啟用 Messaging API」

2024-10-28_172317.png

就會看到以下的畫面,這裏的重點是「Channel secret」,後面會用到,然後是「Webhook 網址」,我們會需要寫支程式,後面再說

先點下面的「Line Developers」進行其他設定,這時就會跳到 Line Developers 這個網站

2024-10-29_101728.png

Line Developers

https://developers.line.biz/

第一個印象就是沒有中文版本,語言只有英文和日文可以選

一樣選到「Messaging API」的 tab

2024-10-29_093352.png

拉到最下方,找到最重要的 「Channel access token」,有了這個 token 才能發送訊息

2024-10-29_093434.png

Line Webhook 做什麼用的?怎麼寫?

Webhook 是一種通知機制,當用戶在 LINE 上與 bot 進行互動時,LINE 平台會將這些事件(如訊息、加入、離開等)以 HTTP POST 請求的形式推送至設定的 Webhook URL。透過 Webhook,後端應用可以接收到事件並作出對應的回應或動作,例如自動回覆訊息。

這裏用 NodeJS 加上 Express 寫一個簡單的範例

請先安裝 @line/bot-sdk

npm install express body-parser @line/bot-sdk

範例檔如下,這裏會需要「Channel access token」和「Channel secret」,分別在前面的說明可以取得

import * as line from '@line/bot-sdk'
import express from 'express'

const CHANNEL_ACCESS_TOKEN = 'YOUR_CHANNEL_ACCESS_TOKEN';
const CHANNEL_SECRET = 'YOUR_CHANNEL_SECRET';

// create LINE SDK config from env variables
const config = {
channelSecret: CHANNEL_SECRET,
};

// create LINE SDK client
const client = new line.messagingApi.MessagingApiClient({
channelAccessToken: CHANNEL_ACCESS_TOKEN
});

// create Express app
const app = express();

// register a webhook handler with middleware about the middleware, please refer to doc
app.post('/callback', line.middleware(config), (req, res) => {
Promise
.all(req.body.events.map(handleEvent))
.then((result) => {
// 設置 response header
res.set('ngrok-skip-browser-warning', 'true'); // 忽略 ngrok 警告
res.json(result);
})
.catch((err) => {
console.error(err);
res.status(500).end();
});
});

// event handler
function handleEvent(event) {
console.log(event);
if (event.type !== 'message' || event.message.type !== 'text') {
// ignore non-text-message event
return Promise.resolve(null);
}

// create an echoing text message
let reply = "您說了:" + event.message.text;
const echo = { type: 'text', text: reply };

// use reply API
return client.replyMessage({
replyToken: event.replyToken,
messages: [echo],
});
}

// listen on port
const port = 3000;
app.listen(port, () => {
console.log(`listening on ${port}`);
});

這支 webhook 做的事相當簡單,只有在收到文字訊息,ex: 收到「hello」,然後回傳「您說了: hello」

要注意的是 webhook 必須要有個公開的 URL,在開發的時候,建議可以使用 ngrok 來測試,正式環境的話,可以參考【如何使用 Serverless Framework 將 Express 部署到 AWS Lambda】使用 AWS Lambda 或自行架設 express server

有了 webhook 公開的 URL 後,回到剛才 Line 官方帳號,將 URL 填入

2024-10-29_113259.png

然後到「回應設定」,將「Webhook」打開和預設開啟的「自動回應訊息」關閉

2024-10-29_113341.png

這時候直接從 Line 傳一則訊息,就可以看到回應的結果了

2024-10-29_113414.png

再來就可以做不同的運用,像是比較常見的接 OpenAI 的 API,馬上就可以變成 AI 聊天機器人了…



版權聲明

,轉載請註明出處
本文連結: https://tech.havocfuture.tw/blog/line-bot-messaging-api



這是 google 廣告