Amazon Connect

Amazon Connect के नेटिव थर्ड-पार्टी AI एजेंट (A2A) इंटीग्रेशन के ज़रिए Amazon Connect वॉइस कॉन्टैक्ट्स को ElevenAgents को सौंपें।

Amazon Connect इंटीग्रेशन सीमित उपलब्धता में है। आपके AWS अकाउंट के लिए Amazon Connect का थर्ड-पार्टी AI एजेंट सपोर्ट सक्षम होना चाहिए और ElevenLabs ट्रांसपोर्ट हर workspace के लिए सक्षम किया जाता है। ग्राहक ट्रैफ़िक रूट करने से पहले अपने ElevenLabs प्रतिनिधि से संपर्क करें।

अवलोकन

Amazon Connect इंटीग्रेशन, Amazon Connect के थर्ड-पार्टी AI एजेंट प्रोटोकॉल के ज़रिए Amazon Connect कॉन्टैक्ट फ़्लो को सीधे ElevenAgents के किसी एजेंट से जोड़ता है। यह ओपन A2A protocol का एक्सटेंशन है। टेलीफ़ोनी, रूटिंग और queue का प्रबंधन Amazon Connect करता है; बातचीत का प्रबंधन ElevenAgents करता है। किसी SIP trunk, Twilio नंबर या middleware की ज़रूरत नहीं है। AWS इस फ़ीचर को Agent-to-agent collaboration के अंतर्गत दस्तावेज़ करता है; इस गाइड में ElevenLabs से जुड़ी खास बातें और ElevenLabs एजेंट तक पहुंचने के लिए ज़रूरी AWS चरण दिए गए हैं।

यही फ़्लो इनबाउंड कॉल और StartOutboundVoiceContact से शुरू किए गए आउटबाउंड कॉन्टैक्ट, दोनों के लिए काम करता है। जब ElevenLabs एजेंट समाप्त होता है, तो Amazon Connect आपका कॉन्टैक्ट फ़्लो जारी रखता है और मिले हुए परिणाम के आधार पर ब्रांच करता है।

इंटीग्रेशन कैसे काम करता है

  1. एक कॉन्टैक्ट फ़्लो Get customer input ब्लॉक तक पहुंचता है, जो AMAZON.QInConnectIntent intent वाले Amazon Lex V2 bot को इनवोक करता है।
  2. Amazon Connect का orchestration AI एजेंट बातचीत को तुरंत ElevenLabs के लिए रजिस्टर किए गए थर्ड-पार्टी एप्लिकेशन को सौंप देता है।
  3. Amazon Connect एप्लिकेशन के AccessUrl में दिए ElevenLabs endpoint पर WebSocket खोलता है और AWS Secrets Manager में स्टोर API key से प्रमाणीकरण करता है।
  4. Amazon Connect संकेत देता है कि कॉलर का चैनल लाइव है, फिर Amazon Connect और ElevenLabs A2A संदेशों के रूप में 16-bit linear PCM ऑडियो का आदान-प्रदान करते हैं। Amazon Connect sample rate प्रस्तावित करता है और ElevenLabs उसे अपना लेता है, इसलिए एजेंट पर ऑडियो फ़ॉर्मैट बदलने की ज़रूरत नहीं होती।
  5. जब एजेंट कॉल समाप्त करता है, तो ElevenLabs Complete परिणाम के साथ session समाप्त करता है और फ़्लो Lex ब्लॉक से आगे बढ़ता है। कॉलर को human queue में रूट करने वाला Escalate परिणाम wire पर समर्थित है और transfer tool के ज़रिए उपलब्ध कराया जाएगा; देखें किसी व्यक्ति को ट्रांसफ़र करना।

आवश्यकताएं

शुरू करने से पहले, सुनिश्चित करें कि आपके पास ये हैं:

  1. Connect Customer tier पर Amazon Connect instance, जिसमें अकाउंट और Region के लिए थर्ड-पार्टी AI एजेंट सपोर्ट सक्षम हो।
  2. instance से जुड़ा Amazon Q in Connect assistant।
  3. KMS keys, Secrets Manager secrets, AppIntegrations applications, Connect security profiles, Amazon Q in Connect AI agents, Lex V2 bots और contact flows बनाने के लिए AWS permissions।
  4. Amazon Connect ट्रांसपोर्ट सक्षम किया हुआ ElevenLabs workspace।
  5. एक ElevenLabs एजेंट और समर्पित API key।
  6. AWS CLI v2 और उन calls के लिए awscurl (pip install awscurl), जिनके request shapes अभी रिलीज़ हुए CLI versions में उपलब्ध नहीं हैं।

हर AWS resource को Amazon Connect instance के उसी account और Region में रखें। नीचे दिए चरण उन calls के लिए AWS CLI का उपयोग करते हैं जहाँ यह समर्थित है और जहाँ यह समर्थित नहीं है वहाँ awscurl (SigV4-signed HTTP request) का। ये AWS के Set up collaboration with an external AI agent का पालन करते हैं और ElevenLabs के लिए खास values जोड़ते हैं।

ElevenLabs कॉन्फ़िगर करें

1

एजेंट बनाएं या चुनें

ElevenAgents में एजेंट बनाएं। अगर hand-off पूरा होते ही उसे बोलना चाहिए, तो उसे पहला संदेश दें; session के दौरान Amazon Connect खुद कुछ नहीं चलाता।

2

End call सक्षम करें

Agent → Tools → System tools में, End call सक्षम करें ताकि कॉलर की रिक्वेस्ट हल होने पर एजेंट session समाप्त कर सके। Amazon Connect तब Complete परिणाम के साथ आपका फ़्लो जारी रखता है।

3

समर्पित API key बनाएं

एजेंट वाले workspace में API key बनाएं और उसका scope ElevenAgents तक सीमित रखें। आप इसे अगले सेक्शन में AWS Secrets Manager में स्टोर करेंगे; इसे कहीं और पेस्ट न करें।

4

WebSocket URL नोट करें

Amazon Connect उस URL से जुड़ता है जिसमें आपका एजेंट ID होता है:

EnvironmentAccessUrl
Defaultwss://api.elevenlabs.io/v1/convai/conversation/amazon-connect/<agent_id>
Data residencywss://api.<region>.residency.elevenlabs.io/v1/convai/conversation/amazon-connect/<agent_id>

अगर आपका ElevenLabs अकाउंट isolated residency environment पर है, तो <region> को अपने region code से बदलें। उपलब्ध regions के लिए data residency देखें।

AWS में ElevenLabs एप्लिकेशन रजिस्टर करें

इस सेक्शन में सब कुछ API call है। जिन values का दोबारा उपयोग करेंगे, उन्हें एक बार सेट करें:

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 assistant बनाएं

अगर instance में पहले से assistant है, तो यह चरण छोड़ दें। अन्यथा एक बनाएं और उसे instance से जोड़ें:

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

assistant ID और ARN नोट कर लें।

2

API key स्टोर करें

Amazon Connect अपनी service principal के साथ Secrets Manager से key पढ़ता है, इसलिए secret को customer-managed KMS key से encrypt किया जाना चाहिए जो connect.amazonaws.com को decrypt access देती हो। डिफ़ॉल्ट aws/secretsmanager key का उपयोग नहीं किया जा सकता।

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 key को किसी फ़ाइल में सेव करें, ताकि वह आपके shell history में कभी न आए। फिर key और secret बनाएं:

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 पढ़ने की अनुमति दें:

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

customer-managed key से encrypted Secrets Manager secret और connect.amazonaws.com के लिए उसकी resource policy

3

थर्ड-पार्टी एप्लिकेशन बनाएं

ElevenLabs WebSocket URL को A2A_SERVER type के AppIntegrations application के रूप में रजिस्टर करें। इस type के लिए 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"

response में application Id और Arn होते हैं; उन्हें APPLICATION_ID और APPLICATION_ARN के रूप में export करें। Amazon Connect console में A2A_SERVER applications सूचीबद्ध नहीं होते, इसलिए API से सत्यापित करें:

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

एप्लिकेशन को अपने instance से जोड़ें

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

security profile में एप्लिकेशन की अनुमति दें

orchestration AI एजेंट से जुड़े security profile में application को उसके allowed AI agents के अंतर्गत सूचीबद्ध होना चाहिए, नहीं तो hand-off runtime पर विफल हो जाएगा।

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"

admin website में profile और उसके permissions दिखते हैं, लेकिन allowed AI agents नहीं; वे सिर्फ API के ज़रिए दिखते हैं।

AI agent view permissions वाला Amazon Connect admin website में समर्पित security profile

6

orchestration AI एजेंट बनाएं और प्रकाशित करें

orchestration एजेंट हर वॉइस बातचीत को audio streaming सक्षम रखते हुए तुरंत एप्लिकेशन को सौंप देता है। वॉइस sessions के लिए तत्काल hand-off ज़रूरी है; text streaming (audioStreamingEnabled को false पर सेट करना) और delegateAgentConfiguration ElevenLabs द्वारा समर्थित नहीं हैं।

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

प्रकाशित करने पर versioned ARN (<AI_AGENT_ARN>:1) मिलता है; कॉन्टैक्ट फ़्लो इसी का संदर्भ देता है। security profile को unversioned और versioned दोनों एजेंट से जोड़ें:

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 agent designer में समर्पित security profile से जुड़ा orchestration AI एजेंट

कॉन्टैक्ट फ़्लो बनाएं

1

Lex bot बनाएं

  1. एक Lex V2 bot बनाएं जिसका एकमात्र intent, आपके assistant ARN के साथ कॉन्फ़िगर किया हुआ built-in AMAZON.QInConnectIntent हो। अन्य intents न जोड़ें।
  2. bot locale पर speech-to-speech सक्षम करें। bidirectional audio streaming केवल Sonic speech-to-speech bots के साथ काम करती है।
  3. assistant इस्तेमाल करने के लिए bot के IAM role को अनुमति दें। इसके बिना, ElevenLabs तक कोई request पहुंचने से पहले ही AWS में hand-off HTTP 403 के साथ विफल हो जाता है। ऐसी policy जोड़ें:
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. bot बनाएं, एक version और alias बनाएं, और alias को instance से जोड़ें:
aws connect associate-bot --instance-id $INSTANCE_ID \
--lex-v2-bot AliasArn=<LEX_ALIAS_ARN> --region $AWS_REGION

Q in Connect hand-off intent और built-in fallback intent के साथ Lex V2 bot intents सूची

2

assistant और Lex ब्लॉक जोड़ें

फ़्लो designer में ये ब्लॉक इसी क्रम में जोड़ें:

  1. Set logging behavior: सक्षम। नीचे hand-off सत्यापित करने के लिए फ़्लो log का उपयोग करें।
  2. Connect assistant: अपना Amazon Q in Connect assistant चुनें।
  3. Get customer input: Amazon Lex टैब में Enter an ARN चुनें और bot alias ARN पेस्ट करें। text-to-speech prompt को single space पर रखें, ताकि hand-off से पहले Amazon Connect कुछ न चलाए। Session attributes के अंतर्गत मैन्युअल रूप से सेट किए गए दो attributes जोड़ें:
Destination keyValue
x-amz-lex:q-in-connect:ai-agent-arnversioned orchestration agent ARN (...:1)।
x-amz-lex:qic-audio-passthroughtrue

Get customer input ब्लॉक के session attributes: versioned AI agent ARN और audio passthrough flag

x-amz-lex:qic-audio-passthrough, AWS की prelaunch अवधि के दौरान थर्ड-पार्टी वॉइस path को नियंत्रित करता है। AWS के अनुसार फ़ीचर public होने के बाद इस attribute की ज़रूरत नहीं रहती; इसे रहने देना हानिरहित है।

3

परिणाम के आधार पर ब्रांच करें

Amazon Connect, ElevenLabs परिणाम को फ़्लो में $.Lex.SessionAttributes.Tool attribute के रूप में उपलब्ध कराता है। Lex ब्लॉक के बाद Check contact attributes ब्लॉक जोड़ें, Namespace को Lex, Key को Session attributes, और Session Attribute Key को Tool सेट करें, फिर हर परिणाम के लिए Equals condition जोड़ें:

Valueमतलबसुझाया गया रूट
Completeएजेंट ने कॉल समाप्त की, जैसे End call tool से।Disconnect
Escalateएजेंट ने किसी व्यक्ति को मांगा (देखें किसी व्यक्ति को ट्रांसफ़र करना)।Set working queue → Transfer to queue

हर परिणाम के लिए Equals conditions के साथ Lex session attribute Tool पर कॉन्फ़िगर किया गया Check contact attributes ब्लॉक

Amazon Connect ये values upper-case outcome type के बजाय title case (Escalate, Complete) में लिखता है, जो एजेंट भेजता है। exported flow में Lex ब्लॉक का Default output उसका NoMatchingCondition transition होता है; सुनिश्चित करें कि यह error message के बजाय comparison ब्लॉक पर जाए।

Get customer input ब्लॉक वाला कॉन्टैक्ट फ़्लो, जो Check contact attributes ब्लॉक तक जाता है और Escalate को queue तथा Complete को disconnect पर रूट करता है

ऊपर दिया फ़्लो हर परिणाम की दोनों spellings से तुलना करता है, ताकि casing बदलने पर भी यह काम करता रहे।

4

प्रकाशित करें और असाइन करें

फ़्लो प्रकाशित करें, फिर किसी claimed phone number को उस पर पॉइंट करें:

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

outbound calls के लिए उसी फ़्लो से कॉन्टैक्ट शुरू करें; Amazon Connect ग्राहक को कॉल करता है और answer होने पर कॉल 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 के भीतर hand-off में लगभग तीन सेकंड लगते हैं। कुछ देर बातचीत करें और अलविदा कहें: एजेंट End call कॉल करता है, ElevenLabs session Complete के साथ समाप्त होता है और आपका फ़्लो Lex ब्लॉक से आगे जारी रहता है।

2

ElevenLabs में बातचीत देखें

Conversations में बातचीत खोलें। इसका source Amazon Connect होता है और Client data टैब में session को मिले amazon_connect_* dynamic variables सूचीबद्ध होते हैं।

Amazon Connect dynamic variables की सूची वाला Amazon Connect बातचीत का Client data टैब

3

AWS में फ़्लो log देखें

logging सक्षम होने पर, हर ब्लॉक instance के flow log group में entry लिखता है। 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 branch के ब्लॉक आते हैं।

डायनामिक वेरिएबल्स

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_ प्रीफ़िक्स के अंतर्गत snake case में बदला जाता है। Set contact attributes के ज़रिए अपने फ़्लो में सेट किए गए कस्टम कॉन्टैक्ट एट्रिब्यूट, Amazon Connect द्वारा वर्तमान में भेजे जाने वाले कॉन्टेक्स्ट का हिस्सा नहीं हैं, भले ही AI एजेंट की सुरक्षा प्रोफ़ाइल कॉन्टैक्ट एट्रिब्यूट देख सकती हो; अगर AWS उन्हें शामिल करना शुरू करता है, तो वे अपने-आप इसी प्रीफ़िक्स के अंतर्गत दिखेंगे। आप यह नहीं चुन सकते कि Amazon Connect कौन-सा कॉन्टैक्ट डेटा साझा करे; AWS कॉन्टेक्स्ट का एक तय सेट भेजता है।

अतिरिक्त कॉन्टेक्स्ट भेजने के लिए, conversation initiation 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 के लिए एजेंट-साइड ट्रिगर को Transfer to number टूल में Amazon Connect ट्रांसफ़र प्रकार के रूप में जोड़ा जा रहा है, ताकि एक ही टूल हर प्रोवाइडर पर मानव हैंडऑफ़ कवर कर सके। इसके उपलब्ध होने तक, Amazon Connect पर ElevenLabs एजेंट कॉल समाप्त (Complete) कर सकते हैं, लेकिन किसी व्यक्ति तक एस्केलेट नहीं कर सकते। अपने फ़्लो में Escalate ब्रांच रखें; बिना किसी और फ़्लो बदलाव के यह काम करने लगेगी।

End call टूल Complete नतीजा देता है। दोनों में से किसी भी नतीजे के बाद पोस्ट-कॉल विश्लेषण और पोस्ट-कॉल webhook सामान्य रूप से चलते हैं।

Amazon Connect को सिर्फ़ नतीजे का प्रकार और एक कारण स्ट्रिंग वापस भेजी जाती है। फ़्लो को रूटिंग डेटा देने के लिए, एजेंट को एक webhook tool दें, जो amazon_connect_contact_id और स्टोर किए जाने वाले मानों के साथ Amazon Connect के UpdateContactAttributes API को कॉल करे, और एजेंट को कॉल खत्म करने से पहले इसे कॉल करने का निर्देश दें। फिर फ़्लो Lex ब्लॉक के बाद Check contact attributes ब्लॉक से वे एट्रिब्यूट पढ़ सकता है। पोस्ट-कॉल webhook फ़्लो के पहले ही आगे बढ़ जाने के बाद ट्रिगर होता है, इसलिए यह रूटिंग फ़ैसलों की बजाय CRM अपडेट्स के लिए उपयुक्त है।

ट्रेसेस

Amazon Connect बाहरी एजेंट्स के लिए हर सहयोग में ट्रेस डेटा भेजना ज़रूरी करता है। जब Amazon Connect सेशन पर ट्रेसिंग सब्सक्राइब करता है, तो ElevenLabs हर एजेंट टर्न के लिए एक OpenTelemetry ट्रेस भेजता है। इसमें कॉलर का ट्रांसक्रिप्ट, एजेंट का जवाब, हर टूल कॉल और उसका नतीजा, तथा प्रति-स्पैन टाइमिंग शामिल होती है। Amazon Connect इन ट्रेसेस को कॉन्टैक्ट के साथ स्टोर करता है; उन्हें देखने का तरीका जानने के लिए AI एजेंट ट्रेसेस देखें। इन ट्रेसेस के ट्रांसक्रिप्ट और टूल नतीजों पर वही रिडैक्शन सेटिंग्स लागू होती हैं जो Amazon Connect में आपके बाकी कॉन्टैक्ट डेटा पर होती हैं, इसलिए इंटीग्रेशन सक्षम करने से पहले अपनी डेटा-हैंडलिंग ज़रूरतों की समीक्षा करें। पोस्ट-कॉल webhooks की तरह, ट्रेसेस आपके अपने सिस्टम्स तक पहुँचाए जाते हैं: ज़ीरो रिटेंशन मोड में एजेंट भी इन्हें भेजते हैं, क्योंकि ज़ीरो रिटेंशन यह तय करता है कि ElevenLabs क्या स्टोर करता है, न कि आपका Amazon Connect इंस्टेंस क्या प्राप्त करता है।

ऑडियो

Amazon Connect हर सेशन पर 8, 16 या 24 kHz में 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 पर आधारित conversation initiation webhook, रूटिंग डेटा के लिए UpdateContactAttributes को कॉल करने वाला webhook टूल और बाकी सबके लिए पोस्ट-कॉल webhook इस्तेमाल करें।
  • system__override_first_message जैसे कॉन्फ़िगरेशन ओवरराइड्स फ़्लो से नहीं भेजे जा सकते। इसके बजाय उन्हें conversation initiation 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 key और रिसोर्स पॉलिसी connect.amazonaws.com को एक्सेस देती हैं।
  • Amazon Connect WebSocket कनेक्शन स्थापित होने के लिए लगभग 20 सेकंड देता है। पुष्टि करें कि AccessUrl AWS से पहुँच योग्य है: wss://, सही एजेंट ID और बीच में कोई नेटवर्क allow-list नहीं।
  • अगर आप कनेक्शन को अपने इन्फ़्रास्ट्रक्चर के ज़रिए प्रॉक्सी करते हैं, तो उस प्रॉक्सी को चालू रखें। एक कोल्ड सर्वरलेस इंस्टेंस हैंड-ऑफ़ विंडो से ज़्यादा समय ले सकता है और 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 key सक्रिय है, एजेंट के वर्कस्पेस की है और उस पर कोई IP प्रतिबंध नहीं है।
  • पुष्टि करें कि आपके वर्कस्पेस के लिए Amazon Connect ट्रांसपोर्ट सक्षम है।

Lex ब्लॉक में, सुनिश्चित करें कि Default आउटपुट उस ब्लॉक तक जाता है जो $.Lex.SessionAttributes.Tool की तुलना करता है, और title-case मानों Escalate और Complete से तुलना करता है।

पुष्टि करें कि collaborator में audioStreamingEnabled true पर सेट है। टेक्स्ट स्ट्रीमिंग के साथ, Amazon Connect टेक्स्ट टर्न भेजता है और टेक्स्ट जवाबों की अपेक्षा करता है, जिसे ElevenLabs सपोर्ट नहीं करता; ElevenLabs लॉग्स में INIT_SESSION carries no audio configuration दिखता है।

Amazon Connect ऊपर सूचीबद्ध कॉन्टैक्ट सिस्टम एट्रिब्यूट और आइडेंटिफ़ायर देता है। फ़्लो में सेट किए गए कस्टम कॉन्टैक्ट एट्रिब्यूट एजेंट तक नहीं पहुँचते; इसके बजाय उन्हें conversation initiation webhook के ज़रिए भेजें। अगर एजेंट का पहला संदेश या प्रॉम्प्ट किसी ऐसे वेरिएबल का उल्लेख करता है जो कभी दिया ही नहीं जाता, तो सेशन स्टार्टअप पर विफल हो जाता है।