Невозможно отправить вложения с помощью chat.postMessage

Я работаю над автоматизацией процесса, в котором я работаю у поставщика управляемых услуг. Я пытаюсь отправить сообщение пользователю, когда у него запоздалый билет в службу поддержки. Когда это происходит, я запускаю следующий скрипт PHP (упрощенно для этого примера):

<?php

$attachments = array(
"fallback" => "Attachment 1 Fallback",
"title" => "This is Attachment 1",
"text" => "Attachment 1 text",
"color" => "95baa9");

$ch = curl_init("https://slack.com/api/chat.postMessage");

$data = http_build_query([
"token" => "xoxb-0000000000-00000000000", //omitting my token
"channel" => "@johnsmith",
"text" => "Here's some text!",
"attachments" => json_encode($attachments),
"as_user" => "true"]);

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);
curl_close($ch);

return $result;

Кажется, все работает, кроме вложений. Когда я запускаю этот скрипт, я получаю сообщение без вложения, только text, Я сейчас пользуюсь json_encode потому что вложенность массива внутри $data массив не работал.

Мне было интересно, если кто-то может указать мне в правильном направлении. Я попробовал несколько вариантов, но не могу, кажется, прибить этот.

1

Решение

От документация:

Основанный на JSON массив структурированных вложений, представленных в виде строки в кодировке URL.

Пример ожидаемой стоимости из документации:

[{"pretext": "pre-hello", "text": "text-world"}]

Таким образом, вы должны изменить свой $attachments переменная к этому:

$attachments = array(
array(
"fallback" => "Attachment 1 Fallback",
"title" => "This is Attachment 1",
"text" => "Attachment 1 text",
"color" => "95baa9")
);

Вот каков результат json_encode будет (тот же формат, что и документация):

[{"fallback":"Attachment 1 Fallback","title":"This is Attachment 1","text":"Attachment 1 text","color":"95baa9"}]

И вот как у вас сейчас выглядит:

{"fallback":"Attachment 1 Fallback","title":"This is Attachment 1","text":"Attachment 1 text","color":"95baa9"}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector