MINARA
使用 Minara客戶端與界面消息平臺

LINE

通過 LINE Messaging API 實現出站推送消息及簽名 webhook 事件。適合日本和臺灣的運營者。

🟡 出站就緒,僅支持推送。 Minara 使用 LINE 的 push API(按月計費)。Reply token(免費)暫未接入,因此每條出站消息都計入套餐配額。入站 webhook 事件已完全支持,並通過 HMAC-SHA256 簽名驗證。

功能說明

  • 推送消息,通過 POST /v2/bot/message/push 發送至 userId、groupId 或 roomId。
  • 入站 webhook,路徑為 /webhooks/line,使用 X-Line-Signature 對原始請求體進行 HMAC-SHA256 驗證,符合 LINE 官方規範。
  • 本版本僅支持文本,圖片、貼紙、視頻等附件為後續功能。
  • 單條文本消息上限 5000 字符send_message 在工具邊界處自動截斷超長內容。

配置步驟

1. 創建 LINE 頻道

  1. 前往 LINE Developers Console
  2. 創建一個 Provider,再在其中創建一個 Messaging API 頻道
  3. 在頻道頁面獲取 Channel access token(長期有效,若為空則點擊"Issue"生成)和 Channel secret

2. 獲取用戶或群組 ID

用戶將 bot 添加為好友後,webhook 會收到一個 follow 事件,其中包含該用戶的 userId(格式為 U... 的不透明字符串)。群組 ID 可在群內發送消息後,從入站 payload 中讀取 groupId。目前沒有自助方式導出所有聯繫人,需在首次交互時手動捕獲 ID。

3. 配置 Minara

最快的方式是使用交互菜單:

minara auth messaging add
# 从列表中选择 `line`,按提示粘贴 access token、channel secret
# 以及默认的 userId / groupId

也可以直接在項目根目錄的 .env 文件中設置環境變量:

LINE_CHANNEL_ACCESS_TOKEN=<长期 bearer token>
LINE_CHANNEL_SECRET=<签名密钥>
LINE_DEFAULT_USER_ID=<默认 Uxxxxxxxxxxxxxx>

4. 測試

minara auth messaging test line

bot 賬號應在數秒內收到"✅ Minara gateway test ping"。

入站 webhook

在 LINE 頻道中將 webhook 地址配置為:

https://<your-host>/webhooks/line

LINE 使用 LINE_CHANNEL_SECRET 對每個 webhook 請求體的原始字節進行 HMAC-SHA256 簽名,簽名放在 X-Line-Signature 請求頭中。Minara 在解析請求體前先驗證簽名;若驗證失敗,返回 401,該請求不會轉發給 Agent。

目前已接受的入站 webhook 事件類型:message.type === "text"message 事件。貼紙、媒體、follow/unfollow 等其他類型一律忽略。

限制與注意事項

  • Push API 按月計費。 開發者試用套餐每月推送上限為 500 條;付費套餐上限更高。生產環境告警請節約使用。
  • Reply token 免費但暫未接入。 後續版本將支持通過 replyToken 回覆(需在入站消息後 30 秒內),不佔用推送配額。
  • 文本上限 5000 字符。 超出部分會被截斷。

故障排查

"測試消息未收到"

  • 確認 bot 已被目標賬號添加為好友(或已加入群組)
  • 檢查 LINE_DEFAULT_USER_ID 格式,開頭的 U 不可缺少
  • 查看 ~/.minara/logs/ 中來自 api.line.me 的 HTTP 4xx 響應

"入站 webhook 返回 401"

  • 環境變量中的 LINE_CHANNEL_SECRET 與 LINE 控制台中的 channel secret 不匹配
  • 簽名是對原始請求體計算的,檢查反向代理或 CDN 是否修改了請求字節

"Push API 返回 429"

  • 當月推送配額已耗盡。升級套餐,或對非告警消息改用 reply token。

參考資料

本頁目錄