channels.join
为not allowed。我希望我使用RTM的机器人能够收听机器人集成页面中列出的其他渠道。
我没有看到更改机器人集成页面中频道的方法:
这只是机器人的限制还是我错过了一些基本的东西?
答案 0 :(得分:50)
我遇到了同样的问题,并且不确定为什么我的机器人只是听某些频道。
您的机器人需要被用户邀请到每个频道。在Slack应用程序中的所需通道内运行此命令
/invite @<your_bot_name>
一旦进入频道,他们就应该能够听取事件。
答案 1 :(得分:3)
截至2017年5月,由于它引入了一个错误,这仍然是机器人的限制 - 请参阅paulhammod在https://github.com/slackapi/node-slack-sdk/issues/26的回答。正如@MattGifford指出的那样,添加机器人的正确方法是斜杠命令/invite @<bot.user> <channel_name>
。
然而,@ anaf介绍了一个有趣的解决方法。如果您为自己的帐户生成个人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用于此目的,它似乎可以根据需要运行,尽管不太方便。
答案 2 :(得分:0)
我实际上没有尝试过这个,但我希望您可以先代表实际用户(例如您自己)拨打channels.join
,然后拨打channels.invite
作为该用户添加机器人到那个频道。我希望这是允许的,然后它将允许机器人与该频道进行交互。这样您就可以自动化所有内容。