Hallo zusammen,
ich habe Schwierigkeiten, Datenvariablen in meinem Gesprächsszenario korrekt auszugeben.
In meinem Skript habe ich die Werte folgendermaßen definiert:
var data = {
Anrede: „Herr“,
Vorname: „Max“,
Nachname: „Mustermann“,
Adresse: „“,
Telefon: „“,
Email: „“,
call_result: „“,
status_detail: „“
};
Die Werte werden in der SessionData korrekt angezeigt.
Im Prompt kann ich sie allerdings weder über $data.Vorname noch über {{data.Vorname}} korrekt ausgeben — im Beispiel-Chat erscheint nie der tatsächliche Name.
Ich habe bereits mehrere Varianten ausprobiert, auch mithilfe der Anleitung, aber ohne Erfolg.
Weiß jemand, woran das liegen könnte oder wie ich die Werte korrekt im Prompt referenzieren kann?
Danke im Voraus!
Hallo,
ja, Du bist schon auf dem richtigen Weg. Allerdings ist das “data” Objekt im Kontext des Skripts schon vordefiniert… es existiert also global… so ähnlich, wie das “windows” Objekt im Browser
Wenn Du jetzt ein neue Variable “data” definierst, dann “überdeckt” diese das vorhandene “data” Objekt wodurch dieses für Dein Skript unerreichbar wird.
Lange Rede kurzer Sinn:
Schreibe einfach data.Vorname="Max" und dann im Prompt {{data.Vorname}}. Dann sollte es funktionieren.
Das “data”-Objekt korrespondiert mit dem Kontakt-Datensatz. D.h. bei Nutzung als Virtual Outbound Agent wird das Objekt automatisch mit den Daten aus dem Kontakt vorbelegt. Und auch alle Änderungen werden automatisch bei Gesprächsende an den Kontakt übertragen.
Bei Nutzung im Inbound ist das “data”-Objekt am Anfang leer und wird dann zur Erstellung eines neues Kontakts verwendet.
D.h. das “data” Objekt entspricht in seiner Verwendung dem, wie man es auch in der Maske oder sonstigen Skript-Hooks (z.B. function onUpdate) findet.
Grüße
Wolfram
Vielen Dank für die schnelle Antwort Wolfram!
Ich habe es nun ausprobiert im Script mit data.Vorname = “Max”, es wird korrekt in session data integriert, das wird es auch dann für den späteren Outbound alles sehr viel leichter machen! Wenn ich allerdings genau das integriere, kriege ich weiterhin bei {{data.Vorname}} kein Ergebnis in meinem Beispielchat.
Viele Grüße
Oops… Du hast völlig recht!
Da war noch ein Bug im Test-Client (im Chat-Modus). Das Skript (und damit auch das onLoad) wurde nicht ganz am Anfang, sondern erst bei der ersten Nutzernachricht ausgeführt.
Ich habe das eben korrigiert. Jetzt sollte es aber wirklich gehen. 
Jetzt erscheint im Log eine erste Agent-Nachricht, an der auch der gerenderte Prompt für den initialen Turn abrufbar ist.
Ein wenig Hintergrund:
Der Chat-Modus wird in Zukunft noch eine viel größere Rolle spielen, wenn wir auch Messaging (WhatsApp etc.) im Self-Service verfügbar machen. Deshalb haben wir den AI Agent so designed, dass mit dem selben Agenten auch langlebige Sessions (z.B. ein WhatsApp-Chat der über Tage läuft) möglich sind.
Das ist auch der Grund, warum die Properties im “data” und “temp”-Objekt stringifizierbar sein müssen (z.B. keine Date-Objekte). Denn nach jedem Turn landet die Session in der Datenbank und wird erst beim nächsten Turn auf einem beliebigen anderen Server wieder zum Leben erweckt.
Hallo Wolfram, die Antwort hatte ich nie gesehen, aber ja, das hast Du perfekt gelöst, das hatte ich direkt gemerkt! Danach hat es perfekt geklappt, vielen Dank! Die Informationen sind auch sehr hilfreich, ich habe mir bereits gedacht, dass es sehr gut ist, über sowas Bescheid zu wissen und arbeite seitdem mit, anstatt gegen diese Dinge!