pyt*_*hon 4 python python-3.x slack-api slack slack-commands
我使用 Slack 的最新机器人工具包生成器为我的消息附件生成以下按钮。邮件发送没有任何问题,但我没有看到附件。我一直在努力解决这个问题并感谢一些帮助。我的附件是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"
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
我正在使用 slackclient SDK 发送消息。
slack_client.api_call("chat.postMessage", channel="D4KU1DGUB", text='Hello World',
attachments=json.dumps(attachment_json))
Run Code Online (Sandbox Code Playgroud)
目前我没有看到任何按钮。任何帮助将不胜感激。谢谢。
即使从示例中发送此附件也不起作用
{
"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"
}
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
这个附件对我有用
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/",
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
但我不明白为什么第一个例子不起作用。
第一个示例不起作用的原因是您在方法调用中混合了附件和布局块的语法。这些是不同的功能,因此每个功能在调用中都有自己的参数chat.postMessage
。
attachments
。blocks
。因此,第一个示例中代码的更正版本将是:
slack_client.api_call("chat.postMessage", channel="D4KU1DGUB", text='Hello World',
blocks=json.dumps(attachment_json))
Run Code Online (Sandbox Code Playgroud)
您可能还想将变量重命名为blocks_json
以避免任何混淆。