0

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

它们似乎都运行良好,除了在 Kik 中,机器人会突然停止响应。BotFramework 中的错误消息如下:

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

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

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

编辑:

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

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

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

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

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

4

1 回答 1

1

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

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

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

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

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

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

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

于 2017-01-25T16:53:24.273 回答