Telegram 接入
Telegram 入口使用 Bot API 长轮询,在本机或服务器常驻运行,无需公网回调地址。 支持状态/日报、PDF 导入、原始图像与候选文件、人工复核口令、任务运行与重试。 通用角色、来源准入、数据目录和恢复方式见应用连接。
配置
- 通过 Telegram 官方 BotFather 创建机器人,把 token 填入本机
.env的FINFLOW_TELEGRAM_BOT_TOKEN。 - 使用官方 Bot API 的
getMe获取机器人数字 ID;向机器人发送消息后,通过getUpdates获取自己的用户 ID,以及需要启用的会话 ID。接口调试在本机进行,token 不写入 Git。 - 首次复制
config/integrations.json为config/integrations.local.json,在其中补充或修改telegram字段。
{
"enabled": true,
"bot_id": "123456789",
"users": {
"987654321": ["viewer", "operator", "reviewer"]
},
"allowed_group_chats": [],
"notification_chats": []
}
这是 telegram 字段的内容,保留外层其他设置。所有 ID 都写成字符串,群 ID 的负号也要保留。 群聊 ID 必须加入 allowed_group_chats;自动日报目标另填 notification_chats。 用户须先与机器人开始会话,或将机器人加入目标群并授予相应权限。
官方 API 说明:Telegram Bot API。
启动
Telegram 使用项目基础依赖,无需额外 SDK:
. .venv/bin/activate
python -m pip install -e .
python -m integrations.cli --config config/integrations.local.json preflight --channel telegram
python -m integrations.cli --config config/integrations.local.json telegram
接收器启动时核对 token 对应的机器人身份。如果该机器人已有 webhook,会拒绝启动;确认迁移后自行删除 webhook。 一个机器人只运行一个轮询接收器。命令同时启动 worker,无需为这个入口再开一份 worker。
使用
单聊示例:
/status
/report
/audit
/candidate 候选ID
/run --no-discover
/review TICKET rejected 表格金额单位不一致
完整命令与飞书相同。群内使用 /status@你的机器人用户名,或在命令前 @ 机器人。 群内发送 PDF 时,在文件说明中 @ 机器人;不提供 mention 信息的群消息不执行。 支持保留 Telegram 话题 ID,将回复送回原话题。
候选原图以文件发送,保留原始字节;随后发送完整 JSON 和复核口令。 本入口不提供飞书式复核按钮。复核人身份、会话、候选版本和有效期仍由统一服务校验。
限制与恢复
- 本机附件默认上限 32 MiB;Telegram 云端 Bot API 的下载上限为 20 MB,实际还受平台限制。官方文件限制
- 本版本固定使用 Telegram 官方云端地址,未接入自建 Bot API Server。较大 PDF 使用本机
import-pdf导入。 - 仅处理新的普通消息,忽略机器人消息、匿名群发送者、编辑消息和频道广播。
- 消息和轮询位置在同一数据库事务中保存,重启后从已持久化位置继续;平台保留期之外的消息需要重新发送。
- 发送没有严格一次保证,网络中断可能出现重复通知;已确认的发送阶段保留回执。
app-telegram默认未批准训练用途,按通用来源策略确认后再启用生成与发布。