Erkennung des Anrufsabschlusses
Zwei unabhängige Mechanismen zum Beenden eines Anrufs von der Agentenseite: das end_call-Werkzeug für die Entscheidung des Modells sowie deterministische trigger_phrases und Stille-Erkennung.
Ein Audact-Sprachagent kann einen Anruf selbst beenden. Es gibt zwei unabhängige
Mechanismen, die an verschiedenen Stellen konfiguriert werden. Beide münden in
dieselbe Abschluss-Choreographie (Offenlegungs-Gate → Idempotenz → optionale
Abschlusszeile → Auflegen → Nachweis + call_end_detected-Webhook), sodass ein
agenteninitiiertes Auflegen unabhängig vom auslösenden Ereignis exakt dieselben
Nebeneffekte hat.
1. Das end_call-Werkzeug (Modellentscheidung)
Wenn Sie einem Agenten ein end_call-Werkzeug zuweisen, steht dem Modell eine
Funktion zur Verfügung, die es aufrufen kann, wenn es die Konversation als
abgeschlossen erachtet (der Anrufer hat sich verabschiedet, die Aufgabe ist erledigt,
es gibt nichts mehr zu tun).
- Was das Modell sieht. Ein Function-Calling-Werkzeug, dessen Name dem von Ihnen
vergebenen Namen entspricht — er heißt nicht automatisch
end_calloderhangup.end_call(Anbieter) undhangup(Anbieter-Werkzeug) sind Audact-interne Bezeichner, die das Werkzeug mit dem Auflege-Verhalten verknüpfen; das LLM sieht ausschließlich den von Ihnen konfiguriertennameund dessen Beschreibung. Wenn Ihr Agenten-Prompt das Werkzeug namentlich erwähnt, verwenden Sie den von Ihnen konfigurierten Namen. - Argumente. Das Werkzeug akzeptiert ein einzelnes optionales Freitext-Feld
reason(eine eigene Notiz des Modells, z. B. „Anrufer hat sich verabschiedet"); es ist niemals erforderlich, und das Modell wird angewiesen, den Anrufer nie danach zu fragen. - Auslösezeitpunkt. Vollständig nach Ermessen des Modells. Die Beschreibung des Werkzeugs weist das Modell an, es nur dann aufzurufen, wenn die Konversation beendet ist und niemals bevor die Pflichtoffenlegung erfolgt ist — das Offenlegungs-Gate erzwingt dies unabhängig davon, was das Modell tut.
- Dieses Werkzeug ist unabhängig vom
end_call-Konfigurationsobjekt weiter unten: Es funktioniert auch ohne konfiguriertetrigger_phrases.
2. Die end_call-Konfiguration (deterministische Erkennung)
Das end_call-Objekt in der Agentenkonfiguration beendet den Anruf ohne das
Modell, indem es die Sprache des Anrufers überwacht:
trigger_phrases— Abschiedsphrasen, die am Ende der Äußerung des Anrufers erkannt werden (Terminalposition). „goodbye" am Ende einer Gesprächsrunde beendet den Anruf; „goodbye and one more thing…" hingegen nicht. Der Abgleich erfolgt ohne Berücksichtigung der Groß-/Kleinschreibung, ignoriert abschließende Satzzeichen und verfügt über einen Fallback ohne Diakritika.silence— Beendet den Anruf, nachdem der Anrufer verstummt ist, wobei bis zumax_repromptsMal bei jeweilswindow_msStille erneut nachgefragt wird.
Mindestkonfiguration zur Aktivierung
Ein lediglich nicht leeres end_call-Objekt reicht nicht aus. Die deterministische
Erkennung ist nur dann aktiv, wenn:
trigger_phrasesmindestens eine Phrase für die Locale des Anrufs enthält (aktiviert die Erkennung von Abschiedsphrasen), und/odersilence.window_msgrößer als 0 ist (aktiviert den Stille-Timeout).
closing_line allein bewirkt nichts — sie wird nur gesprochen, wenn ein Auslöser
(oder das end_call-Werkzeug) ausgelöst wird. Ein leeres bzw. fehlendes Objekt
bedeutet, dass die deterministische Richtlinie deaktiviert ist.
Empfohlene trigger_phrases für eine Rezeptionistin (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. Locale-Schlüssel
Alle locale-gekeyten Maps in end_call (trigger_phrases, closing_line,
silence.reprompt_text) verwenden eine tolerante Schlüsselauflösung:
- Genaue Übereinstimmung mit dem Sprach-Tag des Anrufs (
en-GB), dann - Abgleich auf den primären Subtag (
en-GB↔en↔en-IE), dann - Wenn die Map genau einen Eintrag enthält, wird dieser unabhängig von der Locale verwendet.
Verwenden Sie daher en — Sie benötigen keine separaten en-GB/en-IE-Schlüssel.
Die Beispiele in dieser Spezifikation verwenden aus diesem Grund en und nl.
4. closing_line versus die eigene Verabschiedung des Modells
closing_line ist eine feste Zeile, die der Agent zusätzlich zu dem, was das
Modell bereits gesagt hat, spricht — eine separate, geskriptete TTS-Zeile, kein
Ersatz. Wenn Ihr Agenten-Prompt bereits eine Verabschiedung enthält (z. B. „Thanks for
calling. Bye.") und Sie eine closing_line setzen, hört der Anrufer zwei
Verabschiedungen.
Wählen Sie eine der folgenden Optionen:
closing_lineleer lassen und das Modell die Verabschiedung sprechen lassen, oderclosing_linesetzen und den Prompt anweisen, keine eigene Verabschiedung zu sagen.
5. Zeitpunkt des Auflegens
- Offenlegungs-Gate. Die Beendigung wird unterdrückt, bis die Pflichtoffenlegung
für den Anruf erfolgt ist (die einzige Ausnahme ist Voicemail). Bis dahin ist ein
end_call-Werkzeugaufruf oder eine ausgelöste Phrase wirkungslos und der Anruf wird fortgesetzt. - Idempotenz. Nur die erste Beendigung eines Anrufs wird ausgeführt; doppelte oder gleichzeitige Auslöser (das Modell ruft das Werkzeug zweimal auf, eine Phrase wird direkt nach dem Werkzeug ausgelöst) sind wirkungslos.
- Warten auf die Abschlusszeile. Wenn eine
closing_linegesetzt ist, wartet Audact, bis diese vollständig abgespielt wurde, und hält dann noch einen kurzen zusätzlichen Drain ein, bevor der Medienraum gelöscht wird — damit die Zeile nicht mitten in einem Wort abgeschnitten wird. Eineclosing_lineist daher der zuverlässige Weg, um eine vollständige gesprochene Verabschiedung vor dem Auflegen zu gewährleisten. - Ohne
closing_lineerfolgt der Abbau sofort, sobald der Auslöser ausgelöst wird; der eigene abschließende Satz des Modells ist gewöhnliches Gesprächsaudio und wird nicht speziell abgewartet. Wenn Sie sich auf die geskriptete Verabschiedung des Modells verlassen, stellen Sie sicher, dass diese abgeschlossen ist, bevor der Werkzeugaufruf erfolgt — oder verwenden Sie stattdessenclosing_line.
