【问题标题】:Kik bot is triggering "TooManyRequests" error in BotFrameworkKik bot 在 BotFramework 中触发“TooManyRequests”错误
【发布时间】:2017-06-05 20:09:31
【问题描述】:

我最近使用 Azure 和 BotFramework 在 Skype、Slack、Telegram 和其他一些平台上部署了一个机器人。

它们似乎都工作正常,除了在 Kik 中,机器人会突然停止响应。 BotFramework 中的错误信息为:

{"message":"对用户的请求太多:'redacted_user_name'","error":"TooManyRequests"}

Kik 测试器通过常规使用触发了这个错误,但当我在我的 (Android) 手机上测试它时,它工作得很好。

知道是什么原因造成的吗?

编辑:

联系 Kik 后,我被告知我的 Bot 发送的消息多于接收的消息,并且在 bot 被禁止之前,他们只允许剩余 20 条消息。

他们说解决方案是实现批处理,BotBuilder 说它是内置的。(我的机器人使用 session.send("text") 后跟一个提示。)但是,Kik 不会将我的消息视为批处理,并且每对算作两句。

我尝试调整 autoBatchDelay 以查看 0 是否会比默认值更好,并注意到它没有任何区别。此外,将其更改为 2000 也没有任何区别,并且消息之间没有延迟 2000ms。

var bot = new builder.UniversalBot(connector, {autoBatchDelay: 0});

我的机器人可能没有正确批处理吗?我可以采取哪些措施来解决这个问题?

【问题讨论】:

  • 这对您来说仍然是个问题吗?
  • @JasonSowers 我重写了我的 kik 机器人以避免发送多条消息。 bot 框架是否进行了更新以方便在 kik 上进行批处理?让我知道的唯一方法是尝试看看我是否被禁止,这并不理想。

标签: azure botframework kik


【解决方案1】:

Batching for Kik 目前在我们的积压工作中。同时,是否有任何原因您不能在同一条消息中发送文本和提示(如果需要,可以在两者之间添加回车)?那应该可以解决您的问题(据我了解)。

另外值得注意的是,从节流赤字中恢复的 Kik 规则有些复杂。

• 在任何给定的发送消息请求中,机器人可以在单个 POST 请求中发送多达 25 条消息。在 25 条消息中,机器人最多可以将 5 条消息定向到单个用户。

• 无论您发送 1 条消息还是 5 条消息,该请求集合都被视为发送给用户的“一批”消息。

• 每天允许机器人向用户发送 20 次主动提供的批次。

• 这意味着您每天可能会向用户发送 20 到 100 条未经请求的消息,具体取决于您在一个批次中有多少消息。机器人平台如何确定主动请求的工作方式就像在一天结束时重置的借记/贷记系统。例如Julie 向机器人发送消息,余额变为 +1。 bot 一次回复 3 条消息,余额变为 0。 Julie 向 bot 发送 1 条消息,余额变为 +1。机器人分批回复 5 条消息,余额变为 -4。 Julie 向机器人发送消息,余额变为 +1。机器人分批回复 5 条消息,余额变为 -9。

• 如果此赤字持续到 -20,则将达到每日用户速率限制,机器人将无法再向该用户发送任何消息。有不同的方法可以处理这个速率限制,例如更有效地使用批次或构建鼓励更多用户交互的用户体验。

【讨论】:

  • 谢谢@Lars。好吧,问题是这意味着第 1 轮的结束和第 2 轮的开始必须发生在同一个对话框中,这很令人困惑,而且 Kik 似乎不允许多个回车,所以实际上并没有一种直观的方式将它们分开。这似乎也意味着我根本不能包含图像,因为将图像(或任何 IMessage 格式)传递给选择提示似乎不起作用。 (如果使用此格式,则不会出现选择提示,但如果您键入输入,它仍然会响应。)
  • 明白了。我会看看我能做些什么来把它提升到更高的优先级。
  • 太棒了。谢谢!!
猜你喜欢
  • 2016-10-13
  • 2021-06-19
  • 2017-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-27
  • 2016-09-17
  • 1970-01-01
相关资源
最近更新 更多