我不知道该提供多少细节,但我会尝试把所有我觉得相关的东西。
我有一个斜杠命令,我通过AWS、Lambda和API Gateway执行一些逻辑操作。我正在使用python 松弛客户端模块,通过它,我用WebClient将消息发送回空闲状态。为了澄清,我使用的是新的bot令牌系统,而不是classic bot
系统。
据我所知,使用web钩子在工作区中的所有通道中发送消息是非常痛苦的,因为每个通道都提供了web钩子。因此,我使用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权限/作用域。我为bot令牌启用了以下作用域:
channels:read
chat:write
commands
根据我的理解,我不需要添加任何用户范围,因为我希望我的应用程序/机器人本身响应,而不是代表用户响应。
简而言之,我想要的行为是将这个应用程序添加到我的工作区,并立即让它回复一个斜杠命令,而不管斜杠命令是从哪个公共通道调用的。
当前的行为是,当从所有公共通道调用斜杠命令时,该应用程序能够从所有公共通道获取事件数据,但是,除非在通道中,否则它无法在调用命令的通道中发送消息。
任何给予的帮助都将不胜感激!
发布于 2020-02-26 21:37:44
我发了短信给Slack,结果发现这个功能在新的粒度机器人权限中是不可用的。根据这是Slack文档
目前,您的应用程序必须是任何渠道的成员,它希望发布消息。若要加入通道,请请求通道:联接作用域并调用conversations.join方法。然而,应用程序很快就可以通过请求一个新的范围在任何公共频道上发布,而不会获得更多的通道访问权限。
看起来,这将不会是一个问题,当功能是添加的斯莱克。
https://stackoverflow.com/questions/60402410
复制相似问题