【问题标题】:How to stop Telegram bot webhook from polling the server?如何阻止 Telegram bot webhook 轮询服务器?
【发布时间】:2018-08-08 23:47:40
【问题描述】:

我使用官方API 设置了一个 webhook,到目前为止一切正常。我使用 Firebase Cloud Functions 作为后端,但超出了每日配额:

错误:超出配额(函数调用中的 CPU 分配)

但是,由于这是某种状态码 500 并且没有实际响应(我想),因此机器人会尝试进一步调用 webhook。然而,这会造成恶性循环,因为 webhook 不会停止,导致每日配额永远无法使用。

我不得不手动停用它。还有另一种解决方法吗?一些设置?

【问题讨论】:

  • 你可以在这里添加firebase fn代码
  • 当然,是open source
  • 我想指出,您应该立即向 Telegram 发送 200 响应,因为您已收到更新对象。就 Telegram 而言,他们唯一的工作就是交付一个对象并收到您的 200 OK。
  • 所以我应该只是将对象存储在 webhook 中,然后用另一个云函数处理它?我不确定这是一种改进,因为存储对象也会产生 Promise。电报应该有一个不错的超时。但无论如何,这不是我的代码的问题,正如问题中所解释的那样。 Firebase 提供了我无法控制的自动响应!

标签: telegram telegram-bot telegram-webhook


【解决方案1】:

在我的机器人中,有时可能会出现 500 个服务器错误,所以我不会让 TG 知道所有错误?

在所有其他代码之前关闭 HTTP 连接,例如,fastcgi_finish_connection() 对我来说。

【讨论】:

  • 当超出每日配额时,我无法控制 Firebase 如何响应。这就是问题所在。
  • 是的,不幸的是,您在 firebase 上没有任何控制权“当一个函数消耗所有分配的资源时,该资源将变得不可用,直到配额被刷新或增加。这可能意味着您的函数将直到那时才起作用。默认情况下,当所需资源超过配额并且函数无法执行时,函数会返回 HTTP 500 错误代码。引用自文档。
猜你喜欢
  • 2017-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-03
  • 2018-03-12
  • 1970-01-01
  • 2016-08-27
  • 2017-01-11
相关资源
最近更新 更多