我正在通过网络挂钩向Slack发送消息。使用单个“文本” JSON元素的消息通知会通过适用于OS X和iOS的Slack应用生成正确的通知文本。消息文本在通道中也是正确的。但是,当使用新的“阻止”方法时,通知文本变为“无法显示此内容”。该消息确实正确显示在频道中。只是通知不起作用。
根据https://api.slack.com/messaging/composing/layouts,第一块中的文本用于通知:
在消息有效负载中使用块时,文本字段将成为通知中显示的后备消息。
在不使用块样式的情况下,该方法有效:
curl -s -k -X POST https://hooks.slack.com/services/${webhook} -H 'Content-type: application/json' --data @- << EOF
{
"text": "${message}"
}
EOF
如果您使用https://api.slack.com/tools/block-kit-builder上的块生成器应用程序通过清除所有现有代码然后添加Section块来生成等效的简单块样式,您将具有以下内容:
[
{
"type": "section",
"text": {
"type": "plain_text",
"text": "This is a plain text section block.",
"emoji": true
}
}
]
现在,在页面底部,输入您的频道,然后点击“发送到Slack”。结果是文本正确到达频道,但是弹出的通知包含文本“此内容无法显示”。
起初我以为我自己的块样式代码不正确,但是,由块工具包生成器应用程序生成的此代码也不起作用,这使我相信Slack本身存在问题/错误。
还是我忽略了一些东西?
谢谢
答案 0 :(得分:1)
消息结构中有多个"text"
属性。我相信该文档是在所有块定义之外引用顶层的。
示例:
{
"channel": "C1H9RESGL",
"text": "Text here for notifications",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "Danny Torrence left the following review for your property:"
}
}
]
}