如何以实时消息机器人用户身份加入 Slack 频道?

How to join a Slack channel as a Real Time Messaging bot user?

channels.join 对于机器人用户来说是 not allowed。我希望使用 RTM 的机器人收听机器人集成页面中列出的频道以外的频道。

我没有看到在机器人集成页面中更改频道的方法:

这只是机器人的限制,还是我遗漏了一些基本的东西?

我遇到了同样的问题,不确定为什么我的机器人只收听某些频道。

您的机器人需要被用户邀请到每个频道。 运行 在 Slack 应用程序中的所需频道中执行此命令

/invite @<your_bot_name>

进入频道后,他们应该能够收听事件。

我还没有实际尝试过,但我希望您可以先代表实际用户(例如您自己)调用 channels.join,然后以该用户的身份调用 channels.invite 以添加那个频道的机器人。我希望这是允许的,然后它会允许机器人与该频道进行交互。这样你就可以自动化一切。

截至 2017 年 5 月,这仍然是机器人的一个限制,因为它引入了一个错误——请参阅 paulhammod 在 https://github.com/slackapi/node-slack-sdk/issues/26 的回答。正如@MattGifford 指出的那样,添加机器人的正确方法是斜杠命令 /invite @<bot.user> <channel_name>

但是,@nafg 介绍了一个有趣的解决方法。如果您为您的帐户生成个人 API_TOKEN,那么您可以使用它来邀请机器人。 例如,在 python 中可以 运行:

import slackclient sc = slackclient.SlackClient(<PERSONAL_API_TOKEN>) sc.api_call('channels.invite', channel=<channel_id>, user=<user_id>)

这将邀请机器人加入频道。如果您想自动邀请您的机器人加入新频道,您可以在 https://api.slack.com/rtm

中的 API 中查看事件侦听器

只要您允许 API_TOKEN 用于该目的,它似乎会根据需要工作,尽管不太方便。