3

最近,Slack 增加了机器人做比以前更多的事情的能力。这很棒!。多年来,我已经能够将许多经典风格的机器人连接到 RTM API,而没有任何问题。昨天我尝试创建一个新风格的机器人并将其连接到 RTM API 以尝试一些新功能,但未能成功。

在新样式机器人创建过程中,为您的机器人提供各种权限后,您会收到类似于以下内容的消息;

为了让您的应用使用您选择的范围颁发令牌,您需要在 OAuth 代码中进行一些更改以反映这些范围并处理新的响应格式。您的应用应请求这些范围

机器人令牌范围

聊天:写

聊天:阅读

将应用的身份验证 URL 更改为如下所示:

https://slack.com/oauth/v2/authorize?client_id=123456789012.123456789012&scope=chat :写聊天:读

我遇到的问题是,使用 RTM (Python) API,通常不会直接访问任何 OAuth 方法。从表面上看,似乎没有一种方法可以向 RTM API 提供 URL 来验证您的机器人。根据官方文档,连接机器人的方式本质上是这样的;

slack_token = 'xoxb-123456-......'
rtm_client = RTMClient(token=slack_token)
rtm_client.start()

如果我提供经典风格的机器人身份验证令牌,一切都会按预期连接。使用此方法对新样式机器人进行身份验证会得到以下结果;

slack.errors.SlackApiError: The request to the Slack API failed.
The server responded with: {'ok': False, 'error': 'not_allowed_token_type'}

这似乎只是新型机器人的问题。同样,通过 RTM API,您通常不会直接访问任何 OAuth 方法,因此我不确定提供的 URL 可能会插入到哪里。

RTMClient 对象的唯一参数看起来可能有效的是“base_url”参数。我尝试为该参数提供提供的 URL,但这并没有让我通过身份验证。

The server responded with: {}

如何为 RTM API 提供新的范围?

4

1 回答 1

3

万一其他人来这里问同样的问题。经过更多阅读,我在此页面上发现了一行:https ://api.slack.com/authentication/basics

新的 Slack 应用程序可能无法访问 RTM。

无赖,好吧。

于 2019-12-23T17:40:50.887 回答