Aller au contenu principal

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_call ni hangup. end_call (provider) et hangup (provider-tool) sont des identifiants internes d’Audact qui lient l’outil au comportement de raccrochage ; le LLM ne voit jamais que le name configuré 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 reason facultatif 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_call ci-dessous : il fonctionne même si aucun trigger_phrases n’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_reprompts fois à chaque window_ms de 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_phrases contient au moins une formule pour la langue de l’appel (active la détection des formules d’au revoir), et/ou
  • silence.window_ms est 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 :

  1. correspondance exacte avec l’étiquette de langue de l’appel (en-GB), puis
  2. correspondance sur la sous-étiquette principale (en-GB ↔ en ↔ en-IE), puis
  3. 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_line vide et laissez le modèle dire au revoir, ou
  • définissez closing_line et 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_call ou 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_line est 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. Une closing_line est 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ôt closing_line.

Source mise à jour: 19 octobre 2026