词元之母TOK.MOM - 平台充值汇率 1:1 即 1 人民币充值到账 1 美元,支持一个 Key 调用近 600+ 海内外模型,限时特价模型低至 1 折,欢迎上岸!
plugins/platforms/line/ — 无需修改核心代码,像其他平台一样启用即可。| 场景 | 行为 |
|---|---|
1:1 聊天(U 开头 ID) | 响应每条消息 |
群聊(C 开头 ID) | 仅当群组在白名单中时响应 |
多人房间(R 开头 ID) | 仅当房间在白名单中时响应 |
8646 — 如需修改,可通过 LINE_PORT 覆盖。https://... URL — 稍后将其设置为 webhook URL。保持隧道运行以便测试。生产环境请配置固定的 Cloudflare 命名隧道,避免重启后 webhook URL 变更。~/.hermes/.env 中添加:LINE_CHANNEL_ACCESS_TOKEN=YOUR_LONG_LIVED_TOKEN
LINE_CHANNEL_SECRET=YOUR_CHANNEL_SECRET
# 白名单 — 至少填写其中一项(开发环境可使用 LINE_ALLOW_ALL_USERS=true)
LINE_ALLOWED_USERS=U1234567890abcdef... # 逗号分隔的 U 开头 ID
LINE_ALLOWED_GROUPS=C1234567890abcdef... # 可选的群组 ID
LINE_ALLOWED_ROOMS=R1234567890abcdef... # 可选的房间 ID
# 发送图片 / 音频 / 视频时必填 — 隧道解析到的公网 HTTPS 基础 URL
# 未设置时,send_image/voice/video 将拒绝执行
LINE_PUBLIC_URL=https://my-tunnel.example.com~/.hermes/config.yaml 中:gateway/config.py 中的捆绑插件扫描会自动识别 plugins/platforms/line/。无需编辑 Platform.LINE 枚举,无需注册 _create_adapter。https://<your-tunnel>/line/webhook(注意 /line/webhook 路径 — 适配器在此监听)。LINE: webhook listening on 0.0.0.0:8646/line/webhook (public: https://my-tunnel.example.com)LINE_SLOW_RESPONSE_THRESHOLD 秒(默认 45)时,适配器会消耗原始 reply token,发送一个 Template Buttons 气泡:🤔 Still thinking. Tap below to fetch the answer when it's ready. [ Get answer ]
PENDING → READY → DELIVERED,以及 ERROR(用于已取消的运行 — 执行 /stop 后,孤立的 PENDING 状态会解析为"Run was interrupted before completion.",避免持久按钮循环触发)。LINE_SLOW_RESPONSE_THRESHOLD=0LINE_HOME_CHANNEL=Uxxxxxxxxxxxxxxxxxxxx # 默认推送目标deliver: line 的 Cron 任务会路由至 LINE_HOME_CHANNEL。适配器内置独立的仅 Push 发送器,因此即使 cron 在独立进程中运行,也能正常工作。| 变量 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|
LINE_CHANNEL_ACCESS_TOKEN | 是 | — | 长期有效的频道访问 token |
LINE_CHANNEL_SECRET | 是 | — | Channel secret(用于 HMAC-SHA256 webhook 验证) |
LINE_HOST | 否 | 0.0.0.0 | Webhook 绑定主机 |
LINE_PORT | 否 | 8646 | Webhook 绑定端口 |
LINE_PUBLIC_URL | 媒体发送时必填 | — | 公网 HTTPS 基础 URL;发送图片/音频/视频时必须设置 |
LINE_ALLOWED_USERS | 三选一 | — | 逗号分隔的用户 ID(U 开头) |
LINE_ALLOWED_GROUPS | 三选一 | — | 逗号分隔的群组 ID(C 开头) |
LINE_ALLOWED_ROOMS | 三选一 | — | 逗号分隔的房间 ID(R 开头) |
LINE_ALLOW_ALL_USERS | 仅开发环境 | false | 完全跳过白名单验证 |
LINE_HOME_CHANNEL | 否 | — | 默认 cron / 通知推送目标 |
LINE_SLOW_RESPONSE_THRESHOLD | 否 | 45 | 触发 postback 按钮的等待秒数(0 = 禁用) |
LINE_PENDING_TEXT | 否 | "🤔 Still thinking…" | postback 按钮旁显示的气泡文本 |
LINE_BUTTON_LABEL | 否 | "Get answer" | 按钮标签 |
LINE_DELIVERED_TEXT | 否 | "Already replied ✅" | 再次点击已送达按钮时的回复 |
LINE_INTERRUPTED_TEXT | 否 | "Run was interrupted before completion." | 点击 /stop 孤立按钮时的回复 |
Channel secret 复制有误,或隧道重写了请求体。请先用 curl -i https://<tunnel>/line/webhook/health 验证 — 应返回 {"status":"ok","platform":"line"}。LINE_ALLOWED_GROUPS 是否包含对应的 C... 群组 ID。如需查找群组 ID,发送一条测试消息后在 ~/.hermes/logs/gateway.log 中搜索 LINE: rejecting unauthorized source — 被拒绝的 source 字典中包含相关 ID。send_image 报错"LINE_PUBLIC_URL must be set"。 LINE Messaging API 不接受二进制上传 — 图片、音频和视频必须是可访问的 HTTPS URL。将 LINE_PUBLIC_URL 设置为隧道的公网主机名,适配器会自动从 /line/media/<token>/<filename> 提供文件服务。LINE_SLOW_RESPONSE_THRESHOLD,要么其他气泡(工具进度、流式输出)已提前消耗了 reply token。参见"LLM 响应缓慢"中的抑制配置。**)、斜体(*)、代码块和标题均以字面字符显示。适配器在 发送前会将其剥离;URL 会被保留([label](url) 转换为 label (url))。