メインコンテンツへスキップ

概要

Refrain は 2 つのメッセージング機能を提供します。
  • 承認requiresConfirmation: true が設定されたステップの実行前に、承認 / スキップ / 中止ボタン付きのメッセージをチームチャンネルに投稿します。誰かが応答するまで実行は一時停止します。
  • 通知 — 実行完了後に、成功/失敗件数、実行時間、失敗ステップの詳細を含むサマリーカードを送信します。
Slack/Teams/Discord を使った HITL 承認には Business 以上のプランが必要です。通知には Team 以上が必要です。

承認ワークフロー

requiresConfirmation: true のステップでは、エグゼキュータが:
  1. 設定されたチャンネルにステップ詳細とリスクレベルを含むカードメッセージを送信
  2. 実行を一時停止して応答を待機
  3. 応答に基づいて再開:
    • 承認 — ステップを実行
    • スキップ — ステップをスキップして続行
    • 中止 — 実行全体を停止
デフォルトのタイムアウトは 5 分です。応答がない場合、実行は中止されます。

通知

実行完了後(成功・失敗問わず)にサマリーカードが投稿されます:
  • 合計ステップ数、成功数、失敗数、スキップ数
  • 実行時間
  • 失敗ステップの詳細(ある場合)
通知の失敗は警告としてログに記録されますが、終了コードには影響しません。

プラットフォーム設定

1. Slack App を作成

  1. api.slack.com/apps にアクセスし、Create New AppFrom scratch を選択
  2. アプリ名(例:refrain)を入力し、ワークスペースを選択

2. Bot Token Scopes を追加

OAuth & PermissionsBot Token Scopes に以下を追加:
Scope用途
chat:writeメッセージ投稿(承認要求・通知)
files:writeレポートファイルのアップロード

3. ワークスペースにインストール

Install to Workspace をクリックし、Bot User OAuth Tokenxoxb-...)をコピーします。

4. チャンネルにボットを招待

Slack で対象チャンネルに /invite @refrain を実行します。チャンネル ID の確認方法:チャンネル名を右クリック → チャンネル詳細を開く → 最下部に表示される ID(C0123456789 形式)。

5. Interactivity を有効化(承認機能のみ)

--approval-mode slack を使用する場合:
  1. Interactivity & ShortcutsOn に切り替え
  2. Request URLhttps://<your-domain>/webhooks/slack を設定
--notify slack のみの場合は不要です。

6. 環境変数を設定

export SLACK_BOT_TOKEN="xoxb-..."
export SLACK_CHANNEL_ID="C0123456789"

CLI 例

npx @refrainai/cli execute -- \
  --runbook ./payment-flow.yaml \
  --approval-mode slack \
  --notify slack

CLI 例

承認のみ:
npx @refrainai/cli execute -- \
  --runbook ./flow.yaml \
  --approval-mode slack
通知のみ:
npx @refrainai/cli execute -- \
  --runbook ./flow.yaml \
  --notify slack
両方:
npx @refrainai/cli execute -- \
  --runbook ./flow.yaml \
  --approval-mode slack \
  --notify slack

トラブルシューティング

Interactivity の Request URL が無効またはアクセスできない状態です。Slack App の Interactivity 設定で URL が正しいコールバックエンドポイントを指しているか確認してください。
コールバックがエグゼキュータに到達していません。コールバックエンドポイントがインターネットからアクセス可能で、Request URL が正しく設定されているか確認してください。
ボットがチャンネルに招待されていません。対象チャンネルで /invite @your-bot-name を実行してください。

次のステップ