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。

参考资料

本页目录