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

时间:2019-04-02 18:25:02

标签: php json slack-api

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

properties([

    [$class: 'RebuildSettings', autoRebuild: false, rebuildDisabled: false], 

    parameters([
        [$class: 'LabelParameterDefinition', 
            allNodesMatchingLabel: false, 
            defaultValue: '', 
            description: '', 
            name: 'node', 
            nodeEligibility: [$class: 'AllNodeEligibility'], t
            riggerIfResult: 'allCases']
        ]
    )

])

我得到以下输出:

node(params.node){}

但是,Slack期望使用以下格式的JSON:

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

我只需要最后将一个'{'转换为'[',将一个'}'转换为']'。我将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:1)

我没有足够的声誉,但是我相信这是no square bracket json array

的副本

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

{"blocks":["type":"mrkdwn","text":"Danny Torrence left the following review for your property"]}

总结一下帖子,您真正要做的就是用另一个数组包装内部数组

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

这将返回:

{"blocks":[{"type":"mrkdwn","text":"Danny Torrence left the following review for your property"}]}