使用PHP / Guzzle打印消息到松弛通道打印“数组”

问题描述 投票:0回答:3

我正试图发布到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
    ]);
php guzzle
3个回答
3
投票

它似乎不那么明显,但你不能使用他们的API chat.postMessage用于传入webhooks的消息格式。两者都有不同的格式。

随着说,follow this documentation for webhook messages和它的格式here

你想要做的是使用所谓的“块”,这似乎是专门用于他们的API messaging

如果你在这个message builder(用于webhooks)上尝试你的消息,它将失败。但它将适用于this message builder

如果您希望消息显示在多行上,也许您可​​以使用新行。见here


1
投票

正如@ncla所提到的,如果您使用“阻止UI”元素,使用传入的webhook API,则无法像使用chat.postMessage一样发送块。

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


0
投票

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

它应该是消息块的数组,您需要进一步嵌套它。

[
    [
        'type' => 'section',
        'text' => [
            'type' => 'mrkdwn',
            'text' => 'This is supposed to be my text'
        ]
    ]
];
© www.soinside.com 2019 - 2024. All rights reserved.