需先在telegram通过@botfather创建bot获取token,再在dify控制台生成api key,最后部署支持https的中转服务(如flask+ngrok或云函数)接收webhook并调用dify /chat-messages 接口,注意配置blocking响应模式与唯一user id。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

将Dify应用接入Telegram Bot,需要在Telegram上创建Bot并获取Token,再将该Token配置到Dify平台的Webhook或API调用链路中,使用户在Telegram发送消息时能触发Dify后端推理服务并返回响应。
在Telegram创建Bot并获取Token
打开Telegram → 搜索 @BotFather → 发送 /newbot → 按提示输入Bot名称(如“MyDifyBot”)和用户名(必须以_bot结尾,如“mydify_demo_bot”)→ BotFather会返回一串形如 【1234567890:AAHjKlMnOpQrStUvWxYzAbCdEfGhIjKlMnO】 的Token。
请立即复制保存该Token,【BotFather不会再次显示完整Token,丢失需重新创建】。
在Dify中启用API访问并获取API Key
登录Dify控制台 → 进入「Settings」→ 「API Keys」→ 点击「Create API Key」→ 命名(例如telegram-prod)→ 生成并复制该Key。
注意:此Key用于身份认证,Dify默认不自动开启API访问权限,未创建Key则后续请求会返回401错误。
部署接收Telegram Webhook的中间服务
Telegram要求Bot消息必须通过HTTPS端点接收,Dify本身不直接暴露Webhook入口,因此需部署一个轻量中转服务(如Python Flask + ngrok 或云函数)。
方法一:使用Flask本地快速验证(仅开发测试)
① 创建 main.py,内容包含:接收Telegram POST /webhook、解析message.text、拼接Dify API请求头与body、POST至 Dify的/chat-messages 接口、提取response.answer并回传给Telegram;
② 安装依赖:pip install flask requests;
③ 运行 python main.py;
④ 用 ngrok http 5000 获取临时HTTPS地址(如 https://abc123.ngrok.io);
⑤ 向 Telegram BotFather 发送指令:/setwebhook → 紧接着发送你的ngrok地址 + /webhook(例如 https://abc123.ngrok.io/webhook)。
方法二:部署至云函数(推荐生产环境)
将上述逻辑打包为阿里云FC、Vercel Edge Function或Cloudflare Workers函数,绑定自定义域名并配置HTTPS证书;确保函数能处理Telegram的POST body(application/json)、正确响应200、且无跨域或超时限制(Telegram要求响应时间 ≤ 3秒)。
配置Dify应用的API调用参数
在中转服务代码中调用Dify /chat-messages 接口时,必须携带以下字段:
- Headers:Authorization: Bearer
- Body:{ "inputs": {}, "query": "用户消息内容", "response_mode": "blocking", "user": "telegram_【用户ID必须唯一,建议用Telegram的chat.id】" }
response_mode 设为 blocking 是关键,否则Dify返回200但无answer字段,Telegram将收不到回复。
验证接入是否成功
在Telegram中打开你创建的Bot → 发送任意文字(如“你好”)→ 观察是否收到Dify应用设定的初始提示词响应或实际推理结果。
若无响应,检查中转服务日志中的HTTP状态码:401说明API Key错误,400多为JSON格式缺失字段,502/504通常为中转服务不可达或超时。











