ボイスエージェント向け安全な発信者認証の設計
- 公開日
- 最終更新日
聴くこの記事を聴く
ボイスエージェントは、シンプルなFAQ対応から、アカウントの変更や取引処理、機密データへのアクセスなど、実際に行動するシステムへと急速に進化しています。この変化により、重要な課題が生まれます。それは「どのようにして発信者の本人確認を行うか」です。
もし
この記事では、エンタープライズ導入現場でForward Deployed Engineerとして培った実績ある認証パターンを紹介します。埋め込みウィジェット向けのセッション認証から、電話特有の方法やOTP認証まで、5つの主要アプローチを解説し、それぞれをElevenLabsプラットフォーム上で決定論的なワークフローゲーティングを使って実装する方法を説明します。
特に重要なのは、認証を会話の推測に任せてはいけない理由を示すことです。認証は、分離されたサブエージェントやツールベースの検証、条件付きワークフロー分岐によって設計し、認証済みユーザーだけが特権操作に到達できるようにする必要があります。
まとめ
認証済みユーザーだけがアカウント関連情報にアクセスできるようにするため、ElevenLabsのワークフローによる厳格な環境・アクセス分離を推奨します。認証は必ず、成功・失敗をブール値で返すツールコールとして実装し、ElevenLabsのワークフロービルダーでディスパッチツールとして設定してください。
決定的認証のためのアーキテクチャ基盤
認証済みユーザーだけがアカウント関連情報にアクセスできるようにするため、ElevenLabsのワークフローによる厳格な環境・アクセス分離をおすすめします。認証は必ず、成功・失敗をブール値で返すツールコールを使い、ElevenLabsのワークフロービルダーでディスパッチツールとして設定してください。
転送条件をツールコールの結果に直接リンクすることで、アカウントデータにアクセスできるサブエージェントは認証成功後のみ到達可能となり、未認証ユーザーからは完全に隔離されます。これにより、認証はLLMの判断に依存せず決定的となり、認証が確認できない限り下流ノードへの進行も防げます。
代替案として、転送式(transfer expression)を使った信頼性の高い転送方法も利用できます。これらの式は、ツールコールの結果で更新される動的変数を参照します。

ユーザー本人確認の方法
これらの認証方法はElevenLabsプラットフォームで標準サポートされていませんが、CRMやバックエンド/データベースと連携するサーバーサイドツールを使って実装できます。認証データはそちらに保存されます。
ユーザー本人認証の方法
これらの認証方法はElevenLabsプラットフォームに標準搭載されていませんが、CRMやバックエンド/データベースと連携するサーバーサイドツールを使って実装できます(認証データはそちらに保存)。
ホストアプリケーション認証
Documentation on Dynamic Variables:
詳しい設定方法は、
知識ベース認証(KBA)
ボイスエージェントが発信者にアカウント番号、郵便番号、生年月日、セキュリティ回答などの認証情報を尋ねます。サーバーサイドツール(Webhookやバックエンドコール)が、これらの値をデータベース(CRMやIDストアなど)と照合します。ツールは、ブール値(is_error)と説明テキストを含む成功/失敗結果を返します。
この方法は決定的なワークフローゲーティングで実装できます。必要な情報を尋ねた後、ツールディスパッチを設定し、ツールの成功/失敗ステータスに応じてワークフローの分岐条件を設定し、認証済みユーザーを「特権」エージェントノードへ誘導します。
- https://www.panel.temphost.top/docs/agents-platform/customization/tools/server-tools
- https://www.panel.temphost.top/docs/eleven-agents/customization/agent-workflows#dispatch-tool-node
詳しくは、
システム動的変数(電話のみ)
電話(TwilioやSIPトランク経由)での会話では、エージェントは自動的に電話専用のシステム変数(system__caller_id=発信者の電話番号など)にアクセスできます。この変数は会話開始時に自動でセットされます。
参照方法は2つあります:
システム動的変数と開始Webhookに関するドキュメント:
- https://www.panel.temphost.top/docs/agents-platform/customization/personalization/dynamic-variables#system-dynamic-variables
- https://www.panel.temphost.top/docs/agents-platform/customization/personalization/twilio-personalization
セキュリティ注意:
詳しくは、
高度な知識ベース/セキュリティ質問認証
エージェントが複数のセキュリティ質問を出し、発信者が所定回数正解した場合のみアクセスを許可できます。エージェントは、あらかじめ用意した質問リスト(生年月日、郵便番号、ペットの名前など)からランダムに選び、回答をデータベースへのツールコールで検証します。

ワンタイムコード
詳しくは、
ワンタイムコード
- コード生成:エージェントがサーバーツールコールで専用エンドポイントにリクエストし、安全なワンタイムコードを生成して、ユーザーの希望するチャネル(SMSやメール)に送信します。
- ユーザープロンプト:エージェントがユーザーに受け取ったコードの入力を求めます。音声モードでは、ユーザーがコードを口頭で伝え、音声認識で取得します。
- コード検証:エージェントがユーザー入力のコードを2回目のツールコールでバックエンドの検証サービスに送信します。バックエンドはコードが一致し、有効期限切れや既使用でないかを確認します。
- ワークフロー分岐:エージェントは検証結果に応じて処理します。成功:コードが正しければ、成功条件で認証後のワークフローへ進みます。失敗:コードが間違っていれば、再入力を促すか、リカバリー手順(例:新しいコード送信)を実行します。
実装ワークフローの詳細は以下の通りです:
まとめ
セキュリティ対策:総当たり攻撃防止のためレート制限を設け、コードの有効期限は3~5分程度にし、再試行回数も制限してください。音声入力の場合は、スピーチtoテキストの精度確認プロンプトも検討しましょう。



