概要
Refrain は 2 つのメッセージング機能を提供します。- 承認 —
requiresConfirmation: trueが設定されたステップの実行前に、承認 / スキップ / 中止ボタン付きのメッセージをチームチャンネルに投稿します。誰かが応答するまで実行は一時停止します。 - 通知 — 実行完了後に、成功/失敗件数、実行時間、失敗ステップの詳細を含むサマリーカードを送信します。
Slack/Teams/Discord を使った HITL 承認には Business 以上のプランが必要です。通知には Team 以上が必要です。
承認ワークフロー
requiresConfirmation: true のステップでは、エグゼキュータが:
- 設定されたチャンネルにステップ詳細とリスクレベルを含むカードメッセージを送信
- 実行を一時停止して応答を待機
- 応答に基づいて再開:
- 承認 — ステップを実行
- スキップ — ステップをスキップして続行
- 中止 — 実行全体を停止
通知
実行完了後(成功・失敗問わず)にサマリーカードが投稿されます:- 合計ステップ数、成功数、失敗数、スキップ数
- 実行時間
- 失敗ステップの詳細(ある場合)
プラットフォーム設定
- Slack
- Teams
- Discord
1. Slack App を作成
- api.slack.com/apps にアクセスし、Create New App → From scratch を選択
- アプリ名(例:
refrain)を入力し、ワークスペースを選択
2. Bot Token Scopes を追加
OAuth & Permissions → Bot Token Scopes に以下を追加:| Scope | 用途 |
|---|---|
chat:write | メッセージ投稿(承認要求・通知) |
files:write | レポートファイルのアップロード |
3. ワークスペースにインストール
Install to Workspace をクリックし、Bot User OAuth Token(xoxb-...)をコピーします。4. チャンネルにボットを招待
Slack で対象チャンネルに/invite @refrain を実行します。チャンネル ID の確認方法:チャンネル名を右クリック → チャンネル詳細を開く → 最下部に表示される ID(C0123456789 形式)。5. Interactivity を有効化(承認機能のみ)
--approval-mode slack を使用する場合:- Interactivity & Shortcuts → On に切り替え
- Request URL に
https://<your-domain>/webhooks/slackを設定
--notify slack のみの場合は不要です。6. 環境変数を設定
CLI 例
CLI 例
承認のみ:トラブルシューティング
Slack でボタンクリック後「This didn't work」が表示される
Slack でボタンクリック後「This didn't work」が表示される
Interactivity の Request URL が無効またはアクセスできない状態です。Slack App の Interactivity 設定で URL が正しいコールバックエンドポイントを指しているか確認してください。
承認がタイムアウトして実行が中止される
承認がタイムアウトして実行が中止される
コールバックがエグゼキュータに到達していません。コールバックエンドポイントがインターネットからアクセス可能で、Request URL が正しく設定されているか確認してください。
'not_in_channel' エラー
'not_in_channel' エラー
ボットがチャンネルに招待されていません。対象チャンネルで
/invite @your-bot-name を実行してください。