我最近使用Azure和BotFramework将一个机器人部署到Skype,Slack,Telegram和其他一些平台。
他们似乎都很好,除了在Kik,机器人会突然停止响应。 BotFramework中的错误消息为:
{" message":"对用户的请求太多:' redacted_user_name'","错误":" TooManyRequests& #34;}
Kik测试仪通过常规使用触发此错误,但是当我在我的(Android)手机上测试时,它运行正常。
知道可能导致这种情况的原因吗?
编辑:
在与Kik联系后,我被告知我的Bot发送的消息比收到的消息多,并且在机器人被禁止之前他们只允许剩余20个消息。
他们说解决方案是实现BotBuilder所说的内置批处理。(我的机器人使用session.send(" text")然后提示。)但是,Kik没有看到我的消息作为批处理,每对联计数为2条消息。
我尝试调整autoBatchDelay以查看0是否比默认值更好,并注意到它没有任何区别。此外,将其更改为2000也没有任何区别,并且在消息之间没有延迟2000ms。
var bot = new builder.UniversalBot(connector, {autoBatchDelay: 0});

我的机器人可能没有正确批处理吗?我可以采取哪些措施来解决这个问题?
答案 0 :(得分:1)
Kik的批处理目前正在我们的积压工作中。与此同时,您是否有任何理由不能在同一条消息中发送文本和提示(如果需要,可以在两者之间回车)?这应该解决你的问题(据我所知)。
另外值得注意的是,Kik从限制赤字中恢复的规则有些复杂。
•在任何给定的发送消息请求中,机器人可以在单个POST请求中发送最多25条消息。在25条消息中,机器人最多可以有5条消息指向单个用户。
•无论您发送1封邮件还是5封邮件,该请求集合都被视为向用户发送的“批量”邮件。
•机器人每天可以向用户提供20个未经请求的批次。
•这意味着您可以每天向用户发送20-100条未经请求的消息,具体取决于批量中有多少条消息。机器人平台如何确定未经授权的工作方式类似于在一天结束时重置的借记/贷记系统。例如朱莉向机器人发送消息,余额变为+1。机器人在一批中响应3条消息,余额变为0. Julie发送机器人1消息,余额变为+1。机器人以不同的批次响应5条消息,余额变为-4。朱莉向机器人发送消息,余额变为+1。机器人以不同的批次响应5条消息,余额变为-9。
•如果此差异持续到-20,则已达到每日用户速率限制,并且机器人将无法向该用户发送任何更多消息。使用此速率限制有不同的方法,例如:更有效地使用批次或构建鼓励更多用户交互性的用户体验。