Amazon Connect

Amazon ConnectネイティブのサードパーティAIエージェント(A2A)インテグレーションを通じて、Amazon Connectの音声コンタクトをElevenAgentsに引き渡します。

Amazon Connectインテグレーションは限定提供中です。AWSアカウントでAmazon ConnectのサードパーティAIエージェント サポートを有効にし、ElevenLabsトランスポートをワークスペースごとに有効化する必要があります。顧客トラフィックをルーティングする前に、 ElevenLabsの担当者にお問い合わせください。

概要

Amazon Connectインテグレーションでは、Amazon Connectのコンタクトフローを、オープンな A2Aプロトコルを拡張したAmazon ConnectのサードパーティAIエージェントプロトコルを介して、 ElevenAgentsのエージェントに直接接続します。Amazon Connectがテレフォニー、ルーティング、キューを管理し、 ElevenAgentsが会話を管理します。SIPトランク、Twilio番号、ミドルウェアは不要です。AWSではこの機能を エージェント間コラボレーションとして文書化しています。 このガイドでは、ElevenLabs固有の内容と、ElevenLabsエージェントに接続するために必要なAWSの手順を説明します。

同じフローで、StartOutboundVoiceContactを使用して開始される着信通話と発信コンタクトに対応します。 ElevenLabsエージェントが終了すると、Amazon Connectはコンタクトフローを継続し、受信した 結果に基づいて分岐します。

インテグレーションの仕組み

  1. コンタクトフローが、AMAZON.QInConnectIntentインテントを使用するAmazon Lex V2ボットを呼び出すGet customer inputブロックに到達します。
  2. Amazon ConnectのオーケストレーションAIエージェントが、会話を直ちにElevenLabs用に登録したサードパーティアプリケーションへ引き継ぎます。
  3. Amazon Connectが、AWS Secrets Managerに保存されたAPIキーで認証し、アプリケーションのAccessUrlにあるElevenLabsエンドポイントへのWebSocketを開きます。
  4. Amazon Connectが発信者のチャネルが接続中であることを通知すると、Amazon ConnectとElevenLabsがA2Aメッセージとして16ビットリニアPCMオーディオを交換します。Amazon Connectがサンプルレートを提示し、ElevenLabsがそれを採用するため、エージェント側でオーディオ形式を変更する必要はありません。
  5. エージェントが通話を終了すると、ElevenLabsはComplete結果でセッションを完了し、フローはLexブロックから続行されます。発信者を有人キューへルーティングするEscalate結果は通信上サポートされており、転送ツールで公開される予定です。詳しくは有人対応への転送をご覧ください。

要件

始める前に、以下を用意してください。

  1. アカウントとリージョンでサードパーティAIエージェントのサポートが有効になっている、Connect CustomerティアのAmazon Connectインスタンス。
  2. インスタンスに関連付けられたAmazon Q in Connectアシスタント。
  3. KMSキー、Secrets Managerシークレット、AppIntegrationsアプリケーション、Connectセキュリティプロファイル、Amazon Q in Connect AIエージェント、Lex V2ボット、コンタクトフローを作成するためのAWS権限。
  4. Amazon Connectトランスポートが有効なElevenLabsワークスペース。
  5. ElevenLabsエージェントと専用APIキー。
  6. AWS CLI v2と、リリース済みのCLIバージョンにリクエスト形式がまだ含まれていない呼び出し用のawscurl(pip install awscurl)。

すべてのAWSリソースは、Amazon Connectインスタンスと同じアカウントおよびリージョンに保持してください。以下の手順では、対応している呼び出しにはAWS CLIを、対応していない呼び出しにはawscurl(SigV4署名付きHTTPリクエスト)を使用します。AWSの外部AIエージェントとのコラボレーションを設定する 方法に従い、ElevenLabs固有の値を追加しています。

ElevenLabsを設定する

1

エージェントを作成または選択する

ElevenAgentsでエージェントを作成します。引き継ぎ完了後すぐに話し始める場合は、最初のメッセージを設定してください。セッション中、Amazon Connectは独自の音声を再生しません。

2

通話終了を有効にする

Agent → Tools → System toolsでEnd callを有効にすると、発信者のリクエストが解決された際にエージェントがセッションを終了できます。Amazon Connectはその後、Complete結果でフローを続行します。

3

専用APIキーを作成する

エージェントと同じワークスペースでAPIキーを作成し、ElevenAgentsにスコープを設定します。次のセクションでAWS Secrets Managerに保存するため、他の場所には貼り付けないでください。

4

WebSocket URLを確認する

Amazon Connectは、エージェントIDを含むURLに接続します。

環境AccessUrl
デフォルトwss://api.elevenlabs.io/v1/convai/conversation/amazon-connect/<agent_id>
データレジデンシーwss://api.<region>.residency.elevenlabs.io/v1/convai/conversation/amazon-connect/<agent_id>

ElevenLabsアカウントが分離されたレジデンシー環境にある場合は、<region>をリージョンコードに置き換えてください。利用可能なリージョンについては、データレジデンシーをご覧ください。

AWSにElevenLabsアプリケーションを登録する

このセクションの操作はすべてAPI呼び出しです。再利用する値を一度設定します。

export AWS_REGION=<REGION> # Region of your Amazon Connect instance
export ACCOUNT_ID=<ACCOUNT_ID>
export INSTANCE_ID=<INSTANCE_ID> # Amazon Connect instance ID
export INSTANCE_ARN=arn:aws:connect:$AWS_REGION:$ACCOUNT_ID:instance/$INSTANCE_ID
export AGENT_ID=<AGENT_ID> # ElevenLabs agent ID
1

Amazon Q in Connectアシスタントを作成する

インスタンスにすでにアシスタントがある場合は、この手順をスキップしてください。ない場合は、作成してインスタンスに関連付けます。

aws qconnect create-assistant --name elevenlabs-assistant --type AGENT --region $AWS_REGION
aws connect create-integration-association --instance-id $INSTANCE_ID \
--integration-type WISDOM_ASSISTANT --integration-arn <ASSISTANT_ARN> --region $AWS_REGION

アシスタントIDとARNを記録します。

2

APIキーを保存する

Amazon Connectは独自のサービスプリンシパルでSecrets Managerからキーを読み取るため、シークレットはconnect.amazonaws.comに復号アクセスを許可するカスタマー管理KMSキーで暗号化する必要があります。デフォルトのaws/secretsmanagerキーは使用できません。

kms-key-policy.json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AccountAdmin",
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::<ACCOUNT_ID>:root" },
"Action": "kms:*",
"Resource": "*"
},
{
"Sid": "AllowConnectDecrypt",
"Effect": "Allow",
"Principal": { "Service": "connect.amazonaws.com" },
"Action": ["kms:Decrypt", "kms:DescribeKey"],
"Resource": "*"
}
]
}

シェル履歴にElevenLabs APIキーが残らないようファイルに保存してから、キーとシークレットを作成します。

KMS_KEY_ID=$(aws kms create-key --description "ElevenLabs agent API key" \
--policy file://kms-key-policy.json --region $AWS_REGION \
--query KeyMetadata.KeyId --output text)
SECRET_ARN=$(aws secretsmanager create-secret --name elevenlabs/agent-api-key \
--kms-key-id "$KMS_KEY_ID" --secret-string file://elevenlabs-api-key.txt \
--region $AWS_REGION --query ARN --output text)
rm elevenlabs-api-key.txt

Amazon Connectにシークレットの読み取りアクセスを許可します。

secret-resource-policy.json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowConnectRead",
"Effect": "Allow",
"Principal": { "Service": "connect.amazonaws.com" },
"Action": ["secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret"],
"Resource": "<SECRET_ARN>"
}
]
}
aws secretsmanager put-resource-policy --secret-id "$SECRET_ARN" \
--resource-policy file://secret-resource-policy.json --region $AWS_REGION

カスタマー管理キーで暗号化されたSecrets Managerシークレットと、connect.amazonaws.com用のリソースポリシー

3

サードパーティアプリケーションを作成する

ElevenLabs WebSocket URLを、A2A_SERVERタイプのAppIntegrationsアプリケーションとして登録します。このタイプではAuthConfigが必須です。

create-application.json
{
"Name": "elevenlabs-agent",
"Namespace": "elevenlabs-agent",
"Description": "ElevenLabs agent over the Amazon Connect A2A extension",
"ApplicationType": "A2A_SERVER",
"ApplicationSourceConfig": {
"ExternalUrlConfig": {
"AccessUrl": "wss://api.elevenlabs.io/v1/convai/conversation/amazon-connect/<AGENT_ID>"
}
},
"AuthConfig": {
"AuthType": "API_KEY",
"CredentialProviderIdentifier": "<SECRET_ARN>"
}
}
awscurl --service app-integrations --region $AWS_REGION -X POST \
-H 'Content-Type: application/json' --data @create-application.json \
"https://app-integrations.$AWS_REGION.amazonaws.com/applications"

レスポンスにはアプリケーションのIdとArnが含まれます。APPLICATION_IDおよびAPPLICATION_ARNとしてエクスポートしてください。Amazon ConnectコンソールにはA2A_SERVERアプリケーションが表示されないため、APIで確認します。

aws appintegrations get-application --arn "$APPLICATION_ARN" --region $AWS_REGION
4

アプリケーションをインスタンスに関連付ける

awscurl --service connect --region $AWS_REGION -X PUT -H 'Content-Type: application/json' \
--data "{\"IntegrationArn\": \"$APPLICATION_ARN\", \"IntegrationType\": \"APPLICATION\"}" \
"https://connect.$AWS_REGION.amazonaws.com/instance/$INSTANCE_ID/integration-associations"
aws connect list-integration-associations --instance-id $INSTANCE_ID \
--integration-type APPLICATION --region $AWS_REGION
5

セキュリティプロファイルでアプリケーションを許可する

オーケストレーションAIエージェントに紐付けるセキュリティプロファイルでは、許可されたAIエージェントとしてアプリケーションを一覧に含める必要があります。含まれていない場合、引き継ぎは実行時に失敗します。

SECURITY_PROFILE_ID=$(aws connect create-security-profile --instance-id $INSTANCE_ID \
--security-profile-name elevenlabs-a2a --permissions QConnectAIAgents.View Wisdom.View \
--region $AWS_REGION --query SecurityProfileId --output text)
awscurl --service connect --region $AWS_REGION -X POST -H 'Content-Type: application/json' \
--data "{\"AllowedAIAgents\": [{\"Arn\": \"$APPLICATION_ARN\", \"Type\": \"THIRD_PARTY\"}]}" \
"https://connect.$AWS_REGION.amazonaws.com/security-profiles/$INSTANCE_ID/$SECURITY_PROFILE_ID"

管理サイトにはプロファイルとその権限は表示されますが、許可されたAIエージェントは表示されません。これらはAPIからのみ確認できます。

AIエージェントの表示権限を持つ、Amazon Connect管理サイト内の専用セキュリティプロファイル

6

オーケストレーションAIエージェントを作成して公開する

オーケストレーションエージェントは、オーディオストリーミングを有効にして、すべての音声会話を直ちにアプリケーションへ引き継ぎます。音声セッションには即時引き継ぎが必要です。ElevenLabsは、テキストストリーミング(audioStreamingEnabledをfalseに設定)およびdelegateAgentConfigurationをサポートしていません。

create-ai-agent.json
{
"name": "elevenlabs-handoff",
"type": "ORCHESTRATION",
"visibilityStatus": "PUBLISHED",
"configuration": {
"orchestrationAIAgentConfiguration": {
"connectInstanceArn": "<INSTANCE_ARN>",
"locale": "en_US",
"multiAgentConfigurations": [
{
"handoffAgentConfiguration": {
"agentTarget": { "applicationId": "<APPLICATION_ARN>" },
"instruction": {
"instruction": "Immediately hand off every voice conversation to the ElevenLabs agent."
},
"audioStreamingEnabled": true,
"immediateHandoff": true
}
}
]
}
}
}
awscurl --service wisdom --region $AWS_REGION -X POST -H 'Content-Type: application/json' \
--data @create-ai-agent.json \
"https://wisdom.$AWS_REGION.amazonaws.com/assistants/<ASSISTANT_ID>/aiagents"
aws qconnect create-ai-agent-version --assistant-id <ASSISTANT_ID> \
--ai-agent-id <AI_AGENT_ID> --region $AWS_REGION

公開するとバージョン付きARN(<AI_AGENT_ARN>:1)が返され、コンタクトフローではこれを参照します。バージョンなしとバージョン付きの両方のエージェントにセキュリティプロファイルを紐付けます。

for ARN in <AI_AGENT_ARN> <AI_AGENT_ARN>:1; do
aws connect associate-security-profiles --instance-id $INSTANCE_ID --entity-arn "$ARN" \
--entity-type AI_AGENT --security-profiles Id=$SECURITY_PROFILE_ID --region $AWS_REGION
done

専用セキュリティプロファイルが紐付けられた、AIエージェントデザイナー内のオーケストレーションAIエージェント

コンタクトフローを構築する

1

Lexボットを作成する

  1. 唯一のインテントが組み込みのAMAZON.QInConnectIntentであり、アシスタントARNを設定したLex V2ボットを作成します。ほかのインテントは追加しないでください。
  2. ボットロケールでスピーチtoスピーチを有効にします。双方向オーディオストリーミングは、Sonicスピーチtoスピーチボットでのみ動作します。
  3. ボットのIAMロールにアシスタントを使用する権限を付与します。これがないと、リクエストがElevenLabsに到達する前にAWS内でHTTP 403となり、引き継ぎに失敗します。次のようなポリシーをアタッチしてください。
lex-role-policy.json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["wisdom:CreateSession", "wisdom:GetAssistant"],
"Resource": ["<ASSISTANT_ARN>", "<ASSISTANT_ARN>/*"]
},
{
"Effect": "Allow",
"Action": ["wisdom:SendMessage", "wisdom:GetNextMessage"],
"Resource": "arn:aws:wisdom:<REGION>:<ACCOUNT_ID>:session/<ASSISTANT_ID>/*"
}
]
}
  1. ボットをビルドし、バージョンとエイリアスを作成して、エイリアスをインスタンスに関連付けます。
aws connect associate-bot --instance-id $INSTANCE_ID \
--lex-v2-bot AliasArn=<LEX_ALIAS_ARN> --region $AWS_REGION

Q in Connect引き継ぎインテントと組み込みフォールバックインテントが表示されたLex V2ボットのインテント一覧

2

アシスタントとLexブロックを追加する

フローデザイナーで、以下のブロックを順番に追加します。

  1. Set logging behavior:有効化します。以下の引き継ぎを検証するにはフローログを使用します。
  2. Connect assistant:Amazon Q in Connectアシスタントを選択します。
  3. Get customer input:Amazon LexタブでEnter an ARNを選択し、ボットエイリアスARNを貼り付けます。引き継ぎ前にAmazon Connectが何も再生しないよう、テキスト読み上げプロンプトは半角スペース1文字のままにします。Session attributesで、手動設定の属性を2つ追加します。
宛先キー値
x-amz-lex:q-in-connect:ai-agent-arnバージョン付きオーケストレーションエージェントARN(...:1)。
x-amz-lex:qic-audio-passthroughtrue

Get customer inputブロックのセッション属性:バージョン付きAIエージェントARNとオーディオパススルーフラグ

x-amz-lex:qic-audio-passthroughは、AWSのプレローンチ期間中にサードパーティ音声パスを有効化します。AWSによれば、この機能が一般公開されると属性は不要になりますが、そのまま残しても問題ありません。

3

結果に応じて分岐する

Amazon Connectは、ElevenLabsの結果を$.Lex.SessionAttributes.Tool属性としてフローに渡します。Lexブロックの後にCheck contact attributesブロックを追加し、NamespaceをLex、KeyをSession attributes、Session Attribute KeyをToolに設定します。次に、結果ごとにEquals条件を追加します。

値意味推奨ルート
CompleteたとえばEnd callツールにより、エージェントが通話を終了しました。切断
Escalateエージェントが有人対応をリクエストしました(有人対応への転送を参照)。対応キューを設定 → キューに転送

各結果に対するEquals条件を持つ、Lexセッション属性Toolで設定されたCheck contact attributesブロック

Amazon Connectは、エージェントが送信する大文字の結果タイプではなく、タイトルケース(Escalate、Complete)でこれらの値を書き込みます。エクスポートしたフローでは、LexブロックのDefault出力はNoMatchingCondition遷移です。エラーメッセージではなく、比較ブロックにつながっていることを確認してください。

Get customer inputブロックからCheck contact attributesブロックへ進み、Escalateをキューへ、Completeを切断へルーティングするコンタクトフロー

上記フローでは各結果の両方の表記を比較しているため、大文字・小文字の使い分けが変更されても動作し続けます。

4

公開して割り当てる

フローを公開し、取得済みの電話番号に割り当てます。

aws connect associate-phone-number-contact-flow --instance-id $INSTANCE_ID \
--phone-number-id <PHONE_NUMBER_ID> --contact-flow-id <CONTACT_FLOW_ID> --region $AWS_REGION

アウトバウンド通話では、同じフローでコンタクトを開始します。Amazon Connectが顧客へ発信し、応答された通話をElevenLabsへ引き継ぎます。

aws connect start-outbound-voice-contact --instance-id $INSTANCE_ID \
--contact-flow-id <CONTACT_FLOW_ID> --destination-phone-number <E164_NUMBER> \
--source-phone-number <YOUR_CONNECT_NUMBER> --region $AWS_REGION

インテグレーションをテストする

1

通話を発信する

電話番号に発信します。フローがLexブロックに到達してから数秒後にエージェントの最初のメッセージが再生されます。ElevenLabsに接続されるまで、AWS内の引き継ぎには約3秒かかります。短く会話してから別れの挨拶をしてください。エージェントがEnd callを呼び出し、ElevenLabsセッションがCompleteで終了すると、フローはLexブロックから続行されます。

2

ElevenLabsで会話を確認する

Conversationsで会話を開きます。ソースはAmazon Connectで、Client dataタブにはセッションが受信したamazon_connect_*動的変数が表示されます。

Amazon Connectの動的変数を一覧表示する、Amazon Connect会話のClient dataタブ

3

AWSでフローログを確認する

ログを有効にすると、各ブロックはインスタンスのフローロググループにエントリを書き込みます。Get customer inputブロックには、ElevenLabsから受信した結果が記録されます。

aws logs filter-log-events --log-group-name /aws/connect/<INSTANCE_ALIAS> \
--start-time $(( $(date +%s) - 600 ))000 --region $AWS_REGION \
--query 'events[].message' --output text | tr '\t' '\n' | grep -o '"Results": *"[A-Za-z_]*"'

Lexブロックでは"Results": "Complete"が表示され、その後にComplete分岐のブロックが続くはずです。

動的変数

Amazon Connectは、すべてのセッションでコンタクトのシステム属性を送信します。ElevenLabsでは、 これらをセッション識別子とともに動的変数として公開します:

動的変数説明
system__caller_id顧客の電話番号(Amazon Connectの顧客エンドポイント)。
system__called_numberコンタクトが接続しているAmazon Connectの電話番号(システムエンドポイント)。
system__call_idAmazon ConnectのコンタクトID。
amazon_connect_system_attributes_channelコンタクトチャネル(例:VOICE)。
amazon_connect_system_attributes_customer_endpoint_addressAmazon Connectから送信される顧客エンドポイントアドレス。
amazon_connect_system_attributes_system_endpoint_addressAmazon Connectから送信されるシステムエンドポイントアドレス。
amazon_connect_interaction_modeコラボレーションモード(例:HANDOFF)。
amazon_connect_contact_idAmazon ConnectのコンタクトID。
amazon_connect_contact_arn完全なコンタクトARN。
amazon_connect_context_idA2Aセッション(コンテキスト)ID。
amazon_connect_instance_idインスタンスID。
amazon_connect_instance_arnインスタンスARN。

Amazon Connectセッションでは、受信・発信コンタクトのどちらでも、system__caller_idは常に顧客、system__called_number は常にAmazon Connectの番号です。

Amazon Connectが送信するコンタクトコンテキストのその他すべてのメンバーも同様に公開されます。ネストされた 名前はアンダースコアで結合され、amazon_connect_プレフィックスの下でスネークケースに変換されます。 フロー内でSet contact attributesを使って設定したカスタムコンタクト属性は、AIエージェントのセキュリティプロファイルでコンタクト 属性を表示できる場合でも、Amazon Connectが現在送信するコンテキストには含まれません。AWSがこれらを含めるようになった場合は、同じプレフィックスの下に自動的に表示されます。Amazon Connectが共有するコンタクトデータを選択することはできません。AWSは固定のコンテキストセットを渡します。

追加のコンテキストを渡すには、 会話開始Webhookを使用してください。 Amazon Connectセッションでは、エージェントが話し始める前にWebhookが呼び出され、caller_idには顧客の番号、 called_numberにはAmazon Connectの番号、call_idにはAmazon ConnectコンタクトIDが設定されます。そのため、フロー内のLambdaでコンタクトIDをキーにコンタクト属性を保存し、Webhookから動的変数と設定オーバーライドとして返せます。

担当者への転送

ElevenLabsセッションがEscalate結果で終了すると、Amazon Connectはコンタクトを担当者キューにルーティングします。フローのEscalateブランチでは、Set working queueとTransfer to queueでこれを処理します。キュー処理、ウィスパーフロー、エージェント選択はすべてAmazon Connectが処理します。

Escalateのエージェント側トリガーは、すべてのプロバイダーで1つのツールで担当者への引き継ぎを扱えるよう、Amazon Connectの転送タイプとしてTransfer to numberツールに追加中です。提供開始までは、Amazon Connect上のElevenLabsエージェントは通話を終了(Complete)できますが、担当者へエスカレーションすることはできません。フローのEscalateブランチはそのまま維持してください。追加のフロー変更なしで機能し始めます。

End callツールはComplete結果を生成します。どちらの結果の後も、通話後分析と通話後Webhookは通常どおり実行されます。

Amazon Connectに戻されるのは、結果タイプと理由文字列のみです。ルーティングデータをフローに渡すには、amazon_connect_contact_idと保存する値を使用してAmazon ConnectのUpdateContactAttributes APIを呼び出すWebhookツールをエージェントに付与し、通話を終了する前に呼び出すよう指示してください。フローでは、Lexブロックの後にあるCheck contact attributesブロックでこれらの属性を読み取れます。通話後Webhookはフローがすでに続行された後に発火するため、ルーティングの判断ではなくCRMの更新に適しています。

トレース

Amazon Connectでは、すべてのコラボレーションについて外部エージェントによるトレースデータの送信が必要です。 Amazon Connectがセッションのトレーシングをサブスクライブすると、ElevenLabsはエージェントの各ターンについて、発信者の文字起こし、エージェントの応答、結果を含む各ツール呼び出し、スパンごとのタイミングを含むOpenTelemetryトレースを送信します。Amazon Connectはこれらのトレースをコンタクトとともに保存します。表示方法については、 AIエージェントトレースを参照してください。これらのトレース内の文字起こしとツール結果には、Amazon Connect内の他のコンタクトデータと同じ秘匿化設定が適用されるため、インテグレーションを有効にする前にデータ取り扱い要件を確認してください。通話後Webhookと同様に、トレースは独自のシステムに配信されます。ゼロ保持モードのエージェントもトレースを送信します。ゼロ保持はElevenLabsが保存するデータに適用され、Amazon Connectインスタンスが受信するデータには適用されないためです。

オーディオ

Amazon Connectは各セッションで8、16、または24kHzの16ビット・モノラル・リニアPCMを提案し、ElevenLabsはその提案を採用します。そのため、Amazon Connectセッションではエージェントに設定されたオーディオ形式は使用されません。発信者による割り込みはElevenLabsが検出し、Amazon Connectに報告するため、バッファリングされた再生は即座にフラッシュされます。Amazon Connectが収集したキーパッド入力は、DTMF数字としてエージェントに配信されます。Amazon Connect独自の無音マーカーは無視されます。無言の発信者に再度プロンプトを出すには、エージェントのターンタイムアウトを使用してください。

制限事項と未対応の機能

  • クライアントツールとPlay keypad touch toneシステムツールはサポートされていません。Transfer to numberはまだAmazon Connectをサポートしていません。担当者への引き継ぎは、このツールのAmazon Connect転送タイプとして提供されます。
  • データ収集結果はフローに返されず、Amazon Connectが共有するコンタクトデータを決定します。追加のコンテキストにはamazon_connect_contact_idをキーにした会話開始Webhookを、ルーティングデータにはUpdateContactAttributesを呼び出すWebhookツールを、それ以外には通話後Webhookを使用してください。
  • system__override_first_messageなどの設定オーバーライドはフローから渡せません。代わりに会話開始Webhookから返してください。
  • 音声セッションでは即時の引き継ぎが必要です。Amazon Connectチャットチャネル、テキストストリーミング、バックグラウンド(delegateAgentConfiguration)コラボレーションはまだサポートされていません。
  • Amazon Connectに送信されるトレースには、発信者の文字起こし、エージェントの応答、結果を含むツール呼び出し、タイミングが含まれます。ツール呼び出しパラメータは含まれません。
  • Amazon Connectのサードパーティエージェントサポートは、AWSが有効化している場所でのみ利用でき、AWSから追加料金が発生する場合があります。

トラブルシューティング

  • このエラーは、リクエストがElevenLabsに到達する前にAWS内部で発生します。Lexサービスロールからのwisdom:SendMessageに対するAccessDeniedがCloudTrailに記録されていないか確認してください。ボットにアタッチされたロールには、アシスタントとそのセッションに対するwisdom:CreateSession、wisdom:GetAssistant、wisdom:SendMessage、wisdom:GetNextMessageが必要です。
  • セキュリティプロファイルでアプリケーションが許可されており、フローで参照されている公開済みオーケストレーションエージェントバージョンに関連付けられていることを確認してください。
  • シークレットのKMSキーとリソースポリシーでconnect.amazonaws.comにアクセスが許可されていることを確認してください。
  • Amazon Connectでは、WebSocket接続の確立に約20秒の猶予があります。AccessUrlがAWSから到達可能であることを確認してください:wss://、正しいエージェントID、ネットワーク許可リストによる妨げがないこと。
  • 独自のインフラストラクチャ経由で接続をプロキシしている場合は、そのプロキシをウォーム状態に保ってください。コールド状態のサーバーレスインスタンスでは引き継ぎの制限時間を超える場合があり、ElevenLabsがリクエストを受け取る前にAmazon Connectが中断します。
  • Get customer inputブロックに両方のセッション属性が設定されていることを確認してください:公開済みでバージョン付きのエージェントARNを指定したx-amz-lex:q-in-connect:ai-agent-arnと、trueに設定したx-amz-lex:qic-audio-passthroughです。
  • アプリケーションを許可するセキュリティプロファイルが、そのエージェントバージョンにアタッチされていることを確認してください。
  • フローログ内のブロックエントリを確認してください。Amazon Connectで発生したエラーが記録されています。
  • AccessUrlがwss://を使用し、正しいエージェントIDを含み、ワークスペースが存在するリージョンを指していることを確認してください。
  • APIキーが有効で、エージェントのワークスペースに属し、IP制限がないことを確認してください。
  • ワークスペースでAmazon Connectトランスポートが有効になっていることを確認してください。

Lexブロックで、Default出力が$.Lex.SessionAttributes.Toolを比較するブロックにつながっていることを確認し、タイトルケースの値EscalateとCompleteに対して比較してください。

コラボレーターでaudioStreamingEnabledがtrueに設定されていることを確認してください。テキストストリーミングではAmazon Connectがテキストターンを送信し、テキスト応答を期待しますが、ElevenLabsはこれをサポートしていません。ElevenLabsログにはINIT_SESSION carries no audio configurationと表示されます。

Amazon Connectは、上記のコンタクトシステム属性と識別子を提供します。フローで設定したカスタムコンタクト属性はエージェントに届きません。代わりに会話開始Webhook経由で渡してください。エージェントの最初のメッセージまたはプロンプトが一度も提供されない変数を参照している場合、セッションは起動時に失敗します。