新しくなったSlackワークフローで投稿されるメッセージの json フォーマットを確認してみる

2024.02.19

アノテーション インフラチーム所属の髙橋隆太です。

Slack の API conversations.history  の結果 フォーマットが レガシーワークフローから新しいワークフローにコンバートされてフォーマットが変わっていました。

今回の変更点

最近作成したものは「ワークフロー」過去作成したものは「レガシーワークフロー」と表示されます。

レガシーワークフローは自動的に新しいワークフローの形式にコンバートされる予定となります。 そのため、レガシーワークフローの形式で conversations.history の戻り値を取得する運用をしていた 場合は新しいワークフローのフォーマットに対応させる必要があります。

詳しい変更点は以下をご参照ください。

変更点

フォーマット内容

以下 json を記載します(idなどは架空の値)

※安否確認を例にしています。

レガシーワークフローの フォーマット

{
    "messages": [
        {
            "type": "message",
            "subtype": "bot_message",
            "text": "さんが*安否確認入力*を送信しました *被災しましたか? * 被災していない   *業務は可能ですか? * 業務できる   *コメント ※「出張していて被災した」「自身は被災していないが家族が被災している」など、補足情報があればコメント欄に記載をお願いします * _記入なし_  ",
            "ts": "1687483151.589599",
            "username": "安否確認報告",
            "bot_id": "BXXXXXXXXXX",
            "app_id": "AXXXXXXXXXX",
            "blocks": [
                {
                    "type": "section",
                    "block_id": "AAAAA",
                    "text": {
                        "type": "mrkdwn",
                        "text": "さんが*安否確認入力*を送信しました",
                        "verbatim": false
                    }
                },
                {
                    "type": "section",
                    "block_id": "BBBBB",
                    "text": {
                        "type": "mrkdwn",
                        "text": "*被災しましたか? *\n被災していない\n\n",
                        "verbatim": false
                    }
                },
                {
                    "type": "section",
                    "block_id": "CCCCC",
                    "text": {
                        "type": "mrkdwn",
                        "text": "*業務は可能ですか? *\n業務できる\n\n",
                        "verbatim": false
                    }
                },
                {
                    "type": "section",
                    "block_id": "DDDDD",
                    "text": {
                        "type": "mrkdwn",
                        "text": "*コメント ※「出張していて被災した」「自身は被災していないが家族が被災している」など、補足情報があればコメント欄に記載をお願いします *\n_記入なし_\n\n",
                        "verbatim": false
                    }
                },
                {
                    "type": "divider",
                    "block_id": "EEEEE"
                }
            ]
        }
    ]
}

新しいワークフロー (レガシーワークフローがコンバートされた)新フォーマット

{
    "messages": [
        {
            "type": "message",
            "subtype": "bot_message",
            "text": "*安否確認入力* submission from \n\n*被災しましたか?*\n被災していない\n\n*業務は可能ですか?*\n業務できる\n\n*コメント ※「出張していて被災した」「自身は被災していないが家族が被災している」など、補足情報があればコメント欄に記載をお願いします*\nこれは動作確認のテストです\n\n",
            "ts": "1702347306.323179",
            "username": "安否確認報告",
            "bot_id": "BXXXXXXXXXX",
            "app_id": "AXXXXXXXXXX",
            "blocks": [
                {
                    "type": "rich_text",
                    "block_id": "AAAAA",
                    "elements": [
                        {
                            "type": "rich_text_section",
                            "elements": [
                                {
                                    "type": "text",
                                    "text": "安否確認入力",
                                    "style": {
                                        "bold": true
                                    }
                                },
                                {
                                    "type": "text",
                                    "text": " submission from "
                                },
                                {
                                    "type": "user",
                                    "user_id": "U012MS9TLR0"
                                },
                                {
                                    "type": "text",
                                    "text": "\n\n"
                                },
                                {
                                    "type": "text",
                                    "text": "被災しましたか?",
                                    "style": {
                                        "bold": true
                                    }
                                },
                                {
                                    "type": "text",
                                    "text": "\n"
                                },
                                {
                                    "type": "text",
                                    "text": "被災していない"
                                },
                                {
                                    "type": "text",
                                    "text": "\n\n"
                                },
                                {
                                    "type": "text",
                                    "text": "業務は可能ですか?",
                                    "style": {
                                        "bold": true
                                    }
                                },
                                {
                                    "type": "text",
                                    "text": "\n"
                                },
                                {
                                    "type": "text",
                                    "text": "業務できる"
                                },
                                {
                                    "type": "text",
                                    "text": "\n\n"
                                },
                                {
                                    "type": "text",
                                    "text": "コメント ※「出張していて被災した」「自身は被災していないが家族が被災している」など、補足情報があればコメント欄に記載をお願いします",
                                    "style": {
                                        "bold": true
                                    }
                                },
                                {
                                    "type": "text",
                                    "text": "\n"
                                },
                                {
                                    "type": "text",
                                    "text": "これは動作確認のテストです"
                                },
                                {
                                    "type": "text",
                                    "text": "\n\n"
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

上記の通りでかなり大幅に取得フォーマットが変わっています。

※なお、ワークフローを利用しない通常のメッセージに関してはレガシーフォーマットと同様のフォーマットです。

※今回取得したのはチャンネル内にワークフローから投稿されたもので、DM等はまだ調査していません。

Slack ワークフローのメッセージを取得するような処理がある場合は、取得結果のフォーマットを確認しておいた方がいいと思います。

今回はメッセージに対してのフォーマットですが、他にも新ワークフローに変わったことで変更点がある可能性はあります。

アノテーション株式会社について

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。