channels.join
不允许机器人用户使用。我希望我的使用 RTM 的机器人能够收听机器人集成页面中列出的频道以外的频道。
我看不到在机器人集成页面中更改频道的方法:
这只是机器人的限制,还是我在这里遗漏了一些基本的东西?
我遇到了同样的问题,不确定为什么我的机器人只收听某些频道。
您的机器人需要被用户邀请到每个频道。在 Slack 应用程序的所需频道中运行此命令以执行此操作
/invite @<your_bot_name>
一旦进入频道,他们就应该能够收听事件。
截至 2017 年 5 月,这仍然是机器人的限制,因为它引入了一个错误——请参阅 paulhammod 在https://github.com/slackapi/node-slack-sdk/issues/26上的回答。添加机器人的正确方法是/invite @<bot.user> <channel_name>
@MattGifford 指出的斜杠命令。
然而,@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 用于该目的,它似乎就可以根据需要工作,尽管不太方便。
我实际上没有尝试过,但我希望您可以首先channels.join
代表实际用户(例如,您自己)调用,然后channels.invite
以该用户的身份调用以将机器人添加到该频道。我希望这是允许的,然后它将允许机器人与该频道进行交互。这样你就可以自动化一切。