除非手动添加到公共频道,否则 Slack 斜杠命令在公共频道中不起作用

abh*_*t99 2 python-3.x slack-api

我不确定要提供多少细节,但我会尽量把我认为相关的所有内容都放在一起。

我有一个斜杠命令,我通过 AWS Lambda 和 API Gateway 执行一些逻辑。我正在使用 python slackclient 模块,并通过它使用 WebClient 将消息发送回 slack。澄清一下,我使用的是 Slack 提出的新机器人令牌系统,而不是那个classic bot

根据我的理解,使用 webhook 在工作区中的所有频道中发送消息是非常痛苦的,因为每个频道都提供了一个 webhook。因此,我使用 WebClient 与 Slack 交互并在公共频道中发送消息。我面临的问题是,除非我将我的应用程序添加到频道,否则该命令不起作用。Cloudwatch 日志向我显示事件发生得很好,正如我看到的那样。我还通过使用看到以下日志sys.exc_info()
(<class 'slack.errors.SlackApiError'>, SlackApiError("The request to the Slack API failed.\nThe server responded with: {'ok': False, 'error': 'not_in_channel'}"), <traceback object at 0x7ff4a0dc32c0>)

基于此,在我看来,将消息发送回我尚未添加此应用程序的频道似乎不起作用,但我不确定为此需要哪些 OAuth 权限/范围。我为机器人令牌启用了以下范围:

  • channels:read
  • chat:write
  • commands

根据我的理解,我不需要添加任何用户范围,因为我希望我的应用程序/机器人本身做出响应,而不是代表用户做出响应。

简而言之,我想要的行为是将此应用程序添加到我的工作区,并立即让它回复斜线命令,而不管从哪个公共频道调用斜线命令。
当前的行为是,当从任何公共通道调用 slash 命令时,应用程序能够从所有公共通道获取事件数据,但它无法在调用命令的通道中发送消息,除非它在通道中。

任何帮助将不胜感激!

use*_*814 6

对于从已弃用的 :bot 范围迁移应用程序的人员,新范围现已准备就绪。

添加chat:write.public到您Bot Token Scopesnot_in_channel公共频道将不再返回错误。

在此处输入图片说明

好消息:通过两个特殊范围,您可以通过明确要求获得这些能力。分别请求chat:write.public作用域和chat:write.customize作用域,获得在所有公共频道发帖的能力,调整应用的消息作者。

https://api.slack.com/authentication/quickstart#public