Что не так с моим выводом JSON для полезной нагрузки Slack Message? - PullRequest
1 голос
/ 06 апреля 2019

Я настроил то, что, по моему мнению, должно быть работающим выводом JSON для отправки сообщения в slack, но Slack продолжает отклонять его.

Я пробовал несколько разных форматов компоновки сообщений, используя руководства на сайте api slack,но пока единственный метод, который успешно отправил это полностью плоский 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"
}

1 Ответ

0 голосов
/ 06 апреля 2019

Причина, по которой вы получаете ошибку no_text, заключается в том, что у вас нет допустимого свойства текста сообщения в вашей полезной нагрузке. Вам необходимо либо иметь текстовое свойство в качестве параметра верхней строки (классический стиль - ваш пример внизу), либо текстовый блок в блоке раздела.

Если вы хотите использовать только блоки (как вы просите), блок раздела называется text, а не fields. fields - это другой тип секции bock, который имеет другое значение.

Итак, правильный синтаксис:

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

Также см. здесь для официальной документации по нему.

Блоки очень мощные, но иногда могут быть сложными. Я бы порекомендовал использовать построитель сообщений, чтобы проверить ваши сообщения и проверить примеры в документе.

...