> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Amazon Connect

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

## परिचय

Amazon Connect इंटीग्रेशन, Amazon Connect के थर्ड-पार्टी AI एजेंट प्रोटोकॉल के ज़रिए Amazon Connect कॉन्टैक्ट फ़्लो को सीधे
ElevenAgents के एक एजेंट से जोड़ता है। यह खुले [A2A प्रोटोकॉल](https://a2a-protocol.org/) का एक एक्सटेंशन है। टेलीफ़ोनी,
रूटिंग और क्यू को Amazon Connect संभालता है; बातचीत को ElevenAgents संभालता है। किसी SIP ट्रंक, Twilio नंबर या मिडलवेयर की
ज़रूरत नहीं है। AWS इस सुविधा को
[एजेंट-टू-एजेंट सहयोग](https://docs.aws.amazon.com/connect/latest/adminguide/a2a-collaboration.html) के तहत दस्तावेज़ करता है;
यह गाइड ElevenLabs से जुड़ी खास जानकारी और ElevenLabs एजेंट तक पहुंचने के लिए ज़रूरी AWS चरणों को कवर करती है।

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

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

1. एक कॉन्टैक्ट फ़्लो **Get customer input** ब्लॉक पर पहुंचता है, जो
   `AMAZON.QInConnectIntent` इंटेंट वाले Amazon Lex V2 बॉट को शुरू करता है।
2. Amazon Connect का ऑर्केस्ट्रेशन AI एजेंट बातचीत को तुरंत उस थर्ड-पार्टी एप्लिकेशन को सौंप देता है,
   जिसे आपने ElevenLabs के लिए रजिस्टर किया है।
3. Amazon Connect एप्लिकेशन के `AccessUrl` में दिए ElevenLabs एंडपॉइंट से WebSocket खोलता है और
   AWS Secrets Manager में स्टोर API कुंजी से प्रमाणित करता है।
4. Amazon Connect संकेत देता है कि कॉलर का चैनल लाइव है, फिर Amazon Connect और ElevenLabs
   A2A मैसेज के रूप में 16-बिट लीनियर PCM ऑडियो का आदान-प्रदान करते हैं। Amazon Connect सैंपल रेट प्रस्तावित करता है और
   ElevenLabs उसे अपनाता है, इसलिए एजेंट पर ऑडियो फ़ॉर्मैट बदलने की ज़रूरत नहीं होती।
5. जब एजेंट कॉल खत्म करता है या कॉलर को किसी इंसान को सौंपता है, तो ElevenLabs सेशन को
   `Complete` या `Escalate` नतीजे के साथ समाप्त करता है और फ़्लो Lex ब्लॉक से आगे बढ़ता है; देखें
   [किसी इंसान को ट्रांसफ़र करना](#transferring-to-a-human)।

## ज़रूरी शर्तें

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

1. Connect Customer टियर पर एक Amazon Connect इंस्टेंस, जिसमें अकाउंट और Region के लिए थर्ड-पार्टी AI एजेंट सपोर्ट
   सक्षम हो।
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 और उन कॉल्स के लिए [awscurl](https://github.com/okigan/awscurl) (`pip install awscurl`),
   जिनके रिक्वेस्ट शेप अभी रिलीज़ किए गए CLI वर्ज़न में उपलब्ध नहीं हैं।

> **Note**
>
> हर AWS रिसोर्स को Amazon Connect इंस्टेंस वाले ही अकाउंट और Region में रखें। नीचे दिए चरणों में, जहां AWS CLI कॉल को सपोर्ट करता है वहां उसका और जहां नहीं करता वहां `awscurl` (SigV4-साइन किया हुआ HTTP रिक्वेस्ट) का इस्तेमाल किया गया है।
> ये AWS के [बाहरी AI एजेंट के साथ सहयोग सेट अप करने](https://docs.aws.amazon.com/connect/latest/adminguide/a2a-setup-external.html) वाले निर्देशों का पालन करते हैं और
> ElevenLabs-विशिष्ट वैल्यू जोड़ते हैं।

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

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

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

#### End call सक्षम करें

**Agent → Tools → System tools** में **End call** सक्षम करें, ताकि कॉलर का अनुरोध पूरा होने पर एजेंट सेशन खत्म कर सके।
इसके बाद Amazon Connect `Complete` नतीजे के साथ आपका फ़्लो जारी रखता है।

#### Amazon Connect ट्रांसफ़र नियम जोड़ें (वैकल्पिक)

एजेंट को कॉलर किसी इंसान को सौंपने देने के लिए, उसे **Transfer to number** सिस्टम टूल दें, जिसमें ऐसा ट्रांसफ़र नियम हो
जिसका प्रोवाइडर कॉन्फ़िगरेशन `amazon_connect` हो। इस नियम में कोई डेस्टिनेशन नहीं होता: सेशन `Escalate` नतीजे के साथ खत्म होता है
और आपका कॉन्टैक्ट फ़्लो क्यू चुनता है। ट्रांसफ़र नियम API के ज़रिए कॉन्फ़िगर किए जाते हैं। एजेंट पर `PATCH` करके टूल जोड़ें:

```bash
curl -X PATCH "https://api.elevenlabs.io/v1/convai/agents/agent_7101k5zvyjhmfg983brhmhkd98n6" \
  -H "xi-api-key: $ELEVENLABS_API_KEY" -H "Content-Type: application/json" \
  -d '{
    "conversation_config": {"agent": {"prompt": {"built_in_tools": {
      "end_call": {"type": "system", "name": "end_call", "description": "",
                   "params": {"system_tool_type": "end_call"}},
      "transfer_to_number": {
        "type": "system", "name": "transfer_to_number", "description": "",
        "params": {
          "system_tool_type": "transfer_to_number",
          "transfers": [],
          "transfer_rules": [{
            "condition": "the caller asks to speak with a human",
            "provider_configs": [
              {"type": "amazon_connect", "config": {"type": "amazon_connect_escalate"}}
            ]
          }]
        }
      }
    }}}}
  }'
```

एजेंट का पूरा `built_in_tools` ऑब्जेक्ट भेजें, जिसमें उसके मौजूदा टूल जैसे `end_call` भी शामिल हों।
एजेंट नियम को उसकी `condition` से चुनता है; जो विकल्प वह वापस भेजता है, वह तय टोकन
`amazon_connect` होता है, इसलिए हर टूल के लिए एक Amazon Connect नियम काफ़ी है। दूसरे प्रोवाइडर्स के लिए कॉन्फ़िगर किए गए
फ़ोन नंबर और SIP URI, Amazon Connect कॉल्स पर उपलब्ध नहीं होते।

> **Note**
>
> ट्रांसफ़र नियम API से मैनेज होने वाली सेटिंग हैं। इनका इस्तेमाल करने वाले एजेंट के **Transfer to number** टूल को ऊपर बताए अनुसार
> API के ज़रिए कॉन्फ़िगर और अपडेट करें; डैशबोर्ड का टूल एडिटर प्रति-नंबर ट्रांसफ़र सूची के साथ काम करता है।

#### समर्पित API कुंजी बनाएं

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

#### WebSocket URL नोट करें

Amazon Connect उस URL से कनेक्ट होता है जिसमें आपकी एजेंट ID होती है:

| एनवायरनमेंट     | AccessUrl                                                                                                             |
| --------------- | --------------------------------------------------------------------------------------------------------------------- |
| डिफ़ॉल्ट        | `wss://api.elevenlabs.io/v1/convai/conversation/amazon-connect/agent_7101k5zvyjhmfg983brhmhkd98n6`                    |
| डेटा रेज़िडेंसी | `wss://api.<region>.residency.elevenlabs.io/v1/convai/conversation/amazon-connect/agent_7101k5zvyjhmfg983brhmhkd98n6` |

> **Info**
>
> अगर आपका ElevenLabs अकाउंट किसी आइसोलेटेड रेज़िडेंसी एनवायरनमेंट पर है, तो `<region>` को अपने
> रीजन कोड से बदलें। उपलब्ध रीजन के लिए [डेटा रेज़िडेंसी](/docs/hi/overview/administration/data-residency) देखें।

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

इस सेक्शन की हर चीज़ एक API कॉल है। जिन वैल्यू का आप दोबारा इस्तेमाल करेंगे, उन्हें एक बार सेट करें:

```bash
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
```

#### Amazon Q in Connect असिस्टेंट बनाएं

अगर इंस्टेंस में पहले से असिस्टेंट है, तो इस चरण को छोड़ दें। नहीं तो एक बनाएं और उसे इंस्टेंस से जोड़ें:

```bash
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 रिकॉर्ड कर लें।

#### API कुंजी स्टोर करें

Amazon Connect अपनी सर्विस प्रिंसिपल के साथ Secrets Manager से कुंजी पढ़ता है, इसलिए सीक्रेट को ग्राहक-प्रबंधित KMS कुंजी से एन्क्रिप्ट होना चाहिए,
जो `connect.amazonaws.com` को डिक्रिप्ट एक्सेस देती हो। डिफ़ॉल्ट `aws/secretsmanager` कुंजी इस्तेमाल नहीं की जा सकती।

**`kms-key-policy.json`**

```json title="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 कुंजी को एक फ़ाइल में सेव करें, ताकि वह कभी आपकी शेल हिस्ट्री में न दिखे, फिर
कुंजी और सीक्रेट बनाएं:

```bash
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`**

```json title="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>"
    }
  ]
}
```

```bash
aws secretsmanager put-resource-policy --secret-id "$SECRET_ARN" \
  --resource-policy file://secret-resource-policy.json --region $AWS_REGION
```

![ग्राहक-प्रबंधित कुंजी से एन्क्रिप्ट किया गया Secrets Manager सीक्रेट और
connect.amazonaws.com के लिए उसकी रिसोर्स पॉलिसी](/docs/_fern-img/3fc91a773575a547f3ac6d3a24d14cffac4535227057e4e8e4eb3ccfc71f27a0.webp)

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

ElevenLabs WebSocket URL को `A2A_SERVER` टाइप के AppIntegrations एप्लिकेशन के रूप में रजिस्टर करें।
इस टाइप के लिए `AuthConfig` अनिवार्य है।

**`create-application.json`**

```json title="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>"
  }
}
```

```bash
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 से
वेरिफ़ाई करें:

```bash
aws appintegrations get-application --arn "$APPLICATION_ARN" --region $AWS_REGION
```

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

```bash
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
```

#### सुरक्षा प्रोफ़ाइल में एप्लिकेशन की अनुमति दें

ऑर्केस्ट्रेशन AI एजेंट से जुड़ी सुरक्षा प्रोफ़ाइल में एप्लिकेशन को अनुमत AI एजेंट्स के तहत सूचीबद्ध करना होगा,
वरना हैंड-ऑफ़ रनटाइम पर विफल हो जाएगा।

```bash
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 एडमिन वेबसाइट में समर्पित सुरक्षा प्रोफ़ाइल](/docs/_fern-img/2d9c7dd52c77bfeefd3c4f5beb99681d578014c407cf37dbc7d2e2f457c40ee8.webp)

#### ऑर्केस्ट्रेशन AI एजेंट बनाएं और पब्लिश करें

ऑर्केस्ट्रेशन एजेंट ऑडियो स्ट्रीमिंग सक्षम रखते हुए हर वॉइस बातचीत को तुरंत एप्लिकेशन को सौंप देता है। वॉइस सेशन के लिए तत्काल हैंड-ऑफ़ ज़रूरी है;
टेक्स्ट स्ट्रीमिंग (`audioStreamingEnabled` को false पर सेट करना) और `delegateAgentConfiguration`, ElevenLabs द्वारा समर्थित नहीं हैं।
ऑडियो तत्काल हैंड-ऑफ़ ऑर्केस्ट्रेटर को `toolConfigurations` में `RETURN_TO_CONTROL` टाइप वाला आरक्षित `Complete`
टूल भी घोषित करना होगा; इसके बिना create रिक्वेस्ट इस त्रुटि के साथ विफल हो जाता है:
`An audio frontline orchestrator (with an audio immediate handoff) must configure the reserved
'Complete' RETURN_TO_CONTROL tool`.

**`create-ai-agent.json`**

```json title="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
          }
        }
      ],
      "toolConfigurations": [
        {
          "toolName": "Complete",
          "toolType": "RETURN_TO_CONTROL",
          "description": "Close the conversation when the customer has no more questions.",
          "instruction": {
            "instruction": "Mark the conversation as complete when the customer has no additional questions or needs."
          },
          "inputSchema": {
            "type": "object",
            "properties": {
              "reason": { "type": "string", "description": "Reason for completion" }
            },
            "required": ["reason"]
          },
          "userInteractionConfiguration": { "isUserConfirmationRequired": false }
        }
      ]
    }
  }
}
```

```bash
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`) मिलता है; कॉन्टैक्ट फ़्लो इसे रेफ़रेंस करता है।
सुरक्षा प्रोफ़ाइल को बिना वर्ज़न वाले और वर्ज़न वाले, दोनों एजेंट से जोड़ें:

```bash
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 एजेंट](/docs/_fern-img/3ade9397b18d3af79fc4f3ae63fef06cec9e17d59109e5c226d403339c32f052.webp)

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

#### Lex बॉट बनाएं

1. एक Lex V2 बॉट बनाएं, जिसका एकमात्र इंटेंट आपके असिस्टेंट ARN के साथ कॉन्फ़िगर किया गया बिल्ट-इन `AMAZON.QInConnectIntent` हो।
   दूसरे इंटेंट न जोड़ें।
2. बॉट लोकेल पर स्पीच-टू-स्पीच सक्षम करें। द्विदिश ऑडियो स्ट्रीमिंग सिर्फ़ Sonic स्पीच-टू-स्पीच बॉट्स के साथ काम करती है।
3. असिस्टेंट इस्तेमाल करने के लिए बॉट की IAM भूमिका को अनुमति दें। इसके बिना कोई भी रिक्वेस्ट ElevenLabs तक पहुंचने से पहले
   हैंड-ऑफ़ AWS के भीतर `HTTP 403` के साथ विफल हो जाता है। ऐसी पॉलिसी अटैच करें:

**`lex-role-policy.json`**

```json title="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>/*"
    }
  ]
}
```

4. बॉट बिल्ड करें, एक वर्ज़न और एक एलियास बनाएं, और एलियास को इंस्टेंस से जोड़ें:

```bash
aws connect associate-bot --instance-id $INSTANCE_ID \
  --lex-v2-bot AliasArn=<LEX_ALIAS_ARN> --region $AWS_REGION
```

![Q in Connect हैंड-ऑफ़ इंटेंट और बिल्ट-इन फ़ॉलबैक इंटेंट के साथ Lex V2 बॉट इंटेंट्स सूची](/docs/_fern-img/6d857b4a57a6289c26249b80bad8181b68af5b7654db9ae0adbf0ea830091ca4.webp)

#### असिस्टेंट और Lex ब्लॉक जोड़ें

फ़्लो डिज़ाइनर में ये ब्लॉक क्रम से जोड़ें:

1. **Set logging behavior**: सक्षम करें। नीचे हैंड-ऑफ़ वेरिफ़ाई करने के लिए फ़्लो लॉग का इस्तेमाल होता है।
2. **Connect assistant**: अपना Amazon Q in Connect असिस्टेंट चुनें।
3. **Get customer input**: **Amazon Lex** टैब में **Enter an ARN** चुनें और बॉट
   एलियास ARN पेस्ट करें। टेक्स्ट-टू-स्पीच प्रॉम्प्ट को एक स्पेस पर छोड़ दें, ताकि हैंड-ऑफ़ से पहले Amazon Connect
   कुछ न चलाए। **Session attributes** के तहत, मैन्युअल रूप से सेट किए गए दो एट्रिब्यूट जोड़ें:

| डेस्टिनेशन कुंजी                      | वैल्यू                                         |
| ------------------------------------- | ---------------------------------------------- |
| `x-amz-lex:q-in-connect:ai-agent-arn` | वर्ज़न वाला ऑर्केस्ट्रेशन एजेंट ARN (`...:1`)। |
| `x-amz-lex:qic-audio-passthrough`     | `true`                                         |

![Get customer input ब्लॉक के सेशन एट्रिब्यूट: वर्ज़न वाला AI एजेंट ARN और ऑडियो
पासथ्रू फ़्लैग](/docs/_fern-img/812e85e379bcf3eb422497d27fe7740da8e3482222ca858089ad1b4de2f92e4b.webp)

> **Note**
>
> `x-amz-lex:qic-audio-passthrough`, AWS के प्रीलॉन्च चरण के दौरान थर्ड-पार्टी वॉइस पाथ को नियंत्रित करता है।
> AWS के अनुसार, सुविधा सार्वजनिक होने पर यह एट्रिब्यूट अब ज़रूरी नहीं होगा; इसे बने रहने देना
> नुकसानदायक नहीं है।

#### नतीजे के आधार पर ब्रांच करें

Amazon Connect, ElevenLabs के नतीजे को फ़्लो में `$.Lex.SessionAttributes.Tool`
एट्रिब्यूट के रूप में दिखाता है। Lex ब्लॉक के बाद **Check contact attributes** ब्लॉक जोड़ें, **Namespace** को
**Lex**, **Key** को **Session attributes**, और **Session Attribute Key** को `Tool` पर सेट करें, फिर हर नतीजे के लिए एक
**Equals** कंडीशन जोड़ें और **No Match** को एरर प्रॉम्प्ट पर रूट करें:

| ब्रांच     | मतलब                                                                                             | सुझाया गया रूट                                  |
| ---------- | ------------------------------------------------------------------------------------------------ | ----------------------------------------------- |
| `Complete` | एजेंट ने कॉल खत्म की, उदाहरण के लिए **End call** टूल से।                                         | डिस्कनेक्ट                                      |
| `Escalate` | एजेंट ने किसी इंसान के लिए कहा (देखें [किसी इंसान को ट्रांसफ़र करना](#transferring-to-a-human))। | वर्किंग क्यू सेट करें → क्यू में ट्रांसफ़र करें |
| No Match   | कोई अन्य वैल्यू।                                                                                 | प्रॉम्प्ट चलाएं → डिस्कनेक्ट करें               |

![हर नतीजे के लिए Equals कंडीशन के साथ Lex सेशन एट्रिब्यूट Tool पर कॉन्फ़िगर किया गया
Check contact attributes ब्लॉक](/docs/_fern-img/e73068b736d4023417602a17c480112a3d7f5617694390fc8a88f03c4b7855e1.webp)

> **Warning**
>
> Amazon Connect नतीजे को वायर पर भेजे गए अपर-केस फिनिश टाइप की तरह नहीं, बल्कि टाइटल केस में (`Escalate`, `Complete`) लिखता है,
> इसलिए ब्लॉक को बस इन दो कंडीशन की ज़रूरत है। हैंड-ऑफ़ के बाद विफल होने वाला सेशन `COMPLETE_WITH_ERROR` टाइप के साथ खत्म होता है;
> तब Lex ब्लॉक अपना **Error** आउटपुट लेता है या तुलना **No Match** पर पहुंचती है, इसलिए दोनों को एरर
> प्रॉम्प्ट पर रूट करें। एक्सपोर्ट किए गए फ़्लो में, Lex ब्लॉक का **Default** आउटपुट उसका `NoMatchingCondition`
> ट्रांज़िशन होता है; सुनिश्चित करें कि वह एरर मैसेज के बजाय तुलना ब्लॉक तक जाए।

![Get customer input ब्लॉक से Check contact attributes ब्लॉक तक जाने वाला कॉन्टैक्ट फ़्लो,
जो Escalate को क्यू, Complete को डिस्कनेक्ट और No Match को एरर
प्रॉम्प्ट पर रूट करता है](/docs/_fern-img/71e5a3ec507c431ff692545db58376e07db0605efb8bb42f4e17e709a1a0dedf.webp)

#### पब्लिश करें और असाइन करें

फ़्लो पब्लिश करें, फिर एक क्लेम किए गए फ़ोन नंबर को उस पर पॉइंट करें:

```bash
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 को सौंप देता है:

```bash
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
```

## इंटीग्रेशन टेस्ट करें

#### कॉल करें

नंबर पर कॉल करें। फ़्लो के Lex ब्लॉक तक पहुंचने के कुछ सेकंड बाद एजेंट का पहला मैसेज चलता है;
ElevenLabs से संपर्क होने से पहले AWS में हैंड-ऑफ़ में करीब तीन सेकंड लगते हैं। छोटी बातचीत करें और अलविदा कहें:
एजेंट **End call** को कॉल करता है, ElevenLabs सेशन `Complete` के साथ खत्म होता है और आपका फ़्लो Lex ब्लॉक से आगे बढ़ता है।
अगर आपने ट्रांसफ़र नियम जोड़ा है, तो इसके बजाय किसी इंसान के लिए कहें: एजेंट **Transfer to number** को कॉल करता है, सेशन
`Escalate` के साथ खत्म होता है और फ़्लो उस ब्रांच पर जाता है।

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

**Conversations** में बातचीत खोलें। इसका स्रोत Amazon Connect है और **Client data** टैब में सेशन को मिले
`amazon_connect_*` डायनेमिक वेरिएबल्स सूचीबद्ध होते हैं।

![Amazon Connect डायनेमिक वेरिएबल्स सूचीबद्ध करता Amazon Connect बातचीत का Client data टैब](/docs/_fern-img/ced3be27e366822341940e3fa5f96c2cd7376b1e63e86ace2dac31d778039417.webp)

#### AWS में फ़्लो लॉग देखें

लॉगिंग सक्षम होने पर, हर ब्लॉक इंस्टेंस के फ़्लो लॉग ग्रुप में एक एंट्री लिखता है। **Get
customer input** ब्लॉक ElevenLabs से मिला नतीजा रिकॉर्ड करता है:

```bash
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"`, या ट्रांसफ़र के बाद `"Results": "Escalate"` अपेक्षित है,
जिसके बाद उस ब्रांच के ब्लॉक होते हैं।

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

Amazon Connect हर सेशन के साथ कॉन्टैक्ट के सिस्टम एट्रिब्यूट भेजता है। ElevenLabs इन्हें,
सेशन आइडेंटिफ़ायर्स के साथ, डायनेमिक वेरिएबल्स के रूप में उपलब्ध कराता है:

| डायनेमिक वेरिएबल                                             | विवरण                                                              |
| ------------------------------------------------------------ | ------------------------------------------------------------------ |
| `system__caller_id`                                          | ग्राहक का फ़ोन नंबर (Amazon Connect का ग्राहक एंडपॉइंट)।           |
| `system__called_number`                                      | वह Amazon Connect फ़ोन नंबर जिस पर कॉन्टैक्ट है (सिस्टम एंडपॉइंट)। |
| `system__call_id`                                            | Amazon Connect कॉन्टैक्ट ID।                                       |
| `amazon_connect_system_attributes_channel`                   | कॉन्टैक्ट चैनल, जैसे `VOICE`।                                      |
| `amazon_connect_system_attributes_customer_endpoint_address` | Amazon Connect द्वारा भेजा गया ग्राहक एंडपॉइंट पता।                |
| `amazon_connect_system_attributes_system_endpoint_address`   | Amazon Connect द्वारा भेजा गया सिस्टम एंडपॉइंट पता।                |
| `amazon_connect_interaction_mode`                            | सहयोग मोड, जैसे `HANDOFF`।                                         |
| `amazon_connect_contact_id`                                  | Amazon Connect कॉन्टैक्ट ID।                                       |
| `amazon_connect_contact_arn`                                 | पूरा कॉन्टैक्ट ARN।                                                |
| `amazon_connect_context_id`                                  | A2A सेशन (कॉन्टेक्स्ट) 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** से सेट किए गए कस्टम कॉन्टैक्ट एट्रिब्यूट, Amazon Connect द्वारा अभी भेजे जाने वाले कॉन्टेक्स्ट का हिस्सा नहीं हैं, भले ही AI एजेंट की सुरक्षा प्रोफ़ाइल कॉन्टैक्ट
एट्रिब्यूट देख सकती हो; अगर AWS उन्हें शामिल करना शुरू करता है, तो वे उसी प्रीफ़िक्स के तहत अपने-आप दिखेंगे।
आप यह नहीं चुन सकते कि Amazon Connect कौन-सा कॉन्टैक्ट डेटा शेयर करे; AWS कॉन्टेक्स्ट का एक तय सेट भेजता है।

अतिरिक्त कॉन्टेक्स्ट भेजने के लिए,
[कन्वर्सेशन इनिशिएशन वेबहुक](/docs/hi/eleven-agents/customization/personalization#conversation-initiation-webhooks) इस्तेमाल करें।
Amazon Connect सेशन के लिए एजेंट के बोलने से पहले वेबहुक कॉल होता है, जिसमें `caller_id` ग्राहक के नंबर पर,
`called_number` Amazon Connect नंबर पर और `call_id` Amazon Connect कॉन्टैक्ट ID पर सेट होता है। इसलिए आपके फ़्लो का Lambda,
कॉन्टैक्ट ID के आधार पर कॉन्टैक्ट एट्रिब्यूट स्टोर कर सकता है और वेबहुक उन्हें डायनेमिक वेरिएबल्स व कॉन्फ़िगरेशन ओवरराइड्स के रूप में वापस कर सकता है।

## किसी मानव एजेंट को ट्रांसफ़र करना

एजेंट को `amazon_connect` ट्रांसफ़र नियम के साथ **Transfer to number** सिस्टम टूल दें, जैसा कि
[ElevenLabs कॉन्फ़िगर करें](#configure-elevenlabs) में दिखाया गया है। नियम की शर्त पूरी होने पर एजेंट
टूल को कॉल करता है और ElevenLabs `Escalate` परिणाम और एजेंट द्वारा बताए गए कारण के साथ सेशन समाप्त कर देता है। फिर आपके फ़्लो की `Escalate` ब्रांच **Set working queue** और
**Transfer to queue** के ज़रिए कॉन्टैक्ट को संभालती है। नियम में कोई डेस्टिनेशन नहीं होता, इसलिए क्यू को एजेंट नहीं, फ़्लो चुनता है; क्यू ट्रीटमेंट, व्हिस्पर फ़्लो और एजेंट चयन Amazon Connect में ही रहते हैं।

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

### मानव एजेंट को सारांश देना

Amazon Connect आपके फ़्लो को केवल परिणाम दिखाता है: `$.Lex.SessionAttributes.Tool` (और Lex
इंटेंट नाम) में `Escalate` होता है, और ElevenLabs सेशन से ट्रांसफ़र कारण समेत कोई और जानकारी फ़्लो तक नहीं पहुँचती। कॉल लेने वाले व्यक्ति को जानकारी देने के लिए, सारांश को स्वयं कॉन्टैक्ट पर स्टोर करें और एजेंट व्हिस्पर फ़्लो से उसे पढ़वाएं:

1. ऐसा एंडपॉइंट एक्सपोज़ करें जो Amazon Connect की `UpdateContactAttributes` API को कॉल करे। HTTP API के पीछे एक न्यूनतम Lambda काफ़ी है; कॉलर को इंस्टेंस के कॉन्टैक्ट्स पर `connect:UpdateContactAttributes` की अनुमति होनी चाहिए:

   ```python
   import json, os, boto3

   connect = boto3.client("connect")

   def handler(event, _context):
       if (event.get("headers") or {}).get("x-shared-secret") != os.environ["SHARED_SECRET"]:
           return {"statusCode": 401, "body": ""}
       body = json.loads(event.get("body") or "{}")
       connect.update_contact_attributes(
           InstanceId=os.environ["INSTANCE_ID"],
           InitialContactId=body["contact_id"],
           Attributes={"handoff_summary": body["summary"][:1000]},
       )
       return {"statusCode": 200, "body": json.dumps({"ok": True})}
   ```

2. एजेंट को एक [वेबहुक टूल](/docs/hi/eleven-agents/customization/tools/webhook-tools) दें जो उस एंडपॉइंट पर `POST` करे, जिसमें `contact_id` को `amazon_connect_contact_id` डायनामिक वेरिएबल से भरा जाए और `summary` मॉडल लिखे। साझा सीक्रेट को वर्कस्पेस सीक्रेट में रखें और उसे रिक्वेस्ट हेडर के रूप में भेजें। सिस्टम प्रॉम्प्ट में एजेंट को पहले यह टूल कॉल करने और उसके रिटर्न होने के बाद ही **Transfer to number** कॉल करने के लिए कहें; जो मॉडल एक ही टर्न में दोनों कॉल करता है, वह सारांश और ट्रांसफ़र के बीच रेस कंडीशन बनाता है। इस निर्देश के साथ, हमारे टेस्ट में एजेंट की रिक्वेस्ट के लगभग एक सेकंड बाद एट्रिब्यूट कॉन्टैक्ट पर था, Amazon Connect के फ़्लो को फिर से शुरू करने से तीन सेकंड पहले।

3. कॉन्टैक्ट फ़्लो की `Escalate` ब्रांच में **Transfer to
   queue** से पहले एक **Set whisper flow** ब्लॉक जोड़ें, जो ऐसे एजेंट व्हिस्पर फ़्लो की ओर इंगित करे जिसका **Play prompt**
   `$.Attributes.handoff_summary` पढ़ता हो। Amazon Connect इसे मानव एजेंट को सुनाता है, जबकि कॉलर क्यू ट्रीटमेंट सुनता है, फिर दोनों को जोड़ देता है। फ़्लो के किसी बाद के ब्लॉक में `handoff_summary` को दोबारा सेट न करें: वहाँ खाली वैल्यू एंडपॉइंट द्वारा लिखी वैल्यू को बदल देती है।

यही एट्रिब्यूट रूटिंग निर्णयों के लिए **Check contact attributes** ब्लॉक में भी उपलब्ध है।
पोस्ट-कॉल वेबहुक फ़्लो के आगे बढ़ जाने के बाद ट्रिगर होता है, इसलिए यह रूटिंग निर्णयों के बजाय CRM अपडेट के लिए उपयुक्त है।

## ट्रेसेस

Amazon Connect
[हर कोलैबोरेशन के लिए बाहरी एजेंट्स से ट्रेस डेटा भेजने की अपेक्षा करता है](https://docs.aws.amazon.com/connect/latest/adminguide/a2a-trace-enforcement.html)।
जब Amazon Connect सेशन पर ट्रेसिंग को सब्सक्राइब करता है, तो ElevenLabs हर एजेंट टर्न के लिए एक OpenTelemetry ट्रेस भेजता है, जिसमें कॉलर का ट्रांसक्रिप्ट, एजेंट का जवाब, हर टूल कॉल का परिणाम, और हर स्पैन का समय शामिल होता है। Amazon Connect इन ट्रेसेस को कॉन्टैक्ट के साथ स्टोर करता है; इन्हें देखने का तरीका जानने के लिए
[AI एजेंट ट्रेसेस](https://docs.aws.amazon.com/connect/latest/adminguide/ai-agent-traces.html) देखें। इन ट्रेसेस में ट्रांसक्रिप्ट और टूल परिणाम Amazon Connect में आपके बाकी कॉन्टैक्ट डेटा जैसी ही रिडैक्शन सेटिंग्स के अधीन होते हैं, इसलिए इंटीग्रेशन सक्षम करने से पहले अपनी डेटा-हैंडलिंग आवश्यकताओं की समीक्षा करें।
[पोस्ट-कॉल वेबहुक्स](/docs/hi/eleven-agents/workflows/post-call-webhooks) की तरह, ट्रेसेस आपके अपने सिस्टम्स तक पहुँचाए जाते हैं: [ज़ीरो रिटेंशन मोड](/docs/hi/eleven-agents/customization/privacy/zrm) में एजेंट भी इन्हें भेजते हैं, क्योंकि ज़ीरो रिटेंशन यह नियंत्रित करता है कि 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 कॉल से कोई फ़ोन नंबर या SIP URI डायल नहीं कर सकता, और एस्केलेट किए गए कॉलर को किस क्यू में भेजना है, यह फ़्लो तय करता है।
* डेटा कलेक्शन के परिणाम फ़्लो में वापस नहीं भेजे जाते, और Amazon Connect तय करता है कि वह कौन-सा कॉन्टैक्ट डेटा शेयर करेगा। अतिरिक्त कॉन्टेक्स्ट के लिए `amazon_connect_contact_id` से जुड़ा कन्वर्सेशन इनिशिएशन वेबहुक, रूटिंग डेटा के लिए `UpdateContactAttributes` कॉल करने वाला वेबहुक टूल, और बाकी सभी चीज़ों के लिए पोस्ट-कॉल वेबहुक इस्तेमाल करें।
* `system__override_first_message` जैसे कॉन्फ़िगरेशन ओवरराइड्स फ़्लो से पास नहीं किए जा सकते। इसके बजाय उन्हें कन्वर्सेशन इनिशिएशन वेबहुक से रिटर्न करें।
* वॉइस सेशंस के लिए तुरंत हैंड-ऑफ़ ज़रूरी है। Amazon Connect चैट चैनल, टेक्स्ट स्ट्रीमिंग और बैकग्राउंड (`delegateAgentConfiguration`) कोलैबोरेशन समर्थित नहीं हैं।
* Amazon Connect को भेजे गए ट्रेसेस में कॉलर का ट्रांसक्रिप्ट, एजेंट के जवाब, उनके परिणामों के साथ टूल कॉल्स और टाइमिंग शामिल होते हैं। टूल कॉल पैरामीटर्स शामिल नहीं होते।
* Amazon Connect का थर्ड-पार्टी एजेंट सपोर्ट केवल वहीं उपलब्ध है जहाँ AWS ने उसे सक्षम किया है, और इस पर अतिरिक्त AWS शुल्क लग सकता है।

## समस्या निवारण

#### फ़्लो 'A2A WebSocket upgrade ... failed (HTTP 403)' के साथ विफल हो जाता है

* ElevenLabs तक कोई रिक्वेस्ट पहुँचने से पहले AWS के अंदर त्रुटि होती है। Lex सर्विस रोल से `wisdom:SendMessage` पर `AccessDenied` के लिए CloudTrail देखें: बॉट से जुड़े रोल को असिस्टेंट और उसके सेशंस पर `wisdom:CreateSession`, `wisdom:GetAssistant`, `wisdom:SendMessage`, और `wisdom:GetNextMessage` की आवश्यकता होती है।
* पुष्टि करें कि सुरक्षा प्रोफ़ाइल एप्लिकेशन की अनुमति देती है और फ़्लो द्वारा संदर्भित प्रकाशित ऑर्केस्ट्रेशन एजेंट वर्शन से जुड़ी है।
* पुष्टि करें कि सीक्रेट की KMS कुंजी और रिसोर्स पॉलिसी `connect.amazonaws.com` को एक्सेस देती हैं।

#### फ़्लो 'the hand-off to the target agent could not be completed' के साथ विफल हो जाता है

* Amazon Connect WebSocket कनेक्शन बनने के लिए लगभग 20 सेकंड देता है। पुष्टि करें कि `AccessUrl` AWS से पहुँचा जा सकता है: `wss://`, सही एजेंट ID, और रास्ते में कोई नेटवर्क अनुमति-सूची नहीं।
* अगर आप कनेक्शन को अपने इंफ्रास्ट्रक्चर से प्रॉक्सी करते हैं, तो उस प्रॉक्सी को वार्म रखें। कोल्ड सर्वरलेस इंस्टेंस को हैंड-ऑफ़ विंडो से ज़्यादा समय लग सकता है, और ElevenLabs के रिक्वेस्ट देखने से पहले ही Amazon Connect हार मान लेता है।

#### Lex ब्लॉक अपनी Error ब्रांच लेता है और कॉलर को कुछ सुनाई नहीं देता

* पुष्टि करें कि **Get customer input** ब्लॉक पर दोनों सेशन एट्रिब्यूट्स सेट हैं:
  `x-amz-lex:q-in-connect:ai-agent-arn` में प्रकाशित, वर्शन वाला एजेंट ARN और
  `x-amz-lex:qic-audio-passthrough` को `true` पर सेट करें।
* पुष्टि करें कि एप्लिकेशन की अनुमति देने वाली सुरक्षा प्रोफ़ाइल उस एजेंट वर्शन से जुड़ी है।
* फ़्लो लॉग में ब्लॉक की एंट्री पढ़ें; इसमें 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 ऊपर सूचीबद्ध कॉन्टैक्ट सिस्टम एट्रिब्यूट्स और आइडेंटिफ़ायर्स देता है। फ़्लो में सेट किए गए कस्टम कॉन्टैक्ट एट्रिब्यूट्स एजेंट तक नहीं पहुँचते; उन्हें इसके बजाय कन्वर्सेशन इनिशिएशन वेबहुक के ज़रिए पास करें। यदि एजेंट का पहला मैसेज या प्रॉम्प्ट ऐसे वेरिएबल को संदर्भित करता है जो कभी दिया ही नहीं गया, तो सेशन स्टार्टअप पर विफल हो जाता है।