Voximplant
VoxEngineシナリオからMedia Streams経由で、Voximplant通話をElevenAgentsにストリーミングします。
Voximplantインテグレーションは限定提供中で、ワークスペースごとに有効化されます。顧客のトラフィックをルーティングする前に、 ElevenLabsの担当者へお問い合わせください。
概要
Voximplantインテグレーションは、Voximplant Media Streamsを使用し、VoxEngineシナリオ内の通話を WebSocket経由でElevenAgentsのエージェントに直接接続します。電話機能はVoximplantが担います。 通話の発信や応答、その後の処理を制御します。会話はElevenAgentsが担います。 SIPトランクやミドルウェアは必要ありません。
着信通話と発信通話の仕組みは同じです。通話が接続されると、シナリオは通話ごとにElevenLabsへの WebSocketを1つ開きます。会話が終了すると、ElevenLabsは、人間の担当者に転送するか、通話を終了するか、 タイムアウトとして処理するかを示す単一の決定イベントをシナリオに送信します。
インテグレーションの仕組み
- VoxEngineシナリオが着信通話に応答するか、発信通話を開始します。
- シナリオがエージェント用のElevenLabsエンドポイントへのWebSocketを開き、 ElevenLabs APIキーをBearerトークンとして使用して認証します。
- シナリオが
call.sendMediaTo()でメディアストリームを開始し、任意のcustomParametersを渡します。 ElevenLabsは各パラメーターを動的変数に変換し、独自のstartで応答します。 - VoximplantとElevenLabsが、
mediaメッセージで8 kHzの16ビットリニアPCMオーディオを交換します。 - 会話が終了すると、ElevenLabsはエージェントの最後のフレーズの残り、1つの
elevenlabs-decisionカスタムイベント、stopメッセージを送信します。その後、シナリオがWebSocketを閉じ、 決定に従って処理します。
要件
開始する前に、以下を用意してください。
- アプリケーション、電話番号または発信通話機能、シナリオを編集する権限があるVoximplantアカウント。
- Voximplantインテグレーションが有効なElevenLabsワークスペース。
- ElevenLabsエージェントと専用のAPIキー。
ElevenLabsを設定する
エージェントを作成または選択する
ElevenAgentsでエージェントを作成します。通話の接続直後に話し始める必要がある場合は、最初のメッセージを設定してください。 オーディオ形式はインテグレーションによって設定されるため、エージェントに設定された形式は Voximplant通話には使用されません。
通話終了を有効にする
エージェント → ツール → システムツール で 通話終了 を有効にし、エージェントが会話を終了できるようにします。 エージェントが通話終了時に示した理由は、決定とともにシナリオへ送信されます。
Voximplant転送ルールを追加する(任意)
エージェントが発信者を人間の担当者へ転送できるようにするには、プロバイダー設定がvoximplantの
転送ルールとともに 番号へ転送 システムツールを追加します。このルールには転送先がありません。
会話はtransfer-to-agentの決定で終了し、シナリオが発信者をルーティングします。転送ルールは
APIで設定します。エージェントにPATCHを送信してツールを追加します。
end_callなど、エージェントがすでに持っているツールを含む完全なbuilt_in_toolsオブジェクトを送信します。
エージェントが返す選択肢は固定トークンvoximplantなので、ツールごとにVoximplantルールが1つあれば
十分です。他のプロバイダー向けに設定された電話番号やSIP URIは、Voximplant通話では提示されません。
転送ルールはAPIで管理する設定です。上記のように、転送ルールを使用するエージェントの 番号へ転送 ツールはAPIで設定・更新してください。ダッシュボードのツールエディターは、 電話番号ごとの転送リストに対応しています。
専用のAPIキーを作成する
エージェントと同じワークスペースでAPIキーを作成し、スコープをElevenAgentsに設定します。
Voximplantからの接続のみを許可するには、キーで許可するIPアドレスをVoximplantのメディアサーバーに制限します。
Voximplantのメディアサーバーは
https://api.voximplant.com/getMediaResources?with_mediaserversに掲載されています。
WebSocket URLを確認する
シナリオは、エージェントIDを含むURLに接続します。
エージェントのブランチを固定するには、?branch_id=<branch_id>を追加します。
ElevenLabsアカウントが分離されたレジデンシー環境にある場合は、<region>を
リージョンコードに置き換えてください。利用可能なリージョンについては、データレジデンシーを参照してください。
Voximplantを設定する
アプリケーションを作成する
Voximplantコントロールパネルで アプリケーション を開き、
アプリケーションを作成 をクリックします。elevenlabs-agentなどの名前を付け、
作成 をクリックします。

APIキーをシークレットとして保存する
アプリケーションで シークレット を開き、シークレットを追加 をクリックします。名前をELEVENLABS_API_KEYにし、
エージェントのワークスペース用に作成したAPIキーを 値 に貼り付けて、シークレットを追加 をクリックします。
シナリオはVoxEngine.getSecretValue()でAPIキーを読み取るため、シナリオコードにキーが表示されることはありません。

シナリオを作成する
シナリオ を開いて シナリオを作成 をクリックし、elevenlabs_agentという名前を付けます。以下のコードを貼り付け、
ELEVENLABS_URL内のエージェントIDを置き換えて、保存 をクリックします。このシナリオは着信通話に応答し、
エージェントへストリーミングして、会話終了時に決定に従って処理します。発信通話の場合は、発信した通話の
CallEvents.Connectedハンドラー内でWebSocketを開きます。

通話をシナリオへルーティングする
ルーティング を開き、ルールを作成 をクリックして名前を付け、elevenlabs_agent
シナリオを割り当てます。デフォルトのパターン.*では、すべての通話がシナリオ経由でアプリケーションへ送信されます。
アプリケーションが他の通話も処理する場合は、対象を電話番号に絞り込んでください。電話番号をルーティングするには、
番号 でアプリケーションに割り当てます。

テスト通話を発信する
電話番号がなくても、ブラウザからアプリケーションへ発信できます。
-
ユーザー を開き、ユーザーを作成 をクリックして、パスワード付きのユーザーを作成します。

-
ルーティング で テストツール、ソフトフォン の順にクリックします。そのユーザーとしてサインインし、 マイクへのアクセスを許可して、任意の宛先を入力して発信します。エージェントが最初のメッセージで応答します。
-
通話が終了したら、通話履歴 を開きます。各通話には、通話自体の横にWebSocketレッグが表示されます。 ログを表示 をクリックしてセッションを確認します。

ログには、ElevenLabsが送信した決定、WebSocketの切断、その後にシナリオが実行した処理が表示されます。 この例では発信者が人間の担当者を求めたため、決定は
transfer-to-agentとなり、 エージェントが示した理由も含まれています。
MEDIA_ENDEDではなく、elevenlabs-decisionイベントに基づいて処理してください。VoximplantはElevenLabsからの
オーディオが約1秒間途切れるとMEDIA_ENDEDを発生させますが、これは会話の途中でも起こる可能性があります。
動的変数
customParametersの各キーは、同じ名前の動的変数になります。文字列でない値はテキストに変換されます。
たとえば、trueは"true"になります。customParametersにはオブジェクトまたはJSONエンコードされた文字列を指定できます。
system__またはintegration__で始まるキーは予約されており、破棄されます。
決定イベント
会話が終了すると、ElevenLabsはstopメッセージの前に決定を1つだけ送信します。
発信者が通話を切った場合など、シナリオが先にstopを送信するかWebSocketを閉じた場合、
ElevenLabsは決定を送信しません。
オーディオ
VoximplantとElevenLabsは、双方向で8 kHzの16ビットモノラルリニアPCMを交換します。ElevenLabsは エージェントのオーディオをほぼリアルタイムで送信するため、発信者がエージェントの発話に割り込んでも、 中断された応答が再生され続けるのは最大約0.4秒です。
認証エラー
Authorizationヘッダーがない、または形式が不正な場合、APIキーが無効または接続元IPアドレスからの使用を許可されていない場合、
キーが別のワークスペースに属している場合、あるいはキーのユーザーが認証を有効にしたエージェントへアクセスできない場合、
ElevenLabsはコード1008、理由bad auth tokenでWebSocketを閉じます。
制限事項と未対応の機能
- クライアントツールと キーパッドのタッチトーンを再生 システムツールには対応していません。番号へ 転送 はVoximplant転送ルールでのみ機能し、発信者の転送先はシナリオが決定します。
- 最初のメッセージの変更など、設定のオーバーライドをシナリオから渡すことはできません。 渡せるのは動的変数のみです。
- データ収集結果はシナリオに送信されません。結果には 通話後Webhookを使用してください。