"Failed RTM connect" 尝试使用 RTM 连接到 Slack 时出错 API
"Failed RTM connect" error when trying to connect to Slack with RTM API
我正在使用 Slack 的 "Migrating to 2.x" github 文档中的以下 Python 代码
from slackclient import SlackClient
slack_token = os.environ["SLACK_API_TOKEN"]
client = SlackClient(slack_token)
def say_hello(data):
if 'Hello' in data['text']:
channel_id = data['channel']
thread_ts = data['ts']
user = data['user']
client.api_call('chat.postMessage',
channel=channel_id,
text="Hi <@{}>!".format(user),
thread_ts=thread_ts
)
if client.rtm_connect():
while client.server.connected is True:
for data in client.rtm_read():
if "type" in data and data["type"] == "message":
say_hello(data)
else:
print "Connection Failed"
对于 SLACK_API_TOKEN
,我正在为我的应用程序使用 Bot 用户 OAuth 访问令牌,可在此处找到:
我收到的错误如下:
Failed RTM connect
Traceback (most recent call last):
File "/Users/.../slackbot/slackbot_env/lib/python3.8/site-packages/slackclient/client.py", line 140, in rtm_connect
self.server.rtm_connect(use_rtm_start=with_team_state, **kwargs)
File "/Users/.../slackbot/slackbot_env/lib/python3.8/site-packages/slackclient/server.py", line 168, in rtm_connect
raise SlackLoginError(reply=reply)
slackclient.server.SlackLoginError
Connection Failed
为什么会出现此错误?!?!?!
其他上下文:
- 我在 Mac,不像其他使用 Windows 在线遇到问题的人
机器。
- 我是 运行 本地代码,在虚拟环境中,通过
python script.py
在我的终端。
- 我最后一次成功 运行 这是在 12 月,并且看到 Slack 放弃了对 RTM 的支持 API (?) 2019 年 12 月 31 日?
- 应用程序已重新安装到我的工作区,密钥没有改变。
- 我认为这可能是我在 api.slack.com/apps 方面需要 configure/change/set/refresh 的东西,因为它在没有发生任何代码更改的情况下崩溃了。
为什么我要专注于调试 1.x 的示例? 我的代码之前使用 rtm_connect / 1.x 使用相同的代码命令作为示例代码,并且在没有任何代码更改的情况下它已停止工作。我的代码和示例代码产生相同的错误,所以我使用示例代码来简化调试。我想在开始迁移到 2.x 之前解决这个问题,这样我就可以从工作代码开始,然后再着手进行一系列可能会引入错误的更改。
我不确定这是否是原因,但我 运行 之前遇到过同样的问题。
我在 Slack Github 上找到的答案是新的 xoxob-* 不支持 RTM。
请参考这个网站:
- https://github.com/slackapi/python-slackclient/issues/326.
所以我使用我的 OAuth 访问令牌而不是机器人用户 OAuth 访问令牌。
我认为此问题与机器人用户 OAuth 访问令牌无关,我认为您使用的是正确的 (xoxb-
)。但是,此问题可能与 Slack App 有关。请注意,新的 Slack App 粒度范围不支持 RTM(参见 python client issue #584 and node client issue #921). If you want to use RTM, you should create rather a classic slack app 和 OAuth 范围 bot
。
我正在使用 Slack 的 "Migrating to 2.x" github 文档中的以下 Python 代码
from slackclient import SlackClient
slack_token = os.environ["SLACK_API_TOKEN"]
client = SlackClient(slack_token)
def say_hello(data):
if 'Hello' in data['text']:
channel_id = data['channel']
thread_ts = data['ts']
user = data['user']
client.api_call('chat.postMessage',
channel=channel_id,
text="Hi <@{}>!".format(user),
thread_ts=thread_ts
)
if client.rtm_connect():
while client.server.connected is True:
for data in client.rtm_read():
if "type" in data and data["type"] == "message":
say_hello(data)
else:
print "Connection Failed"
对于 SLACK_API_TOKEN
,我正在为我的应用程序使用 Bot 用户 OAuth 访问令牌,可在此处找到:
我收到的错误如下:
Failed RTM connect
Traceback (most recent call last):
File "/Users/.../slackbot/slackbot_env/lib/python3.8/site-packages/slackclient/client.py", line 140, in rtm_connect
self.server.rtm_connect(use_rtm_start=with_team_state, **kwargs)
File "/Users/.../slackbot/slackbot_env/lib/python3.8/site-packages/slackclient/server.py", line 168, in rtm_connect
raise SlackLoginError(reply=reply)
slackclient.server.SlackLoginError
Connection Failed
为什么会出现此错误?!?!?!
其他上下文:
- 我在 Mac,不像其他使用 Windows 在线遇到问题的人 机器。
- 我是 运行 本地代码,在虚拟环境中,通过
python script.py
在我的终端。 - 我最后一次成功 运行 这是在 12 月,并且看到 Slack 放弃了对 RTM 的支持 API (?) 2019 年 12 月 31 日?
- 应用程序已重新安装到我的工作区,密钥没有改变。
- 我认为这可能是我在 api.slack.com/apps 方面需要 configure/change/set/refresh 的东西,因为它在没有发生任何代码更改的情况下崩溃了。
为什么我要专注于调试 1.x 的示例? 我的代码之前使用 rtm_connect / 1.x 使用相同的代码命令作为示例代码,并且在没有任何代码更改的情况下它已停止工作。我的代码和示例代码产生相同的错误,所以我使用示例代码来简化调试。我想在开始迁移到 2.x 之前解决这个问题,这样我就可以从工作代码开始,然后再着手进行一系列可能会引入错误的更改。
我不确定这是否是原因,但我 运行 之前遇到过同样的问题。 我在 Slack Github 上找到的答案是新的 xoxob-* 不支持 RTM。
请参考这个网站: - https://github.com/slackapi/python-slackclient/issues/326.
所以我使用我的 OAuth 访问令牌而不是机器人用户 OAuth 访问令牌。
我认为此问题与机器人用户 OAuth 访问令牌无关,我认为您使用的是正确的 (xoxb-
)。但是,此问题可能与 Slack App 有关。请注意,新的 Slack App 粒度范围不支持 RTM(参见 python client issue #584 and node client issue #921). If you want to use RTM, you should create rather a classic slack app 和 OAuth 范围 bot
。