Telegram
将 Telegram bot 连接到 xiantong,支持 bot token 配对、附件和内联按钮
将 Telegram bot 连接到 xiantong,支持 bot token 配对、附件和内联按钮。
Telegram 集成使用标准 Bot API。您需要通过 @BotFather 创建 bot 并获取 token。无需账号链接;您与自己的 bot 对话,bot 会驱动一个 xiantong 会话。
创建 Bot#
- 在 Telegram 中打开
@BotFather并开始聊天。 - 发送
/newbot,按提示输入显示名称和用户名(用户名必须以bot结尾,例如my_xiantong_bot)。 - 复制 BotFather 返回的 token,例如:
1234567890:ABCdefGHIjklMNOpqrsTUVwxyz-0123456789
请像密码一样保护它,任何持有 token 的人都可以冒充您的 bot。 4. 如需群组支持,可在 BotFather 中关闭 privacy mode。但推荐且默认支持的模式是 1 对 1 私聊。
仅私聊。 网关会在适配器边界拒绝 Telegram 群组和频道消息。即使 bot 被加入群组,也只有与 bot 的私聊能驱动会话。
在应用中连接#
- 打开 设置 → 消息。
- 点击 Telegram 卡片上的 连接。
- 粘贴 bot token 并点击 测试。xiantong 会调用 Telegram
getMe接口;成功后显示 bot 名称和用户名,失败时显示 Telegram 返回的错误。 - 点击 保存。token 会保存到工作区密钥链中,Telegram 适配器开始监听。
第一次对话#
- 在 Telegram 中打开您的 bot。
- 发送
/new。 - xiantong 会在当前工作区创建新会话并绑定此聊天。
- 继续输入任意内容,消息会转发给 Agent,回复会根据响应模式返回聊天。
附件#
发送照片、文档、语音、视频或音频时,网关会下载文件,将其包装为 FileAttachment,并连同说明文字一起转发到会话。
| 类型 | 转发形式 |
|---|---|
| Photo | 图片附件(原始分辨率) |
| Document | 带原始 MIME 类型的文件附件 |
| Voice | 音频附件(ogg/opus) |
| Video | 视频附件 |
| Audio | 音频附件 |
单个附件硬上限为 20 MB。超出限制或下载失败时,聊天中会收到可见提示。
内联按钮#
Telegram 支持 inline keyboard,因此 /bind 等流程可以渲染为可点击的近期会话列表:
Recent sessions:
[ Morning standup ]
[ Release v0.8.10 ]
[ Debug session ]
点击按钮即可绑定。网关会在处理后清理旧按钮,避免过期按钮堆积。
访问控制#
Telegram bot 可被知道用户名的人访问,因此工作区默认采用 owner-only 策略。只有允许用户列表中的发送者可以运行 /new、/bind、/unbind、/status、/stop 等命令,或把消息路由到已绑定会话。
- 首次配对规则:在新工作区中首次兑换配对码的 Telegram
user_id会自动成为第一个 owner。 - 添加更多用户:其他人向 bot 发消息时,会收到“Bot is private”提示,并出现在 设置 → 消息 → 待处理请求 中,可一键允许。
- 按绑定覆盖:每个会话通道绑定可继承工作区规则、使用自定义允许列表,或对已接受聊天开放。
Webhook 与长轮询#
- 桌面应用中:适配器使用长轮询,不需要公网 URL。
- 远程服务器中:适配器使用 webhook。您需要配置公网 URL,例如
https://your-server.tld/telegram/webhook,并在 Telegram 中注册 webhook。
远程部署请参考 远程服务器。
故障排除#
Bot 回复 “No session bound to this chat”#
这是新 bot 的正常情况。发送 /new 创建并绑定会话,或使用 /pair <code> 兑换应用中的配对码。
测试失败并显示 “401 Unauthorized”#
bot token 错误或已被撤销。请在 BotFather 中重新获取 token。
Bot 收到消息但没有响应#
检查配置 bot 的工作区是否是应用当前活动工作区。每个工作区都有自己的消息配置。
群组消息不工作#
这是设计行为。默认只有与 bot 的私聊能驱动会话。
附件过大#
Telegram Bot API 对文件下载有大小限制。请通过应用附件选择器上传,或拆分文件。