使用块布局在 Slack 中格式化消息

use*_*326 1 php json slack-api

我想使用块布局格式向我的 slack 应用程序发送消息。我在 PHP 中创建了一个关联数组,然后使用 json_encode() 将其转换为 JSON。问题是它没有转换为 slack 期望的 JSON 格式,我收到错误“无效块格式”。这是我的代码、输出和 slack 预期的输出。

$data = array(
    'blocks' => array(
        'type' => 'mrkdwn',
        'text' => 'Danny Torrence left the following review for your property'
    ),
);
$data = json_encode($data);
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

{"blocks":{"type":"mrkdwn","text":"Danny Torrence left the following review for your property"}}
Run Code Online (Sandbox Code Playgroud)

但是,Slack 需要以下格式的 JSON:

{"blocks":["type":"mrkdwn","text":"Danny Torrence left the following review for your property"]}
Run Code Online (Sandbox Code Playgroud)

我只需要最后将一个 '{' 转换为 '[' 和一个 '}' 到 ']'。我将不胜感激任何帮助。

谢谢

Mic*_*eng 5

我没有足够的声誉,但我相信这是重复的:没有方括号 json 数组

此外,这不是有效的 json,您可以查看https://jsonlint.com/?code=

{"blocks":["type":"mrkdwn","text":"Danny Torrence left the following review for your property"]}
Run Code Online (Sandbox Code Playgroud)

总结这篇文章,你真正需要做的就是用另一个数组包裹你的内部数组

$data = array(
    'blocks' => array(array(
        'type' => 'mrkdwn',
        'text' => 'Danny Torrence left the following review for your property'
    )),
);
Run Code Online (Sandbox Code Playgroud)

这将返回:

{"blocks":[{"type":"mrkdwn","text":"Danny Torrence left the following review for your property"}]}
Run Code Online (Sandbox Code Playgroud)