自从2天以来,我一直在探索Telegram bot API,这非常简洁。但有一件事我无法弄清楚。
当您不使用webHook但/getUpdates
调用时,您可以通过offset
参数告诉API哪条消息由服务器处理。
但是你如何使用webHook来做到这一点?我不断收到与更新相同的消息。这导致服务器使用相同的消息向用户发送垃圾邮件。
我想出的解决方案如下:
update_id
/sendMessage
/setWebhook?url=
/getUpdates?offset={update_id+1}
/setWebhook?url=https://mywebhook.domain.com
一定有更好的方法吗?任何人吗?
答案 0 :(得分:13)
好的,问题解决了。似乎只有200(OK)还不够(我的回复主体是 null 。我已经为回复{}
添加了一个正文,并且知道它工作正常。
答案 1 :(得分:5)
您必须在电报中说明您已成功获得更新:
- 200 response code
&
- empty json like this {}
答案 2 :(得分:2)
在webHook上使用此功能从电报服务器获取数据:
// get the raw POST data
$rawData = file_get_contents("php://input");
// this returns null if not valid json
$jsonData = json_decode($rawData);
答案 3 :(得分:1)
您在处理webhook的页面上返回了哪些HTTP状态代码? Telegram可能正在尝试重试您的webhook端点,因为它没有收到您的状态200(OK)。