4

我使用 slack 最新的bot kit builder为我的消息附件生成以下按钮。邮件发送没有任何问题,但我没有看到附件。我一直在努力解决这个问题并感谢一些帮助。我的附件是 slack api 要求的列表。

attachment_json = [
    {
        "type": "section",
        "text": {
            "type": "mrkdwn",
            "text": "Hello, Please select your environment"
        }
    },
    {
        "type": "actions",
        "elements": [
            {
                "type": "button",
                "text": {
                    "type": "plain_text",
                    "text": "production"
                },
                "value": "production"
            },
            {
                "type": "button",
                "text": {
                    "type": "plain_text",
                    "text": "staging"
                },
                "value": "staging"
            },
            {
                "type": "button",
                "text": {
                    "type": "plain_text",
                    "text": "demo"
                },
                "value": "demo"
            }
        ]
    }
]

我正在使用 slackclient SDK 发送消息。

  slack_client.api_call("chat.postMessage", channel="D4KU1DGUB", text='Hello World',
                          attachments=json.dumps(attachment_json))

目前我没有看到任何按钮。任何帮助将不胜感激。谢谢你。

即使从示例中发送此附件也不起作用

{
    "text": "Would you like to play a game?",
    "attachments": [
        {
            "text": "Choose a game to play",
            "fallback": "You are unable to choose a game",
            "callback_id": "wopr_game",
            "color": "#3AA3E3",
            "attachment_type": "default",
            "actions": [
                {
                    "name": "game",
                    "text": "Chess",
                    "type": "button",
                    "value": "chess"
                },
                {
                    "name": "game",
                    "text": "Falken's Maze",
                    "type": "button",
                    "value": "maze"
                },
                {
                    "name": "game",
                    "text": "Thermonuclear War",
                    "style": "danger",
                    "type": "button",
                    "value": "war",
                    "confirm": {
                        "title": "Are you sure?",
                        "text": "Wouldn't you prefer a good game of chess?",
                        "ok_text": "Yes",
                        "dismiss_text": "No"
                    }
                }
            ]
        }
    ]
}

这个附件对我有用

   attachment_json = [
    {
        "fallback": "Upgrade your Slack client to use messages like these.",
        "color": "#CC0000",
        "actions": [
            {
                "type": "button",
                "text": ":red_circle:   Complete Task: ",
                "url": "https://roach.ngrok.io/workflow/",
            }
        ]
    }
    ]

但我无法弄清楚为什么第一个示例不起作用。

4

1 回答 1

5

第一个示例不起作用的原因是您在方法调用中混合了附件和布局块的语法。这些是不同的特性,因此每个特性在调用中都有自己的参数chat.postMessage

  1. attachments(次要)附件随参数传递。
  2. 布局块与blocks参数一起传递。

因此,第一个示例中代码的更正版本将是:

slack_client.api_call("chat.postMessage", channel="D4KU1DGUB", text='Hello World',
                          blocks=json.dumps(attachment_json))

您可能还想重命名变量blocks_json以避免任何混淆。

于 2019-08-01T10:28:09.277 回答