簡體   English   中英

Python Slack Bot不會在直接消息中發布

[英]Python Slack Bot won't post in direct messages

我已經用Python編寫了一個Slack Bot,當我在聊天頻道中使用斜線命令時,它按設計工作,但是當我嘗試在與其他用戶的直接消息中與機器人進行交互時,響應永遠不會顯示。 但是,當我查看應用程序日志時,我仍然收到來自Slack的POST,因此我的應用程序正在接收響應並發送回響應。

我啟用了以下權限:

  • 以[MyBotName]的身份發送消息
  • 以用戶身份發送消息
  • 發布到Slack中的特定頻道
  • 添加具有用戶名@mybotname的機器人用戶
  • 添加斜杠命令並向消息添加操作(並查看相關內容)
  • 查看郵件中的一些URL
  • 將鏈接預覽添加到郵件

在我的代碼中,執行以下api_call:

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

記錄顯示,無論是頻道還是直接消息,我都收到正確的ChannelId。

我的問題是:我的slack_client.api_call是否缺少權限或命令?

您的方法不適用於直接渠道,坦率地說也不適用於某些私人渠道。

原因是Slack的基本安全功能之一:您的bot用戶或您的應用程序令牌的所有者(例如,應用程序安裝程序)必須是直接或私有渠道的成員,以便您的應用程序/機器人可以訪問該通道,例如能夠向其發送消息。 沒有權限設置或范圍可以更改。

不過,針對您的特定情況有一個簡單的解決方法:與其通過API發送消息,不如直接從Slack回復斜線命令請求。 這將適用於任何渠道,包括直接和私人渠道。

回復的工作方式類似於通過API發布消息,您可以使用純文本或JSON。 有關語法,請參見官方文檔中的“ 響應命令 ”。

這是帶有附件的完整郵件的示例。 請注意,您需要將內容標頭設置為JSON:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM