Telegram 向 webhook 发送重复的 POST JSON 请求
Posted
技术标签:
【中文标题】Telegram 向 webhook 发送重复的 POST JSON 请求【英文标题】:Telegram sends duplicate POST JSON requests to webhook 【发布时间】:2016-10-30 16:41:49 【问题描述】:我正在尝试为电报开发城市机器人,但遇到了一个问题。 向机器人发送消息后,Telegram 向 webhook url 发送 2 个重复请求。 Webhook 脚本工作两次并向用户发送两次响应。 脚本 - 来自官方电报文档的 hellobot.php。 使用自签名 SSL 的服务器 vps 托管,并将证书密钥上传到电报。
来自服务器日志。
149.154.167.209 - - [28/Jun/2016:13:48:00 +0300] "POST /apps/gate.php HTTP/1.0" 200 86 "-" "- 149.154.167.209 - - [28/Jun/2016:13:48:00 +0300] "POST /apps/gate.php HTTP/1.1" 200 86 "-" "- 149.154.167.209 - - [28/Jun/2016:13:48:00 +0300] "POST /apps/gate.php HTTP/1.0" 200 86 "-" "- 149.154.167.209 - - [28/Jun/2016:13:48:00 +0300] "POST /apps/gate.php HTTP/1.1" 200 86 "-" "-
如何解决这个问题?
【问题讨论】:
你找到这个问题的答案了吗? 【参考方案1】:您的机器人应该存储最后一个update_id
,然后通过 update_id 进行比较
【讨论】:
【参考方案2】:当 Telegram 收到来自您的机器人用户的消息时,将消息以 JSON 格式发送到您的 webhook URL。
如果
-
在您的响应页面中出现错误,
或需要很长时间才能完成响应,
然后 Telegram 再次将消息发送到您的服务器。
【讨论】:
如果您仔细检查附加的服务器日志,我的服务器会在正常时间响应 200 个代码。【参考方案3】:你能发布一些代码吗?
如果您要求getupdates
并在每个result
上向用户发送响应;它可能会发送重复,因为您没有正确设置偏移量
偏移量(说明): 要返回的第一个更新的标识符。必须比先前接收到的更新的标识符中的最高值大一。默认情况下,会返回从最早的未确认更新开始的更新。一旦使用高于其 update_id 的偏移量调用 getUpdates,则认为已确认更新。 ...
#getupdates_offset
【讨论】:
我询问了 webhook 方法,谢谢回复,但对我来说没用。以上是关于Telegram 向 webhook 发送重复的 POST JSON 请求的主要内容,如果未能解决你的问题,请参考以下文章
Telegram Webhook 和 Ngrok 无法正常工作
如何收听Telegram Bot错误? (Google App Script + Webhooks)
如何让 ngrok 工作的 Telegram webhook?