Slack печатает сырой JSON вместо стилизованного сообщения

Я работаю над командой Slack slash в PHP, которая берет имя пользователя Twitter и возвращает последний твит этого человека.

Я не могу понять, как отобразить изображение профиля пользователя, чтобы оно выглядело так же хорошо, как интеграция Slack в Twitter.

Проблема, которая мне кажется, заключается в том, что я должен включить «unfurl_media: true» в JSON, который отправляется обратно в Slack. Это означает, что я не могу просто использовать echo распечатать данные Twitter, которые я хочу, которые находятся в ассоциативном массиве.

Я попытался получить нужные данные Twitter из ассоциативного массива, снова закодировать их в JSON и затем распечатать. Но все, что делает, это печатает JSON в виде простого текста. Я проверил валидатор JSON, и он говорит, что то, что печатается в Slack, является действительным JSON, поэтому я не понимаю, почему Slack не преобразует его в стилизованное сообщение.

Какие-либо предложения?

Вот код Это откровенный код, извлеченный из множества разных мест, которые я пытаюсь подчинить своей воле.

<?php

require_once('TwitterAPIExchange.php');

$command = $_POST['command'];
$text = $_POST['text'];
$token = $_POST['token'];

if($token != '[insert your Slack slash command token here]'){
$msg = ":squirrel: The token for the slash command doesn't match. We're done    here until IT fixes it. Don't worry, Squirrelock is on the case.";
die($msg);
echo $msg;
}$settings = array(
'oauth_access_token' => "[insert access token here]",
'oauth_access_token_secret' => "[insert access token secret here]",
'consumer_key' => "[insert consumer key here]",
'consumer_secret' => "[insert consumer secret here]");

$url = "https://api.twitter.com/1.1/statuses/user_timeline.json";

$requestMethod = "GET";

$getfield = '?screen_name='.$text.'&count=1';

$twitter = new TwitterAPIExchange($settings);

$string = json_decode($twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest(), $assoc = TRUE);

foreach($string as $items)
{
$reply = "".$items['user']['profile_image_url']." *".$items['user'] ['name']."* ".$items['user']['screen_name']. "\n ".$items['text']."\n  ".$items['created_at']."";
}

$data = json_encode(array(
"response_type" => "in_channel",
"text" => $reply,
"unfurl_media" => true,
"unfurl_links" => true

));

echo $data;

?>

2

Решение

Перемещение моего комментария вниз к ответу, так как кажется, что это решило проблему:

добавлять header('Content-Type: application/json'); до echo $data;, Проблема в том, что Slack интерпретирует ваш ответ как текст. Он будет интерпретироваться как JSON, только если Content-Type верно.

3

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

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

По вопросам рекламы [email protected]