You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Telegram Bot API的sendMessage时无法通过Webhook接收消息求助

Telegram Bot Webhook 无法接收自身sendMessage消息的原因与解决办法

这是Telegram Bot API的默认设计逻辑,不是你的操作有误:

  • 官方规则:机器人通过sendMessage等API主动发送的消息,不会触发Webhook的更新推送。Telegram这么做是为了避免循环触发(比如机器人发消息后又收到自己的消息,导致重复处理逻辑)。只有用户、其他机器人或账号主动发送的消息、命令、回调事件等,才会推送到Webhook。

验证Webhook本身是否正常

可以先做个简单测试:

  1. 调用getWebhookInfo接口(https://api.telegram.org/bot<你的token>/getWebhookInfo),检查返回的URL是否正确、有没有错误日志。
  2. 让用户手动给机器人发一条消息,看你的PHP页面是否能通过file_get_contents("php://input")接收到更新,以此排除Webhook配置问题。

如果需要记录自身发送的消息

不要依赖Webhook,直接在调用sendMessage后保存返回结果即可:

// 调用sendMessage接口
$apiUrl = "https://api.telegram.org/bot123...:xyz.../sendmessage?chat_id=-123...&text=testText";
$response = file_get_contents($apiUrl);
// 解析返回的消息数据
$sentMessage = json_decode($response, true);

// 将消息数据存入数据库或日志,后续需要时直接读取
// 示例:写入日志文件
file_put_contents('sent_messages.log', json_encode($sentMessage) . PHP_EOL, FILE_APPEND);

Telegram的sendMessage返回结果里包含了消息ID、发送时间、内容等完整信息,完全可以替代Webhook接收的更新数据。

内容的提问来源于stack exchange,提问作者Adriano Ellero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 14:24:52