我最近在Skype、Slack、Telegram和其他一些平台上部署了一个使用Azure和BotFramework的机器人。
它们似乎都工作得很好,除了在Kik中,机器人会突然停止响应。BotFramework中的错误消息为:
{"message":"用户请求太多:'redected_user_name'","error":"TooManyRequests"}
Kik测试仪通过定期使用触发了这个错误,尽管当我在我的(Android)手机上测试它时,它运行得很好。
知道是什么原因造成的吗?
编辑:
在联系Kik后,我被告知我的机器人发送的信息比接收的信息多,在机器人被禁止之前,他们只允许剩余20条信息。
他们说解决方案是实现批处理,BotBuilder说这是内置的然而,Kik并没有将我的消息视为一批,每个对联都算作2条消息。
我试着调整autoBatchDelay,看看0是否会比默认值更好地工作,并注意到它没有什么不同。此外,将其更改为2000也没有什么区别,并且消息之间没有延迟2000毫秒。
var bot = new builder.UniversalBot(connector, {autoBatchDelay: 0});
有没有可能我的机器人没有正确处理?我可以采取什么措施来解决这个问题?
Kik的批处理目前在我们的积压工作中。与此同时,你有什么理由不能在同一条消息中发送文本和提示(如果需要,可以在两者之间进行回车)?这应该能解决你的问题(据我所知)。
同样值得注意的是,从节流赤字中恢复的Kik规则有些复杂。
•在任何给定的发送消息请求中,机器人程序在一个POST请求中最多可以发送25条消息。在25条消息中,机器人最多可以有5条消息指向单个用户。
•无论您发送1条消息还是5条消息,该请求集合都被视为向用户发送的"一批"消息。
•机器人每天允许向用户发送20个未经请求的批次。
•这意味着,根据一批邮件的数量,您每天可能会向用户发送20-100条未经请求的邮件。机器人平台如何确定未合法化,就像一天结束时重置的借贷系统一样。例如Julie向机器人发送消息,余额变为+1。机器人在一批中回复3条消息,余额变为0。Julie发送了机器人1消息,余额变成+1。机器人程序在不同的批次中回复5条消息,余额为-4。Julie给机器人发了一条消息,余额变成+1。机器人在不同的批次中回复5条消息,余额为-9。
•如果这种赤字持续到-20,则将达到每日用户费率限制,机器人将无法再向该用户发送任何消息。有不同的方法来处理这个速率限制,例如更有效地使用批处理或构建鼓励更多用户交互的用户体验。