从2天开始,我一直在探索Telegram bot API,这非常简洁 . 但有一点我无法弄清楚 .
当您不使用webHook而是使用 /getUpdates
调用时,您可以通过 offset
参数告诉API哪条消息由服务器处理 .
但是你如何使用webHook来做到这一点?我不断收到与更新相同的消息 . 这导致服务器使用相同的消息向用户发送垃圾邮件 .
我想出的解决方案如下:
-
从webhook接收更新
-
保存
update_id
-
回复用户
/sendMessage
-
禁用webHook
/setWebhook?url=
-
设置偏移量
/getUpdates?offset={update_id+1}
-
恢复webHook
/setWebhook?url=https://mywebhook.domain.com
一定有更好的方法吗?任何人?
4 回答
好的,问题解决了 . 似乎只有200(OK)是不够的(我的回复的主体是空的 . 我已经为响应添加了一个主体
{}
,并且知道它工作正常 .你必须在电报中说你成功获得了更新:
在webHook上使用它来从电报服务器获取数据:
您在处理webhook的页面上返回了什么HTTP状态代码? Telegram可能正在尝试重试您的webhook endpoints ,因为它没有收到您的状态200(OK) .