如何在Telegram bot API webHook上使用偏移量

时间:2015-06-27 14:37:44

标签: api telegram-bot

自从2天以来,我一直在探索Telegram bot API,这非常简洁。但有一件事我无法弄清楚。

当您不使用webHook但/getUpdates调用时,您可以通过offset参数告诉API哪条消息由服务器处理。

但是你如何使用webHook来做到这一点?我不断收到与更新相同的消息。这导致服务器使用相同的消息向用户发送垃圾邮件。

我想出的解决方案如下:

  1. 从webhook收到更新
  2. 保存update_id
  3. 回复用户/sendMessage
  4. 停用webHook /setWebhook?url=
  5. 设置偏移量/getUpdates?offset={update_id+1}
  6. 恢复webHook /setWebhook?url=https://mywebhook.domain.com
  7. 一定有更好的方法吗?任何人吗?

4 个答案:

答案 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)。