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

Fin手順のヒューマンインザループ承認

この記事を使って、Fin手順にteammate / agentステップのLoopを追加し、Finを一時停止して人間の判断を待ちます。webhookを接続し、応答フィールドと待機時間を設定して、エンドツーエンドでテストします。

teammate / agentステップのLoopにより、Finは手順の途中で一時停止し、人間の判断を待ってから続行します。Finは選択した外部システムに通知を送信し、誰かがリクエストを確認し、決定が返されるとFinは中断した場所から再開します。

Fin手順エディターにて、ステップ7として設定されたteammate / agentステップのLoopを含む複数ステップの手順を表示


スタンドアロンHITL webhookを使用するタイミング

teammate / agentのLoopステップには主に2つの用途があります:

  • 人間の監視 — Finが進行する前に人間がレビューし承認する必要がある高リスクまたは高価値のアクション向け。例:返金や例外承認、コンプライアンスに敏感なリクエスト(例:アカウント閉鎖、データ削除)、高価値の顧客エスカレーション、善意の対応、またはポリシーで人間の承認が必要な状況。

  • 手順テスト — まだ構築されていないデータコネクターやバックエンドアクションの代わりに使用。人間が手動でステップを実行し、統合準備が整う前に手順全体のフローをテストできます。


必要なもの

開始前に以下を確認してください:

  • 少なくとも1つのteammate / agentのLoopステップを含むFin手順

  • Finからの通知を受信し応答できるURL(webhookエンドポイント)

  • 設定のManage apps and integrations権限

注意:この設定にはサードパーティの開発ツールやアプリ認証情報は不要です。すべて手順エディターで直接設定します。


仕組み

顧客の会話がFin手順のteammate / agentのLoopステップに達したとき:

1. Finが会話を一時停止

  • 一時停止前に、Finは顧客にメッセージを送信してリクエストが確認中であることを知らせることができます。

  • Finは外部システムに通知を送信します。

  • Finは応答が受信されるかステップがタイムアウトするまで待機し、続行しません。

2. あなたのシステムが通知を受け取る

  • あなたのシステムは会話の詳細と判断に必要な情報を含む通知を受け取ります。

  • 人間のレビュアーがリクエストを確認するか、あなたのシステムが自動ロジックで応答します。

Finがteammate / agentのLoopステップに達すると、会話の詳細と必要なアクションを含む通知を外部システムに送信します。この例では、レビュアーが2FAリセットリクエストを受け取り、顧客の本人確認を行ってから応答する指示を受けます。

Fin Messengerの会話で、Finが顧客の2FAリセットリクエストを確認し、レビュアーが顧客の本人確認を行い既存の2FA登録を無効化する指示を内部コメントで残してから応答する様子を表示

3. 決定が返送される

  • あなたのシステムが決定をFinに返送します。

4. Finが手順を続行

  • Finは一時停止した場所から再開します。

  • あなたのシステムからの応答は後続のステップでRead attributeステップを通じて利用可能です。

  • 結果に基づいて分岐するためにIF/ELSE条件を使用します。例:承認なら続行、拒否なら顧客にメッセージを送信。

重要:teammate / agentのLoopステップを含む手順はwebhook接続が設定されるまで公開できません。公開前に設定完了を促されます。


ステップ1:ステップの追加と設定

  1. Train > Procedureに移動し、ステップを追加したい手順を開きます。

  2. 指示ブロックで@を入力し、teammate / agentのLoopを選択します。

    Fin手順エディターの@メンションメニューで、Routingとendingの下にteammate / agentのLoopがハイライト表示されている様子

  3. ステップが手順エディターに表示されます。設定パネルで定義された応答フィールド数を示すCollectカウントと、Finが待機する時間を示すWait timeが表示されます。

    手順エディターのteammate / agentのLoopステップブロックで、応答フィールドが0、待機時間が10分と表示されている様子

  4. 設定を開くには歯車アイコンをクリックします。設定パネルはAsk via webhook(webhook接続用)、Response to collect(レビュアーが入力するフィールド)、Wait time(Finがタイムアウトまで待つ時間)の3セクションで構成されています。

    ステップ設定パネルで、Ask via webhookにwebhook接続設定ボタンと公開前の設定警告、Response to collectに追加ボタン、Wait timeに10分の顧客向けタイムアウトメッセージ編集欄がある様子
  5. Ask via webhookConfigureをクリックし、通知送信先のDelivery URLを入力してSaveをクリックします。

    webhook接続設定モーダルで、Delivery URL入力欄、読み取り専用のCallback URLテンプレート、購読トピックがprocedure.hitl_notification.createdに設定されている様子

    teammate / agent webhookのLoopモーダルは接続後に開発者認証情報を表示します。

  6. Response to collect+ Addをクリックし、レビュアーが入力するフィールドを定義します。各フィールドに形式と名前を付けます。例:拒否理由のテキストフィールドや承認のブール値。

    応答フィールド追加モーダルで、形式ドロップダウンがテキストに設定され、名前欄にプレースホルダー、説明欄は任意で表示されている様子

    各応答フィールドにはdropdowntextboolean(true/false)の形式があり、名前と任意の説明があります。teammateがループインすると、会話上でこれらのフィールドに直接入力します。

    ステップ設定パネルのResponse to collectセクションで、承認という名前のブール属性フィールドがTrueまたはFalseの値で追加されている様子

  7. Wait timeで、Finが応答を待つ時間を設定します。最小は1分で最大はありません。分または時間を選択可能です。待機時間超過時に顧客に表示するメッセージは編集できます。

    Wait timeセクションで、分が選択され時間が代替として表示され、下に編集可能なタイムアウトメッセージがある様子

  8. Procedureを保存します。ステップ2に進み、開発者認証情報を取得します。webhook接続が設定されるまで手順は公開できません。

注意:webhook配信のteammate / agentのLoopステップはこの配信チャネルのみで、inboxやチームへのルーティングオプションはありません。


ステップ2:開発者認証情報の取得

teammate / agent webhookのLoopモーダルでDelivery URLを保存すると、Webhook connectedが表示され、開発者に必要な3つの認証情報が明示されます。Not configuredと表示された場合は、Delivery URLが保存されているか、以前発行されたアクセストークンが期限切れまたは取り消されていないか確認してください。取り消されたトークンはFin手順の公開も妨げます。

  • Access token — あなたのシステムがFinに返す応答を認証します。

  • Signing secret — 受信通知がIntercomからの正当なものであることを確認します。

  • Example callback URL — 各会話に固有のURLが生成されます。あなたのシステムはレビュアーの決定をこのURLにPOSTして手順を再開します。

注意:これらの認証情報は、ステップ設定パネルのAsk via webhookセクションのConfigureをクリックするといつでも確認できます。Manage apps and integrations権限を持つteammateのみがこのダイアログを開けます。権限がないteammateは代わりに権限要求のプロンプトが表示されます。


開発者との連携

モーダルにWebhook connectedが表示されたら、teammate / agent webhookのLoopモーダルからAccess tokenSigning secretExample callback URLを統合を構築する開発者に共有します。開発者は以下のエンドポイントを構築します:

  • ステップに達した際にFinから通知を受け取る

  • リクエストをレビュアーに提示するか、自動ロジックを適用する

  • 決定を返送し、Finが続行できるようにする


スタンドアロンHITL webhookのテスト方法

Simulations(手順エディター内の自動テスト実行)を使い、実際のwebhook通知をトリガーせずにteammate / agentのLoopステップをテストします。

手順のシミュレーションを開き、Finが利用可能なteammate入力セクションでレビュアーからの期待値(例:Approved: true)を追加し、シミュレーションを実行します。Finはシステムからの応答のようにこれらの値を使用します。

注意:値を追加せずに実行すると、Finはステップをタイムアウトとみなします。


制限事項

  • ワークスペースごとに1つの配信URLがあります。変更すると、teammate / agentのLoopステップを使用するすべてのFin手順のwebhook接続が更新されます。

  • 待機時間が切れて応答がない場合、Finは設定したタイムアウトメッセージを顧客に送信し、手順は終了し会話はエスカレーションされます。

  • デフォルトのタイムアウトメッセージは「チーム」を指します。公開前に実際の設定に合わせて更新してください。


スタンドアロンHITL webhookとDeveloper Hub APIアプローチの比較

両者はHITLステップで手順を一時停止し、webhookでシステムに通知しますが、設定方法と対象ユーザーが異なります:

  • スタンドアロンHITL webhook: 手順エディターで直接設定。Developer HubアプリやOAuthスコープは不要。ワークスペースごとに1つの配信URL。Finスタンドアロンワークスペース専用。webhookチャネルはスタンドアロン手順のすべてのHITLステップで自動的に有効。

  • Developer Hub APIアプローチ: Developer Hubアプリ、プレビューAPIバージョン、read_conversationsおよびwrite_conversations OAuthスコープが必要。ステップごとに有効化し、Intercom InboxやSlackチャネルと連携。非スタンドアロンワークスペースで利用可能。詳細はHuman-in-the-loop approvals via APIを参照。

顧客の視点では、どちらの方法もシステムが応答すると会話は中断なく続行されます。


よくある質問

異なる手順で異なるwebhook URLを使えますか?

異なる手順で異なるwebhook URLは使えません。ワークスペースごとに1つの配信URLがあります。teammate / agentのLoopステップを使うすべてのFin手順は同じエンドポイントに通知を送ります。手順ごとにリクエストを異なるルートに振り分けたい場合は、通知に含まれる詳細に基づき外部システムで処理してください。

応答を待つ間、顧客はどうなりますか?

応答待ち中、Finは会話を静かに一時停止します。待機メッセージを追加していれば、ステップ設定のWait timeで設定可能です。例:「リクエストを確認中です。まもなくご連絡します。」応答が時間内にない場合、設定したタイムアウトメッセージが送信され、手順は終了し会話はエスカレーションされます。

同じ手順に複数のteammate / agentのLoopステップを追加できますか?

はい、同じ手順に複数のteammate / agentのLoopステップを追加できます。複数のステップで異なるポイントで人間の入力を収集可能です。すべてのステップは同じワークスペースのwebhook接続を共有します。

設定後にDelivery URLを変更できますか?

はい、設定後にDelivery URLを変更できます。ステップ設定パネルのAsk via webhookConfigureをクリックし、新しいURLを入力してください。変更すると、このステップを使うすべてのFin手順のwebhook接続が更新されます。

どの決定が行われたか追跡できますか?

Intercomではこのステップで行われた決定の追跡はできません。個別の決定に関するレポートや分析機能はありません。応答のログと追跡は外部システムの責任です。

こちらの回答で解決しましたか?