我的JSON输出对Slack消息有效负载有什么问题?

问题描述 投票:1回答:1

我已经设置了我认为应该是一个有效的JSON输出来发送消息,但是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"
               }
            ]
         }
      ]
   }
]

我相信这是正确的,但是松弛api只是拒绝它与HTTP 400错误“没有文字”

我是否误解了有关块格式的内容?

编辑:

要澄清,如果我将此格式用于我的JSON而不是更复杂的格式,格式化将起作用:

{  
      "channel":"#tech-support",
      "username":"Form Response",
      "icon_emoji":":mailbox_with_mail:",
      "link_names":1,
      "text":"*Name:*\n test"
}
javascript json slack slack-api
1个回答
0
投票

您收到错误no_text的原因是您的有效负载中没有有效的消息文本属性。您需要将文本属性作为顶行参数(经典样式 - 底部的示例)或部分块中的文本块。

如果你只想使用块(正如你所要求的那样),则块块称为text,而不是fieldsfields是另一种具有不同含义的部分块。

所以正确的语法是:

[  
   {  
      "channel":"#tech-support",
      "username":"Form Response",
      "icon_emoji":":mailbox_with_mail:",
      "link_names":1,
      "blocks":[  
         {  
            "type":"section",
            "text":[  
               {  
                  "type":"mrkdwn",
                  "text":"*Name:*\n test"
               }
            ]
         }
      ]
   }
]

另请参阅here上的官方文档。

块非常强大,但有时可能很复杂。我建议使用消息构建器来试用您的消息并查看文档中的示例。

© www.soinside.com 2019 - 2024. All rights reserved.