使用PHP / Guzzle将消息发送到松弛通道将打印“ Array”

时间:2019-02-15 14:34:29

标签: php guzzle

我正在尝试发布到Slack频道,但无法正常工作。 我在Slack中收到的唯一消息是Array,因为text的值是Array。由于我了解他们的文档,因此不应该这样做。如果我将文本移到数组的第一级,则会显示实际的文本,因此我猜测我的请求运行正常。我想念什么?这是使用GuzzleHttpClient在PHP中完成的。

我的讯息:

[
 'type' => 'section',
 'text' => [
      'type' => 'mrkdwn',
      'text' => 'This is supposed to be my text'
 ]
]; 

我对API的请求

$request = $client->post($url, [
        RequestOptions::JSON => $messages
    ]);

3 个答案:

答案 0 :(得分:1)

这似乎不太明显,但是您不能将其 API chat.postMessage所使用的消息格式用于传入的Webhooks。两者的格式都不同。

话虽如此,follow this documentation for webhook messages及其相应的格式为here

您要尝试使用的是所谓的“块”,它似乎专用于其API messaging

如果您在此message builder上尝试发送消息(该消息是针对Webhooks的),它将失败。但这将适用于this message builder

如果希望消息显示在多行上,也许您可​​以不用换行了。参见here

答案 1 :(得分:0)

您的结构不正确,请参见文档:https://api.slack.com/messaging/composing/layouts#stack-of-blocks

它应该是消息块数组,您需要再嵌套一次。

var canvas = new fabric.Canvas('canvas', {
  preserveObjectStacking: true,
});

答案 2 :(得分:0)

如@ncla所述,如果您使用传入的Webhook API使用“块UI”元素,则无法像chat.postMessage一样发送块。

在Blocks文档中并不明显,但在 Messages payload page,它指定您可以发送blocks属性。这将允许您使用“块”结构。