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

APIを介したヒューマンインザループ承認

Respond by APIチャネル、webhook、およびIntercom APIを使用して、Fin ProceduresのHuman-in-the-Loopステップを独自システムに接続する方法。

対応者:Dawn

Respond by APIチャネルを使うと、Fin ProceduresのHuman-in-the-Loop(HITL)ステップをwebhookとIntercom APIを使って独自システムに接続できます。FinがHITLステップに到達すると、Intercomはwebhookをエンドポイントに送信します。システムはリクエストを処理し、必要な属性を入力して応答を返し、手続きを自動的に続行させます。

注意: この機能は現在管理された利用可能性の段階にあります。使用するには、Developer HubアプリをPreview APIバージョンに設定する必要があります。

この機能の利用例は以下の通りです:

  • 自動承認ワークフロー:返金や割引の承認をビジネスルールを適用し自動応答する内部ツールにルーティング

  • カスタムチームメイトダッシュボード:HITLリクエストを独自のサポートツールや内部ポータルで他のタスクと並べて表示

  • 外部チームへのエスカレーション:Intercomを使わないチーム(エンジニアリング、法務、財務など)に質問を転送し、その応答を取得

  • 監査およびコンプライアンスログ:応答前にすべてのHITL決定をコンプライアンスシステムに記録し、自動的な記録を作成


開始前に

Respond by APIを設定するには、以下が必要です:

  • 少なくとも1つのHuman-in-the-Loopステップを含むFin Procedure

  • Developer Hubアプリ — まだない場合は設定>Developer Hubで作成してください

  • webhookリクエストを受信できるHTTPSエンドポイント

  • Developer Hubアプリにはread_conversationsとwrite_conversationsのOAuthスコープが必要です


ステップ1:手続きでAsk via webhookを有効にする

  1. 設定したいprocedureをProceduresエディターで開きます。

  2. Human-in-the-Loopステップを選択します。

  3. 歯車アイコンをクリックしてステップの設定パネルを開きます。

  4. More channelsタブを選択します。

  5. Ask via webhookセクションを展開します。

  6. Enable for this procedureをオンに切り替えます。

  7. Verify webhook setupをクリックしてDeveloper Hubアプリが正しく登録されているか確認します。

  8. 手続きを保存します。

Verify webhook setupをクリックすると、以下のいずれかが表示されます:

  • 「Webhook connected.」— webhookが正しく設定されています

  • 「No webhook found.」— Developer Hubでwebhookを設定する必要があります(ステップ2参照)

検証に失敗した場合は、Developer Hubをクリックしてアプリ設定を新しいタブで開きます。

注意: Ask via webhookチャネルはInboxおよびSlackチャネルと連携して動作します。HITLステップに到達すると、すべての有効チャネルに同時に通知されます。最初に応答したチャネルが勝ち、以降の応答は拒否されます。


ステップ2:Developer Hubでwebhookを設定する

  1. 設定 > Developer Hubに移動するか、直接アプリ設定にアクセスします。

  2. アプリを選択するか、新規作成します。

  3. API Versionに移動し、Previewに切り替えます。

  4. アプリ設定のWebhooksに移動します。

  5. webhookエンドポイントURLを入力します(HTTPSである必要があります)。

  6. 購読トピックにprocedure.hitl_notification.createdを追加します。

  7. アプリに必要なOAuthスコープがあることを確認してください:read_conversations(webhook通知受信に必須)とwrite_conversations(API経由のコールバック応答送信に必須)。

  8. webhook設定を保存します。

重要: この機能が管理された利用可能性の段階にある間、HITL webhookトピックはPreview APIバージョンでのみ利用可能です。トピックがwebhookトピックリストに表示される前に、このバージョンに切り替える必要があります。


ステップ3:webhookペイロードを処理する

手続きがAsk via webhookを有効にしたHuman-in-the-Loopステップに到達すると、IntercomはwebhookエンドポイントにPOSTリクエストを送信します。ペイロードには以下が含まれます:

  • 会話ID

  • Finが尋ねている質問

  • システムが入力する必要のある属性

  • 応答を送信するためのコールバックURL

  • コンテキスト用の最近の会話メッセージ

完全なペイロードとフィールド仕様については、procedures API referenceを参照してください。


ステップ4:コールバック応答を送信する

システムがHITLリクエストを処理したら、webhookペイロードにあるcallback_urlにPOSTリクエストを送信します。step_idとattributes_to_collectにリストされた各属性の値を含めます。write_conversations OAuthスコープを持つBearerトークンで認証してください。

応答が成功すると、Finは提供された属性値を使って手続きを再開します。OAuthトークンに関連付けられたチームメイトが応答者として記録されます。

完全なコールバックリクエスト形式、認証詳細、サポートされるデータ型、エラーコードについては、procedures API referenceを参照してください。


ベストプラクティス

統合を構築する際に以下を心がけてください:

  • webhook署名を検証する:IntercomはHMACでwebhookペイロードに署名します。リクエストが正当であることを確認するために必ず署名を検証してください。詳細はprocedures API referenceを参照。

  • タイムアウト前に応答する:HITLリクエストにはProceduresエディターで設定可能な待機時間があります。expires_atまでに応答がない場合、手続きは設定されたタイムアウト動作(エスカレーションメッセージ、再割り当てなど)を実行します。

  • 重複応答を送信しない:コールバックは冪等ではありません。同じステップに複数回応答を送ると、後続のリクエストは409 Conflictを返します。409を受け取った場合、元の応答はすでに処理されています。

  • リスト属性の場合はoption idを送信:表示ラベルではなく、options配列のidを送信してください。

  • 応答者を追跡する:OAuthトークンに関連付けられたチームメイトが応答者として記録されます。一定のIDを持たせたい場合は専用サービスアカウントの使用を検討してください。

  • マルチチャネル競合を適切に処理する:APIチャネルがInboxやSlackと共に有効な場合、最初の応答が勝ちます。別チャネルで先に応答があった場合、システムは409を受け取ることがあります。

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