如何在Dialogflow聊天机器人中向Telegram发送动图?
解决Dialogflow聊天机器人在Telegram中发送动图的问题
嘿,我来帮你搞定这个动图显示的问题!你之前用Custom payload的方式之所以只显示链接,是因为Telegram的文本消息里的Markdown语法并不支持直接嵌入图片——[alt](url)这种写法只会被解析成普通链接,而不是展示图片。下面给你两种可行的解决方案:
方法一:直接用Custom payload发送动图(无需Webhook)
Telegram Bot API专门提供了animation字段来发送GIF动图,你只需要修改Custom payload的JSON结构即可:
{ "telegram": { "animation": { "url": "path/dog.gif", "caption": "这里可以添加动图的说明文字(可选)" } } }
这样配置后,Telegram会直接加载并显示你的GIF动图,而不是显示链接。注意要确保你的GIF URL是公开可访问的,不然Telegram服务器拉取不到资源哦。
方法二:用Node.js Webhook实现
如果你还是想用Webhook来控制,那可以通过Dialogflow的dialogflow-fulfillment库构造正确的Telegram响应。这里给你一个示例代码:
const { WebhookClient, Payload } = require('dialogflow-fulfillment'); exports.dialogflowWebhook = (req, res) => { const agent = new WebhookClient({ req, res }); // 处理发送动图的意图 function sendGifIntent(agent) { // 构造Telegram的动图响应 payload const telegramGifPayload = { animation: { url: "path/dog.gif", caption: "这是一只超可爱的狗狗动图!" } }; // 发送payload到Telegram agent.add(new Payload(agent.TELEGRAM, telegramGifPayload, { sendAsMessage: true })); } // 绑定意图和处理函数(替换成你的意图名称) const intentMap = new Map(); intentMap.set('SendDogGifIntent', sendGifIntent); agent.handleRequest(intentMap); };
注意事项:
- 确保你的Webhook服务是公开可访问的(开发阶段可以用ngrok做临时转发)
- 在Dialogflow的控制台正确配置Webhook的URL和触发意图
- 区分
animation(用于GIF)和photo(用于静态图片)字段,别用错了
内容的提问来源于stack exchange,提问作者Pablo León
相关产品推荐
相关产品推荐

