Détection de fin d’appel
Deux mécanismes indépendants pour mettre fin à un appel côté agent : l’outil end_call pour le jugement du modèle, et la détection déterministe par trigger_phrases et par silence.
Un agent vocal Audact peut mettre fin à un appel de lui-même. Il existe deux mécanismes
indépendants, configurés à des endroits différents. Tous deux aboutissent à la même
chorégraphie de clôture (contrôle de la mention de transparence → idempotence → phrase de clôture
facultative → raccrochage → preuves + webhook call_end_detected), de sorte qu’un
raccrochage initié par l’agent a exactement les mêmes effets de bord, quelle que soit la façon dont il a été
déclenché.
1. L’outil end_call (jugement du modèle)
Lorsque vous associez un outil end_call à un agent, le modèle se voit proposer une
fonction qu’il peut appeler lorsqu’il juge la conversation terminée (l’appelant
a dit au revoir, la tâche est résolue, il n’y a plus rien à faire).
- Ce que voit le modèle. Un outil d’appel de fonction dont le nom est celui que vous
avez donné à l’outil lorsque vous l’avez associé — il ne s’appelle pas automatiquement
end_callnihangup.end_call(provider) ethangup(provider-tool) sont des identifiants internes d’Audact qui lient l’outil au comportement de raccrochage ; le LLM ne voit jamais que lenameconfiguré de votre outil et sa description. Si le prompt de votre agent désigne l’outil par son nom, utilisez le nom que vous avez configuré. - Arguments. L’outil prend un unique
reasonfacultatif en texte libre (la propre note du modèle, par ex. « l’appelant a dit au revoir ») ; il n’est jamais obligatoire et il est indiqué au modèle de ne jamais le demander à l’appelant. - Quand il se déclenche. Entièrement à la discrétion du modèle. La description de l’outil lui indique de ne l’appeler que lorsque la conversation est terminée et jamais avant que la mention de transparence obligatoire n’ait été délivrée — et le contrôle de la mention de transparence décrit plus bas l’impose quoi que fasse le modèle.
- Cet outil est indépendant de l’objet de configuration
end_callci-dessous : il fonctionne même si aucuntrigger_phrasesn’est configuré.
2. La configuration end_call (détection déterministe)
L’objet end_call de la configuration d’un agent met fin à l’appel sans le
modèle, en surveillant les paroles de l’appelant :
trigger_phrases— des formules d’au revoir recherchées à la fin de l’énoncé de l’appelant (position terminale). « goodbye » à la fin d’un tour de parole met fin à l’appel ; « goodbye and one more thing… » non. La correspondance ne tient pas compte de la casse, ignore la ponctuation finale et prévoit un repli sans signes diacritiques.silence— met fin à l’appel lorsque l’appelant se tait, en relançant d’abord jusqu’àmax_repromptsfois à chaquewindow_msde silence.
Configuration minimale pour l’activer
Un objet end_call simplement non vide n’est pas suffisant. La détection déterministe
n’a d’effet que lorsque :
trigger_phrasescontient au moins une formule pour la langue de l’appel (active la détection des formules d’au revoir), et/ousilence.window_msest supérieur à 0 (active le délai d’expiration du silence).
closing_line seule ne fait rien — elle n’est prononcée qu’une fois qu’un déclencheur (ou
l’outil end_call) s’est activé. L’objet nul ou vide signifie que la politique déterministe
est désactivée.
trigger_phrases recommandées pour un réceptionniste (en) : goodbye, bye,
bye bye, that's all, that's everything, that will be all,
nothing else, no that's it, thank you goodbye.
3. Clés de langue
Toutes les tables indexées par langue de end_call (trigger_phrases, closing_line,
silence.reprompt_text) utilisent une résolution de clé tolérante :
- correspondance exacte avec l’étiquette de langue de l’appel (
en-GB), puis - correspondance sur la sous-étiquette principale (
en-GB↔en↔en-IE), puis - si la table ne contient qu’une seule entrée, cette entrée est utilisée quelle que soit la langue.
Utilisez donc en — vous n’avez pas besoin de clés en-GB/en-IE distinctes. Les exemples de
cette spécification utilisent en et nl pour cette raison.
4. closing_line ou au revoir du modèle
closing_line est une phrase fixe que l’agent prononce en plus de ce que le
modèle a déjà dit — une phrase TTS distincte, préécrite, et non un remplacement. Si le prompt de votre
agent prévoit déjà un au revoir (par ex. « Thanks for calling. Bye. ») et que
vous définissez une closing_line, l’appelant entend deux au revoir.
Choisissez l’une des deux options :
- laissez
closing_linevide et laissez le modèle dire au revoir, ou - définissez
closing_lineet indiquez dans le prompt de ne pas dire son propre au revoir.
5. Moment du raccrochage
- Contrôle de la mention de transparence. La clôture est suspendue tant que la mention de transparence obligatoire
n’a pas été délivrée pour l’appel (la seule exception est la messagerie vocale). Jusque-là,
un appel de l’outil
end_callou une formule déclencheuse est sans effet et l’appel se poursuit. - Idempotence. Seule la première clôture d’un appel est exécutée ; les déclencheurs en double ou simultanés (le modèle appelant l’outil deux fois, une formule se déclenchant juste après l’outil) sont sans effet.
- La phrase de clôture est attendue. Lorsqu’une
closing_lineest définie, Audact attend la fin de sa lecture, puis observe un court délai de vidage supplémentaire avant de supprimer la media room, afin que la phrase ne soit pas coupée en plein mot. Uneclosing_lineest donc le moyen fiable de garantir un au revoir prononcé en entier avant le raccrochage. - Sans
closing_line, la clôture s’effectue dès que le déclencheur s’active ; la dernière phrase du modèle est un audio de conversation ordinaire et n’est pas vidée spécifiquement ; si vous comptez sur l’au revoir préécrit du modèle, assurez-vous qu’il est terminé avant l’appel de l’outil — ou utilisez plutôtclosing_line.