Amazon Connect
Transférez les contacts vocaux Amazon Connect à ElevenAgents grâce à l’intégration native d’agent IA tiers, A2A, d’Amazon Connect.
L’intégration Amazon Connect est disponible de manière limitée. La prise en charge des agents IA tiers d’Amazon Connect doit être activée pour votre compte AWS, et le transport ElevenLabs est activé par Workspace. Contactez votre représentant ElevenLabs avant d’acheminer du trafic client.
Vue d’ensemble
L’intégration Amazon Connect connecte directement un flux de contact Amazon Connect à un agent dans ElevenAgents via le protocole d’agent IA tiers d’Amazon Connect, une extension du protocole A2A ouvert. Amazon Connect gère la téléphonie, le routage et la file d’attente ; ElevenAgents gère la conversation. Aucun trunk SIP, numéro Twilio ou middleware n’est requis. AWS documente cette fonctionnalité sous Collaboration agent à agent ; ce guide couvre les spécificités d’ElevenLabs ainsi que les étapes AWS nécessaires pour accéder à un agent ElevenLabs.
Le même flux sert les appels entrants et les contacts sortants démarrés avec StartOutboundVoiceContact.
Lorsque l’agent ElevenLabs termine, Amazon Connect poursuit votre flux de contact et crée une branche selon le
résultat reçu.
Fonctionnement de l’intégration
- Un flux de contact atteint un bloc Get customer input qui appelle un bot Amazon Lex V2 avec l’intention
AMAZON.QInConnectIntent. - L’agent IA d’orchestration d’Amazon Connect transfère immédiatement la conversation à l’application tierce que vous avez enregistrée pour ElevenLabs.
- Amazon Connect ouvre un WebSocket vers le point de terminaison ElevenLabs dans
AccessUrlde l’application, en s’authentifiant avec la clé API stockée dans AWS Secrets Manager. - Amazon Connect signale que le canal de l’appelant est actif, puis Amazon Connect et ElevenLabs échangent de l’audio PCM linéaire 16 bits sous forme de messages A2A. Amazon Connect propose la fréquence d’échantillonnage et ElevenLabs l’adopte, aucun changement de format audio n’est donc nécessaire côté agent.
- Lorsque l’agent met fin à l’appel ou transfère l’appelant à un humain, ElevenLabs termine la session avec
un résultat
CompleteouEscalate, et le flux se poursuit depuis le bloc Lex ; consultez Transférer à un humain.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
- Une instance Amazon Connect au niveau Connect Customer, avec la prise en charge des agents IA tiers activée pour le compte et la région.
- Un assistant Amazon Q in Connect associé à l’instance.
- Des autorisations AWS pour créer des clés KMS, des secrets Secrets Manager, des applications AppIntegrations, des profils de sécurité Connect, des agents IA Amazon Q in Connect, des bots Lex V2 et des flux de contact.
- Un Workspace ElevenLabs avec le transport Amazon Connect activé.
- Un agent ElevenLabs et une clé API dédiée.
- AWS CLI v2 et awscurl (
pip install awscurl) pour les appels dont les formats de requête ne sont pas encore disponibles dans les versions publiées de la CLI.
Conservez chaque ressource AWS dans le même compte et la même région que l’instance Amazon Connect. Les étapes
ci-dessous utilisent l’AWS CLI lorsqu’elle prend en charge l’appel et awscurl, une requête HTTP signée SigV4, lorsqu’elle
ne le prend pas en charge. Elles suivent la procédure AWS Configurer la collaboration avec un agent IA
externe et ajoutent les
valeurs spécifiques à ElevenLabs.
Configurer ElevenLabs
Créer ou sélectionner un agent
Créez l’agent dans ElevenAgents. Donnez-lui un premier message s’il doit parler dès que le transfert est terminé ; Amazon Connect ne diffuse aucun son pendant la session.
Activer End call
Dans Agent → Tools → System tools, activez End call afin que l’agent puisse terminer la session lorsque
la demande de l’appelant est résolue. Amazon Connect poursuit alors votre flux avec le résultat Complete.
Ajouter une règle de transfert Amazon Connect (facultatif)
Pour permettre à l’agent de transférer l’appelant à un humain, attribuez-lui l’outil système Transfer to number avec une
règle de transfert dont la configuration du fournisseur est amazon_connect. La règle n’a pas de destination : la
session se termine avec le résultat Escalate et votre flux de contact choisit la file d’attente. Les règles de transfert sont
configurées via l’API. Ajoutez l’outil avec un PATCH sur l’agent :
Envoyez l’objet built_in_tools complet de l’agent, y compris les outils qu’il possède déjà, tels que end_call.
L’agent sélectionne la règle selon sa condition ; l’option qu’il renvoie est le jeton fixe
amazon_connect, une règle Amazon Connect par outil suffit donc. Les numéros de téléphone et URI SIP
configurés pour d’autres fournisseurs ne sont pas proposés lors des appels Amazon Connect.
Les règles de transfert sont un paramètre géré par API. Configurez et mettez à jour l’outil Transfer to number d’un agent qui les utilise via l’API, comme ci-dessus ; l’éditeur d’outils du Dashboard fonctionne avec la liste de transferts par numéro.
Créer une clé API dédiée
Créez une clé API dans le même Workspace que l’agent et limitez sa portée à ElevenAgents. Vous la stockerez dans AWS Secrets Manager dans la section suivante ; ne la collez nulle part ailleurs.
Noter l'URL WebSocket
Amazon Connect se connecte à une URL contenant l’ID de votre agent :
Si votre compte ElevenLabs se trouve dans un environnement de résidence isolé, remplacez <region> par votre
code de région. Consultez la résidence des données pour connaître les
régions disponibles.
Enregistrez l’application ElevenLabs dans AWS
Tous les éléments de cette section sont des appels API. Définissez une seule fois les valeurs que vous réutiliserez :
Créer un assistant Amazon Q in Connect
Ignorez cette étape si l’instance dispose déjà d’un assistant. Sinon, créez-en un et associez-le à l’instance :
Notez l’ID et l’ARN de l’assistant.
Stocker la clé API
Amazon Connect lit la clé depuis Secrets Manager avec son propre principal de service. Le secret
doit donc être chiffré avec une clé KMS gérée par le client qui accorde à connect.amazonaws.com
l’accès au déchiffrement. La clé par défaut aws/secretsmanager ne peut pas être utilisée.
Enregistrez la clé API ElevenLabs dans un fichier afin qu’elle n’apparaisse jamais dans l’historique de votre terminal, puis créez la clé et le secret :
Accordez à Amazon Connect un accès en lecture au secret :

Créer l’application tierce
Enregistrez l’URL WebSocket d’ElevenLabs comme application AppIntegrations de type A2A_SERVER.
AuthConfig est obligatoire pour ce type.
La réponse contient l’Id et l’Arn de l’application. Exportez-les sous les noms APPLICATION_ID et
APPLICATION_ARN. La console Amazon Connect ne répertorie pas les applications A2A_SERVER. Vérifiez
avec l’API :
Autoriser l’application dans un profil de sécurité
Le profil de sécurité associé à l’agent IA d’orchestration doit répertorier l’application parmi ses agents IA autorisés, sans quoi le transfert échoue à l’exécution.
Le site d’administration affiche le profil et ses autorisations, mais pas les agents IA autorisés, qui sont visibles uniquement via l’API.

Créer et publier l’agent IA d’orchestration
L’agent d’orchestration transmet immédiatement chaque conversation vocale à l’application, avec le
streaming audio activé. Les sessions vocales exigent un transfert immédiat. Le streaming texte
(audioStreamingEnabled défini sur false) et delegateAgentConfiguration ne sont pas pris en charge
par ElevenLabs. Un orchestrateur de transfert immédiat audio doit également déclarer l’outil réservé
Complete de type RETURN_TO_CONTROL dans toolConfigurations, sans quoi la requête de création échoue avec
An audio frontline orchestrator (with an audio immediate handoff) must configure the reserved 'Complete' RETURN_TO_CONTROL tool.
La publication renvoie un ARN versionné (<AI_AGENT_ARN>:1), auquel le flux de contact fait référence. Associez
le profil de sécurité à l’agent non versionné et à l’agent versionné :

Créez le flux de contact
Créer le bot Lex
- Créez un bot Lex V2 dont la seule intention est
AMAZON.QInConnectIntent, intégré à votre ARN d’assistant. N’ajoutez aucune autre intention. - Activez la synthèse vocale bidirectionnelle dans la locale du bot. Le streaming audio bidirectionnel fonctionne uniquement avec les bots Sonic de synthèse vocale bidirectionnelle.
- Autorisez le rôle IAM du bot à utiliser l’assistant. Sans cela, le transfert échoue dans AWS avec
HTTP 403avant qu’une requête n’atteigne ElevenLabs. Associez une politique telle que :
- Générez le bot, créez une version et un alias, puis associez l’alias à l’instance :

Ajouter l’assistant et le bloc Lex
Dans le concepteur de flux, ajoutez ces blocs dans l’ordre :
- Définir le comportement de journalisation : activé. Le journal du flux vous permet de vérifier le transfert ci-dessous.
- Connecter l’assistant : sélectionnez votre assistant Amazon Q in Connect.
- Obtenir les données du client : dans l’onglet Amazon Lex, choisissez Saisir un ARN et collez l’ARN de l’alias du bot. Laissez l’invite de synthèse vocale sous la forme d’un simple espace afin qu’Amazon Connect ne lise rien avant le transfert. Sous Attributs de session, ajoutez deux attributs définis manuellement :

x-amz-lex:qic-audio-passthrough active le chemin vocal tiers pendant la période de prélancement d’AWS.
AWS indique que l’attribut ne sera plus nécessaire une fois la fonctionnalité disponible publiquement ; le conserver
est sans conséquence.
Créer une branche selon le résultat
Amazon Connect transmet le résultat ElevenLabs au flux sous la forme de l’attribut
$.Lex.SessionAttributes.Tool. Ajoutez un bloc Vérifier les attributs de contact après le bloc Lex, définissez
Espace de noms sur Lex, Clé sur Attributs de session et Clé d’attribut de session sur Tool, puis ajoutez une
condition Est égal à par résultat et dirigez Aucune correspondance vers une invite d’erreur :

Amazon Connect écrit le résultat avec une majuscule initiale (Escalate, Complete), et non sous la forme du type
de fin en majuscules envoyé sur le réseau. Ces deux conditions suffisent donc au bloc. Une session qui
échoue après le transfert se termine avec le type COMPLETE_WITH_ERROR ; le bloc Lex emprunte alors sa sortie
Erreur, ou la comparaison aboutit à Aucune correspondance. Dirigez les deux vers l’invite d’erreur. Dans un flux
exporté, la sortie Par défaut du bloc Lex correspond à sa transition NoMatchingCondition ; assurez-vous qu’elle mène
au bloc de comparaison plutôt qu’à un message d’erreur.

Tester l’intégration
Passer un appel
Appelez le numéro. Le premier message de l’agent est lu quelques secondes après que le flux atteint le bloc Lex ;
le transfert au sein d’AWS prend environ trois secondes avant qu’ElevenLabs ne soit contacté. Tenez une courte
conversation et dites au revoir : l’agent appelle Mettre fin à l’appel, la session ElevenLabs se termine par
Complete et votre flux se poursuit depuis le bloc Lex. Si vous avez ajouté une règle de transfert, demandez plutôt
à parler à un humain : l’agent appelle Transférer vers un numéro, la session se termine par Escalate et le
flux emprunte cette branche.
Vérifier la conversation dans ElevenLabs
Ouvrez la conversation dans Conversations. Sa source est Amazon Connect et l’onglet Données client
répertorie les variables dynamiques amazon_connect_* reçues par la session.

Vérifier le journal du flux dans AWS
Lorsque la journalisation est activée, chaque bloc écrit une entrée dans le groupe de journaux de flux de l’instance. Le bloc Obtenir les données du client enregistre le résultat reçu d’ElevenLabs :
Pour le bloc Lex, vous devriez voir "Results": "Complete", ou "Results": "Escalate" après un transfert,
suivi des blocs de cette branche.
Variables dynamiques
Amazon Connect envoie les attributs système du contact à chaque session. ElevenLabs les expose, avec les identifiants de session, sous forme de variables dynamiques :
Dans les sessions Amazon Connect, system__caller_id correspond toujours au client et system__called_number
correspond toujours au numéro Amazon Connect, pour les contacts entrants comme sortants.
Tous les autres membres du contexte de contact envoyés par Amazon Connect sont exposés de la même manière : les noms
imbriqués sont joints par des traits de soulignement et convertis en snake case sous le préfixe amazon_connect_.
Les attributs de contact personnalisés définis dans votre flux avec Définir les attributs de contact ne font pas partie
actuellement du contexte envoyé par Amazon Connect, même lorsque le profil de sécurité de l’agent IA peut consulter les
attributs de contact. Si AWS commence à les inclure, ils apparaîtront automatiquement sous le même préfixe. Vous ne
pouvez pas choisir les données de contact partagées par Amazon Connect ; AWS transmet un ensemble de contexte fixe.
Pour transmettre du contexte supplémentaire, utilisez le
webhook de démarrage de conversation.
Pour les sessions Amazon Connect, le webhook est appelé avant que l’agent ne parle, avec caller_id défini sur le
numéro du client, called_number défini sur le numéro Amazon Connect et call_id défini sur l’ID de contact Amazon Connect.
Une Lambda dans votre flux peut donc stocker des attributs de contact indexés par ID de contact, et le webhook peut les
renvoyer comme variables dynamiques et remplacements de configuration.
Transférer vers un humain
Donnez à l’agent l’outil système Transférer vers un numéro avec une règle de transfert amazon_connect, comme
indiqué dans Configurer ElevenLabs. Lorsque la condition de la règle est remplie, l’agent
appelle l’outil et ElevenLabs termine la session avec le résultat Escalate et la raison fournie par l’agent. La branche
Escalate de votre flux gère alors le contact avec Définir la file de travail et Transférer vers la file. La règle
ne comporte aucune destination : la file est choisie dans le flux, et non par l’agent. Le traitement de file, les flux de
chuchotement et la sélection des agents restent dans Amazon Connect.
L’outil Mettre fin à l’appel produit un résultat Complete. L’analyse après appel et le webhook après appel
s’exécutent normalement après l’un ou l’autre résultat.
Fournir un résumé à l’agent humain
Amazon Connect expose uniquement le résultat à votre flux : $.Lex.SessionAttributes.Tool (ainsi que le nom de l’intention Lex)
contient Escalate, et aucune autre information de la session ElevenLabs, y compris la raison du transfert, n’atteint le
flux. Pour informer l’humain qui prend l’appel, stockez vous-même le résumé sur le contact et laissez un flux de chuchotement
à l’agent le lire :
-
Exposez un point de terminaison qui appelle l’API
UpdateContactAttributesd’Amazon Connect. Une Lambda minimale derrière une API HTTP suffit ; l’appelant doit être autorisé à utiliserconnect:UpdateContactAttributessur les contacts de l’instance : -
Donnez à l’agent un outil webhook qui effectue une requête
POSTvers ce point de terminaison aveccontact_idrenseigné à partir de la variable dynamiqueamazon_connect_contact_idet unsummaryrédigé par le modèle. Conservez le secret partagé dans un secret du Workspace et envoyez-le comme en-tête de requête. Dans le prompt système, indiquez à l’agent d’appeler d’abord cet outil et d’appeler Transférer vers un numéro seulement après son retour ; un modèle qui émet les deux appels dans le même tour met le transfert en concurrence avec le résumé. Avec cette instruction, lors de nos tests, l’attribut était présent sur le contact environ une seconde après la requête de l’agent, soit trois secondes avant qu’Amazon Connect ne reprenne le flux. -
Dans la branche
Escalatedu flux de contact, ajoutez un bloc Définir le flux de chuchotement avant Transférer vers la file , qui pointe vers un flux de chuchotement à l’agent dont l’ Invite de lecture lit$.Attributes.handoff_summary. Amazon Connect le lit à l’agent humain pendant que l’appelant entend le traitement de file, puis met les deux interlocuteurs en relation. Ne définissez pas à nouveauhandoff_summarydans un bloc ultérieur du flux : une valeur vide remplacerait celle écrite par le point de terminaison.
Le même attribut est disponible dans un bloc Vérifier les attributs de contact pour prendre des décisions de routage. Le webhook après appel se déclenche après que le flux a déjà continué ; il convient donc aux mises à jour CRM plutôt qu’aux décisions de routage.
Traces
Amazon Connect exige que les agents externes envoient des données de trace pour chaque collaboration. Lorsqu’Amazon Connect s’abonne au traçage d’une session, ElevenLabs envoie une trace OpenTelemetry pour chaque tour de l’agent, contenant la transcription de l’appelant, la réponse de l’agent, chaque appel d’outil avec son résultat et le temps par plage. Amazon Connect stocke ces traces avec le contact ; consultez Traces des agents IA pour savoir comment les afficher. Les transcriptions et résultats d’outils de ces traces sont soumis aux mêmes paramètres de masquage que le reste de vos données de contact dans Amazon Connect. Vérifiez donc vos exigences de traitement des données avant d’activer l’intégration. Comme les webhooks après appel, les traces sont transmises à vos propres systèmes : les agents en mode zéro rétention les envoient toujours, car la rétention zéro régit ce qu’ElevenLabs stocke, et non ce que votre instance Amazon Connect reçoit.
Audio
Amazon Connect propose du PCM linéaire mono 16 bits à 8, 16 ou 24 kHz pour chaque session, et ElevenLabs accepte cette proposition. Les formats audio configurés pour l’agent ne sont donc pas utilisés pour les sessions Amazon Connect. L’interruption par l’appelant est détectée par ElevenLabs et signalée à Amazon Connect afin que la lecture mise en mémoire tampon soit immédiatement interrompue. Les entrées au clavier collectées par Amazon Connect sont transmises à l’agent sous forme de chiffres DTMF. Le marqueur de silence d’Amazon Connect est ignoré ; utilisez le délai d’expiration du tour de l’agent pour relancer un appelant silencieux.
Limites et fonctionnalités non prises en charge
- Les outils client et l’outil système Lire une tonalité tactile du clavier ne sont pas pris en charge. Transférer vers un numéro fonctionne uniquement avec une règle de transfert Amazon Connect : l’agent ne peut pas composer un numéro de téléphone ou un URI SIP depuis un appel Amazon Connect, et le flux détermine la file qui reçoit un appelant transféré.
- Les résultats de collecte de données ne sont pas renvoyés au flux, et Amazon Connect détermine les données de contact
qu’il partage. Utilisez le webhook de démarrage de conversation indexé par
amazon_connect_contact_idpour obtenir du contexte supplémentaire, un outil webhook qui appelleUpdateContactAttributespour les données de routage, et le webhook après appel pour tout le reste. - Les remplacements de configuration tels que
system__override_first_messagene peuvent pas être transmis depuis le flux. Renvoyez-les plutôt depuis le webhook de démarrage de conversation. - Les sessions vocales exigent un transfert immédiat. Le canal de chat Amazon Connect, le streaming texte et la collaboration
en arrière-plan (
delegateAgentConfiguration) ne sont pas pris en charge. - Les traces envoyées à Amazon Connect couvrent la transcription de l’appelant, les réponses de l’agent, les appels d’outils avec leurs résultats et le timing. Les paramètres d’appel d’outil ne sont pas inclus.
- La prise en charge des agents tiers par Amazon Connect est disponible uniquement là où AWS l’a activée et peut entraîner des frais AWS supplémentaires.
Résolution des problèmes
Le flux échoue avec « A2A WebSocket upgrade ... failed (HTTP 403) »
- L’erreur se produit dans AWS avant qu’une requête n’atteigne ElevenLabs. Consultez CloudTrail pour détecter
AccessDeniedsurwisdom:SendMessagedepuis le rôle de service Lex : le rôle associé au bot nécessite les autorisationswisdom:CreateSession,wisdom:GetAssistant,wisdom:SendMessageetwisdom:GetNextMessagesur l’assistant et ses sessions. - Vérifiez que le profil de sécurité autorise l’application et qu’il est associé à la version publiée de l’agent d’orchestration référencée par le flux.
- Vérifiez que la clé KMS et la stratégie de ressources du secret accordent l’accès à
connect.amazonaws.com.
Le flux échoue avec « the hand-off to the target agent could not be completed »
- Amazon Connect laisse environ 20 secondes à la connexion WebSocket pour s’établir. Vérifiez que l’
AccessUrlest accessible depuis AWS :wss://, le bon ID d’agent et aucune liste d’autorisation réseau ne doit bloquer l’accès. - Si vous faites transiter la connexion via votre propre infrastructure, maintenez ce proxy actif. Une instance serverless inactive peut prendre plus de temps que la fenêtre de transfert, et Amazon Connect abandonne avant même qu’ElevenLabs ne reçoive la requête.
Le bloc Lex emprunte sa branche Error et l’appelant n’entend rien
- Vérifiez que les deux attributs de session sont définis dans le bloc Get customer input :
x-amz-lex:q-in-connect:ai-agent-arnavec l’ARN publié et versionné de l’agent, etx-amz-lex:qic-audio-passthroughdéfini surtrue. - Vérifiez que le profil de sécurité qui autorise l’application est associé à cette version de l’agent.
- Consultez l’entrée du bloc dans le journal du flux : elle contient l’erreur rencontrée par Amazon Connect.
La session se termine immédiatement après la connexion
- Vérifiez que l’
AccessUrlutilisewss://, contient le bon ID d’agent et pointe vers la région où se trouve votre Workspace. - Vérifiez que la clé API est active, appartient au Workspace de l’agent et ne comporte aucune restriction IP.
- Vérifiez que le transport Amazon Connect est activé pour votre Workspace.
L’appelant entend le message d’erreur du flux une fois l’agent terminé
Dans le bloc Lex, assurez-vous que la sortie Default mène au bloc qui compare
$.Lex.SessionAttributes.Tool, et effectuez la comparaison avec les valeurs en casse de titre Escalate et
Complete.
L’agent ne parle jamais et la session se termine après quelques secondes
Vérifiez que le collaborateur est configuré avec audioStreamingEnabled défini sur true. Avec le streaming
texte, Amazon Connect envoie des tours de parole textuels et attend des réponses textuelles, ce qu’ElevenLabs ne
prend pas en charge ; les journaux ElevenLabs affichent INIT_SESSION carries no audio configuration.
Des variables dynamiques sont absentes
Amazon Connect fournit les attributs système et les identifiants du contact listés ci-dessus. Les attributs de contact personnalisés définis dans le flux n’atteignent pas l’agent ; transmettez-les plutôt via le webhook d’initialisation de la conversation. Si le premier message ou le prompt de l’agent fait référence à une variable qui n’est jamais fournie, la session échoue au démarrage.