応答があるまでフローを止める
フローによっては、続行する前に外部からの返答が必要です。上司がリクエストを承認する、決済サービスが支払いを確認する、別のシステムが処理を終える、といった場面です。Webhook待機 アクションは、専用の URL が呼び出されるまで実行を一時停止し、送られてきた内容を使って処理を再開します。
このガイドでは承認フローを作ります。フローがリクエストを Slack に投稿し、待機し、回答に応じて処理を続けます。
仕組み
実行ごとに、Webhook待機ステップごとの コールバック URL が発行されます。フローは待機ステップに着く 前に、回答する人へこの URL を送ります。相手が URL を呼び出すと実行が再開し、送られたデータが待機ステップの出力になります。
メッセージ作成 ─▶ Slack に送信 ─▶ Webhook待機 ─▶ パス
(URL を含む) ⏸ 一時停止
▲
承認者 ── POST {"approved": true}1. 待機ステップを追加する
- フローを止めたい位置で ステップを追加 をクリックし、組み込み を開いて 待機 を選び、Webhook待機 を選びます。
- HTTPメソッド を POST にします。
- ステップの名前を「承認待ち」に変更します。
$の一覧で URL を見つけやすくなります。
2. URL を含むメッセージを作る
コールバック URL は 項目全体 が参照のときだけ置き換わるため、Slack のメッセージの途中に直接入れることはできません。先にコードのステップでメッセージを組み立てます。
待機ステップの前に 組み込み › コード › JavaScript実行 を追加し、名前を「承認メッセージを作成」に変更します。
入力パラメータ にキー
callbackUrlを追加します。値には$を入力し、実行 を開いて コールバックURL用 承認待ち を選びます。値にはほかに何も書かないでください。コード に次のように書きます。
jsreturn `経費申請の承認をお願いします。こちらから承認または却下してください: ${callbackUrl}`;
3. 送信する
コードのステップと待機ステップの間に アプリ › Slack › メッセージ送信 を追加します。Slack の認証情報と チャンネルID を選び、メッセージ本文 にコードのステップの出力 承認メッセージを作成.results を設定します。
4. リクエストに回答する
承認する側は、JSON の本文を付けて URL に POST します。たとえば承認ツール、スクリプト、または別のフローの HTTP ステップ から送ります。
curl -X POST "<コールバック URL>" \
-H "Content-Type: application/json" \
-d '{"approved": true, "comment": "問題ありません"}'実行はすぐに再開します。
5. 回答に応じて処理を続ける
URL に送られた本文は、待機ステップの出力 data に入ります。待機ステップの後に パス を追加します。
- フィールド:
承認待ち.dataを選び、続けて.approvedを入力します。参照全体は$.<待機ステップID>.output.data.approvedです。 - 演算子: 真偽値: 真
承認時のステップをこの分岐に、却下時のステップを フォールバック の分岐に置きます。コメントは data.comment にあります。
知っておきたいこと
- URL はパスワードのように扱ってください。 URL を知っている人は誰でも実行を再開できるため、回答すべき人やシステムにだけ送ってください。
- URL は実行ごとに異なります。 以前の実行の URL では新しい実行は再開しません。
- ブラウザで URL を開く と、本文のない
GETリクエストが送られます。承認者にリンクをクリックしてもらうだけにしたい場合は、HTTPメソッド を GET にしてください。クリックで実行は再開しますが、承認か却下かは伝えられません。 - いつまでも待つわけではありません。 URL が 30 日以内に呼び出されないと、実行はステータス タイムアウト で止まります。実行履歴 で確認できます。制限 を参照してください。