gpt4 book ai didi

Python Slack Bot 不会在直接消息中发布

转载 作者:太空宇宙 更新时间:2023-11-03 21:19:39 25 4
gpt4 key购买 nike

我用 Python 编写了一个 Slack 机器人,当我在聊天 channel 中使用斜杠命令时,它按照设计工作,但是当我尝试通过直接消息与其他用户与机器人交互时,永远不会显示响应。但是,当我查看应用程序日志时,我仍然收到来自 Slack 的 POST,因此我的应用程序正在接收响应并发回响应。

我启用了以下权限:

  • 以 [MyBotName] 身份发送消息
  • 以用户身份发送消息
  • 发布到 Slack 中的特定 channel
  • 使用用户名 @mybotname 添加机器人用户
  • 添加斜杠命令并向消息添加操作(以及查看相关内容)
  • 查看消息中的一些网址
  • 向消息添加链接预览

在我的代码中,我进行以下 api_call:

slack_client.api_call(
"chat.postMessage",
channel=[channelId],
attachments=[],
unfurl_links=True,
unfurl_media=True,
as_user=True
)

日志显示我确实收到了正确的 ChannelId,无论它是 channel 还是直接消息。

我的问题是:我的 slack_client.api_call 中是否缺少权限或命令?

最佳答案

您的方法不适用于直接 channel ,坦率地说也不适用于某些私有(private) channel 。

原因是 Slack 的基本安全功能之一:您的机器人用户或应用程序 token 的所有者(例如应用程序安装程序)需要成为直接或私有(private) channel 的成员,以便您的应用程序/机器人能够访问到该 channel ,例如能够向其发送消息。任何权限设置或范围都无法改变这一点。

对于您的具体情况,有一个简单的解决方法:无需通过 API 发送消息,只需直接回复来自 Slack 的斜杠命令请求即可。这适用于任何 channel ,包括直接 channel 和私有(private) channel 。

回复的工作方式与通过 API 发布消息类似,您可以使用纯文本或 JSON。请参阅Respond to Commands在语法的官方文档中。

这里是带有附件的完整消息的示例。请注意,您需要将内容 header 设置为 JSON:

{
"text": "It's 80 degrees right now.",
"attachments": [
{
"text":"Partly cloudy today and tomorrow"
}
]
}

关于Python Slack Bot 不会在直接消息中发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54406743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com