[英]What is wrong with my JSON output for a Slack Message payload?
我已经设置了我认为应该可以正常工作的JSON输出,可以在slack中发送消息,但是Slack一直拒绝它。
我已经使用slack的api网站上的指南尝试了多种不同的消息布局格式,但是到目前为止,成功发送的唯一方法是不带块格式的完全平面的JSON。
function submitValuesToSlack(e) {
var name = e.values[1];
var caseNumber = e.values[2];
var problemDescription = e.values[3];
var question = e.values[4];
var completedChecklist = e.values[5];
var payload = [{
"channel": postChannel,
"username": postUser,
"icon_emoji": postIcon,
"link_names": 1,
"blocks": [
{
"type": "section",
"fields": [
{
"type": "mrkdwn",
"text": "*Name:*\n " + name
}
]
}]
}];
console.log(JSON.stringify(payload, null, "\t"));
var options = {
'method': 'post',
'payload': JSON.stringify(payload)
};
console.log(options)
var response = UrlFetchApp.fetch(slackIncomingWebhookUrl, options);
}
运行此命令时,将得到以下输出:
[
{
"channel":"#tech-support",
"username":"Form Response",
"icon_emoji":":mailbox_with_mail:",
"link_names":1,
"blocks":[
{
"type":"section",
"fields":[
{
"type":"mrkdwn",
"text":"*Name:*\n test"
}
]
}
]
}
]
我认为这是正确的,但是slack api只是拒绝它,并显示HTTP 400错误“无文本”
我是否误解了有关块格式化的内容?
编辑:
为了明确起见,如果我将其用于JSON而不是更复杂的格式,则格式会起作用:
{
"channel":"#tech-support",
"username":"Form Response",
"icon_emoji":":mailbox_with_mail:",
"link_names":1,
"text":"*Name:*\n test"
}
出现错误no_text
的原因是,您的有效负载中没有有效的消息文本属性。 您要么需要将text属性作为顶行参数(经典样式-您的示例位于底部),要么需要将其放在section块中。
如果您只想使用块(按您的要求),则该节块称为text
,不是fields
。 fields
是节块的另一种类型,具有不同的含义。
因此正确的语法是:
[
{
"channel":"#tech-support",
"username":"Form Response",
"icon_emoji":":mailbox_with_mail:",
"link_names":1,
"blocks":[
{
"type":"section",
"text":[
{
"type":"mrkdwn",
"text":"*Name:*\n test"
}
]
}
]
}
]
另请参见此处以获取其官方文档。
块非常强大,但有时可能会很复杂。 我建议使用消息生成器来尝试您的消息,并查看文档中的示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.