尝试使用RTM API连接到Slack时出现“失败的RTM连接”错误

2024-05-15 08:43:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用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访问令牌,可在以下位置找到: enter image description here

我得到的错误如下:

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放弃了对RTMAPI的支持(?)2019年12月31日
  • 该应用程序已重新安装到我的工作区,并且密钥没有更改
  • 我想这可能是我需要在api.slack.com/apps端配置/更改/设置/刷新的东西,因为它在没有任何代码更改的情况下崩溃了

为什么我要集中精力调试1.x的示例?我的代码以前使用rtm_connect/1.x使用与示例代码相同的命令工作,并且没有任何代码更改,它已经停止工作。我的代码和示例代码产生相同的错误,因此我使用示例代码来简化调试。在开始迁移到2.x之前,我想先解决这个问题,这样我就可以在开始一系列可能会引入错误的更改之前,先从工作代码开始


Tags: 代码inclient示例dataifserverconnect
2条回答

我不确定这是否是原因,但我以前也遇到过同样的问题。 我在Slack Github上找到的答案是新的xoxob-*不支持RTM

请参考本网站: -https://github.com/slackapi/python-slackclient/issues/326

因此,我使用我的OAuth访问令牌,而不是Bot用户OAuth访问令牌

我认为这个问题与Bot用户OAuth访问令牌无关,我认为您使用的是正确的(xoxb-)。但是,此问题可能与Slack应用程序有关。请注意,新的Slack应用粒度作用域不支持RTM(请参见python client issue #584node client issue #921)。如果您想使用RTM,应该创建一个具有OAuth作用域botclassic slack app

相关问题 更多 >