首页 文章

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

提问于
浏览
5

从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 回答

  • 2

    好的,问题解决了 . 似乎只有200(OK)是不够的(我的回复的主体是空的 . 我已经为响应添加了一个主体 {} ,并且知道它工作正常 .

  • 1

    你必须在电报中说你成功获得了更新:

    - 200 response code
     &
     - empty json like this {}
    
  • 5

    在webHook上使用它来从电报服务器获取数据:

    // get the raw POST data
    $rawData = file_get_contents("php://input");
    
    // this returns null if not valid json
    $jsonData = json_decode($rawData);
    
  • 13

    您在处理webhook的页面上返回了什么HTTP状态代码? Telegram可能正在尝试重试您的webhook endpoints ,因为它没有收到您的状态200(OK) .

相关问题