Slack API:仅接收特定通道中的事件?

Ada*_*yer 5 slack-api

我构建了一个接收事件的应用程序。

默认情况下,作用域channels:history允许其接收添加应用程序的用户的所有公共渠道中的所有消息的事件。

理想情况下,用户可以在应用程序设置中将其限制为仅某些频道。(应用程序收到的任何事件都将变得可读。)

现在我看到两个选择:

  1. 消息事件包含通道 ID(而不是名称)。因此,代码可以对通道进行过滤,假设有一种方法可以设置它并且用户信任它。

  2. 创建一个机器人用户(即使该应用程序是只读的),用户可以将其添加到特定频道。

有没有更好的办法?

Eri*_*ken 7

如果您不想使用机器人用户(您的选项 2),唯一的方法是过滤掉应用程序中不需要的渠道的消息。对于创建的每条新消息(包括从您的应用程序发送的消息),您都会收到一个消息事件。消息事件已经包含channel ID,因此您可以根据它轻松进行过滤。

示例:(来源

{
    "type": "message",
    "channel": "C2147483705",
    "user": "U2147483697",
    "text": "Hello world",
    "ts": "1355517523.000005"
}
Run Code Online (Sandbox Code Playgroud)

事件设置中没有任何参数可以让您预先选择通道。但由于这似乎是一个反复出现的问题,我建议向 Slack 团队发送有关此问题的功能请求。

  • 答案仍然有效。您无法订阅特定频道,因此您需要通过应用过滤掉不需要的频道。 (3认同)