【发布时间】:2016-12-28 06:59:02
【问题描述】:
我正在尝试制作一个机器人,它可以收听所有公共和私人频道以及团队的即时消息,并在看到某些触发词时回复。这将是一个“Slack 应用程序”,可使用“添加到 Slack”按钮安装到您的团队,并包括一个“机器人用户”。
我已请求“bot”OAuth 范围,并订阅了“message.channels、message.groups 和 message.im”团队事件(https://api.slack.com/apps/myAppId/event-subscriptions),但似乎没有通过事件接收事件 POST发送新消息时的 API。
添加 "channels:history,groups:history,im:history" 范围使机器人接收这些事件 POST,但我相信仅适用于添加机器人的用户,因此它不会观看添加用户的组不是其他 2 个用户的成员或 IM 之间的消息。这意味着行为会有所不同,具体取决于安装我的机器人的用户。
有没有办法为整个团队安装应用程序/机器人?文档似乎表明“机器人”范围应该能够接收事件,但我没有看到这一点(我需要上面的频道:历史范围等)。
bot - 当您的 Slack 应用程序包含 bot 用户功能时请求此范围。与incoming-webhook 和命令不同,bot 作用域授予您的bot 用户访问Web API 方法子集、RTM API 和Events API 中某些事件类型的权限。
关于机器人的页面还声称机器人可以通过 RTM API 接收所有消息:
此 websocket 将向您发送在邀请机器人用户的公共和私人渠道中发生的所有消息和活动,以及通过直接消息发送给它的消息。机器人用户通过向 rtm.start API 方法发送经过身份验证的调用,使用 RTM API 打开此 websocket。要了解有关连接到 RTM API 的更多信息,请阅读此处的文档。 (来自https://api.slack.com/bot-users)
在不需要使用 RTM API 或添加上述额外范围的情况下,事件 API 中是否可以实现相同的行为?
【问题讨论】:
-
自从将机器人用户添加到我的应用程序后,“事件订阅”页面上出现了“机器人事件”部分,我可以在其中订阅“message.channels”并且不需要频道:历史许可(与文档相反)。但是,机器人用户需要被邀请到我想要监控的所有频道,这使得安装过程更加复杂。