javascript - 我的 Slack 消息有效负载的 JSON 输出有什么问题?
问题描述
我已经设置了我认为应该是有效的 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
,而不是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"
}
]
}
]
}
]
另请参阅此处以获取有关它的官方文档。
块非常强大,但有时可能很复杂。我建议使用消息生成器来尝试您的消息并查看文档中的示例。
推荐阅读
- html - 如何在 Angular 中聚焦/选择 HTML 中的元素?
- javascript - 在对象数组中查找属性值(Javascript)
- vb.net - 根据 If 布尔条件选择哪个 for 循环
- .net - 使用基本身份验证在 .NET 中使用 NAV oData REST API
- javascript - FullCalendar 4:通过 AJAX 的 businessHours 未及时显示GridWeek
- java - 没有时间的日期不会隐藏秒
- sql - ORACLE SQL - 基于不同日期的查询
- javascript - 对象的属性转换成逗号分隔的字符串
- jquery-select2 - 如何在 django-autocomplete-light 中创建标签
- vulkan - 如何正确加载 Vulkan 扩展?