我用Python编写了一个Slack Bot,当我在聊天频道中使用斜杠命令时,它的工作原理与设计的一样,但是当我试图与另一个用户以直接消息的形式与Bot交互时,响应永远不会显示。但是,当我查看应用程序日志时,我仍然收到Slack的帖子,因此我的应用程序正在接收响应并发送响应。在
我已启用以下权限:
在我的代码中,我执行以下api_调用:
slack_client.api_call(
"chat.postMessage",
channel=[channelId],
attachments=[],
unfurl_links=True,
unfurl_media=True,
as_user=True
)
日志显示我确实收到了正确的ChannelId,不管它是一个频道还是直接消息。在
我的命令不见了_client.api_调用?在
你的方法不适用于直接渠道,坦率地说,也不适用于某些私人渠道。在
原因是Slack的一个基本安全特性:你的bot用户或你的应用令牌的所有者(例如app installer)需要是一个直接或私有通道的成员,以便你的应用程序/机器人能够访问该通道,例如能够向它发送消息。任何权限设置或范围都不能改变这一点。在
不过,对于您的特定情况有一个简单的修复方法:不要通过API发送消息,而是直接回复Slack发出的斜杠命令请求。这将适用于任何渠道,包括直接和私人渠道。在
回复的工作方式类似于通过API发布消息,您可以使用纯文本或JSON。语法请参见官方文档中的Respond to Commands。在
这里有一个带有附件的完整邮件的示例。请注意,您需要将content header设置为JSON:
相关问题 更多 >
编程相关推荐