我正在研究Slack机器人的注意事项,并且我继续获得429_client_error
。首先,它是否与Slack API文档here中描述的429 too many requests error
相同?如果没有,那是什么?
如果确实是由于Slack速率限制,我不明白。我打印了所有机器人答案的日志,它们至少相隔一秒发送。即使我使用“非常慢”地记录机器人并在请求之间等待,我也有错误。
以下是互动的例子。
用户:我想添加一个注释。
Slack-Bot:当然。你的笔记内容是什么?
网友:我昨天遇见了我的阿比盖尔。我需要送他 我星期六拍的照片。
Slack-Bot:继续。
用户:我完成了。
Slack-Bot:太棒了。您可以添加以下参与者之一 你的笔记。
- 阿比盖尔·艾伦
- Brian Bernard
- Carl Carlson
- 完成
醇>
在最后一部分,我使用带按钮的交互式消息来提议参与者。在幕后,我实际上加载了超过3个人,所以当用户选择添加Brian时,我的机器人用一个新的参与者列表替换整个消息,用户可以从中选择。然后,当用户完成后,他必须选择最后一个按钮“完成”。
换句话说,我有一个按钮列表,每次用户选择列表中的一个项目时都会不断更新,直到用户满意为止。
这似乎是问题的一部分,因为我似乎只在对话的这个阶段得到429_client_error
。我使用延迟来确保Slack机器人对用户的回答不会太快。我不明白是什么问题。
答案 0 :(得分:0)
我在python应用程序上遇到了相同的松弛问题,并在slacker github repo中找到了关于它的讨论。
懒散的主要开发者os
认为,解决方案是信息的本地缓存。他们甚至提供了示例代码here:
from slacker import Users
class CachedUsers(Users):
def __init__(self, *args, **kwargs):
super(Users, self).__init__(*args, **kwargs)
self.user_ids = {}
def get_user_id(self, user_name):
user_id = self.user_ids.get(user_name)
if not user_id:
user_id = super().get_user_id(user_name)
self.user_ids[user_name] = user_id
return user_id
如果您正在寻找以前无法在本地缓存的内容,请查看rate limits,您可以在Slack API中找到每个方法的层。