<iframe> in eine beliebige Webseite einbetten. Der Avatar verbindet sich dann direkt aus dem Browser deiner Besucher mit dem Agenten — auf deiner Seite ist kein Backend nötig.
Voraussetzungen
1
Embedding aktivieren
Öffne den Agenten im Dashboard und aktiviere Einbettung erlauben. Nur freigegebene Agenten können eingebettet werden. Das Umschalten dieses Schalters wird sofort gespeichert — du kannst direkt testen, ohne den Agenten erst manuell zu speichern.
2
Origin freigeben
Trage unter Erlaubte Origins die Adresse(n) der Seite(n) ein, auf denen der Avatar laufen darf — z. B.
https://www.deine-domain.de.3
Snippet kopieren
Kopiere den fertigen Einbettungs-Code aus dem Dashboard oder baue ihn wie unten beschrieben selbst zusammen.
Schnellstart
AGENT_ID durch die UUID deines Agenten (im Dashboard sichtbar).
Das Attribut
allow="microphone; autoplay" ist erforderlich: Ohne microphone kann der Besucher nicht sprechen, ohne autoplay startet die Audiowiedergabe in manchen Browsern nicht automatisch (es greift dann das „Ton aktivieren”-Overlay).Startbildschirm-Vorschau
Bevor der Besucher „Gespräch starten” klickt, ist der echte Avatar noch nicht verbunden — es wird also keine Session aufgebaut und nichts gesprochen. Hat der Avatar des Agenten ein Vorschauvideo hinterlegt, zeigt der Startbildschirm dieses Video als stumme Endlosschleife (vor und zurück), bis der Besucher startet. Ohne hinterlegtes Video bleibt der Startbildschirm einfarbig (sieheborder).
Das Vorschauvideo wird am Avatar konfiguriert und gilt automatisch für jeden Agenten, der diesen Avatar nutzt — du musst dafür nichts am Einbettungs-Code ändern. Empfohlen ist ein kleines, bereits als Boomerang (vor + zurück) exportiertes MP4.
Vollbild-Displays
Die Einbettung rendert den Avatar immer inline, innerhalb des iframe-Containers, den du auf deiner Seite platzierst. Für ein eigenständiges Vollbild-Display — etwa einen unbeaufsichtigten Aufsteller — nutze statt eines iframes den dedizierten Kiosk-Modus. Er wird direkt als Top-Level-Seite geöffnet (kein iframe) und ergänzt einen Display-Wachhalter (Wake-Lock), einen Auto-Reset bei Inaktivität und eine Startbildschirm-Web-App für echtes Vollbild.Query-Parameter
Alle Optionen werden als Query-Parameter an die/embed-URL gehängt. Ungültige Werte fallen automatisch auf den Standard zurück.
string
Standard:"000000"
Hintergrund-/Letterbox-Farbe als 6-stelliger Hex-Wert ohne
# (z. B. f5f5f5).string
Standard:"contain"
Darstellung von Avatar-Vorschau und Live-Stream im iframe.
contain zeigt das vollständige Bild (ggf. mit schmalen Rändern in der border-Farbe); cover füllt die Fläche formatfüllend aus und beschneidet die Ränder. Gilt für das Startbildschirm-Video und den laufenden Avatar gleichermaßen.string
Standard:"de"
UI-Sprache der Bedienelemente.
de oder en.boolean
Standard:"false"
Mit
true wird die Text-Chat-Eingabe ausgeblendet (reiner Sprach-/Avatar-Modus).boolean
Standard:"false"
Mit
true wird der „Auflegen”-Button eingeblendet.Das Mikrofon ist während eines Gesprächs dauerhaft offen. Möchtest du es von deiner Seite aus stummschalten oder wieder aktivieren (z. B. ein eigener Push-to-Talk-Button), steuere es per
postMessage — siehe Messaging.Beispiel mit mehreren Optionen
Ton & Lautstärke
Wie im Kiosk optimiert der eingebettete Agent die Wiedergabe automatisch: Auf iPad/iPhone läuft der Ton in voller Lautstärke, auf Android schaltet er auf den lauten Systemlautsprecher. Über ein Zahnrad-Symbol oben rechts im iframe lassen sich Audioverarbeitung und Ausgabe-Gerät anpassen — die Details stehen im Kiosk-Abschnitt Ton & Lautstärke.Messaging
Über das reine Einbetten hinaus kannst du den Avatar programmatisch steuern und auf sein Verhalten reagieren. Ein eingebetteter Agent läuft in einem<iframe> — deine Seite und der Avatar leben also in unterschiedlichen Browser-Kontexten. Sie kommunizieren über die standardisierte window.postMessage-API: Du sendest Nachrichten an den iframe und empfängst Events vom iframe.
Alle Nachrichten tragen das Präfix avaluma:, damit fremde Messages (z. B. von Drittanbieter-Skripten) sicher ignoriert werden.
Referenz auf den iframe holen
Gib deinem Embed eineid, damit du sein contentWindow ansprechen kannst:
Ablauf (Handshake)
Die Brücke meldet sich bei jedem (Re-)Mount mit einemready-Beacon. Die Parent-Seite bestätigt mit init und registriert damit ihren Origin als Ziel für ausgehende Events.
1
ready empfangen
Sobald die Brücke im iframe bereit ist, sendet sie
{ type: "avaluma:ready" }.2
init zurücksenden
Die Parent-Seite antwortet mit
{ type: "avaluma:init" }. Erst dadurch kennt die Brücke den Ziel-Origin und kann Events zustellen.3
senden & empfangen
Ab jetzt kann die Seite
sendMessage schicken und empfängt connected, agentMessage und disconnected.Nachrichten an den Avatar senden
Sende eine Nachricht an dascontentWindow des iframes. Übergib immer den Avaluma-Origin als zweites Argument, damit die Nachricht nur an den Avatar zugestellt wird:
Eine Konversation startet der Besucher selbst über „Gespräch starten” im iframe.
avaluma:sendMessage wirkt nur, solange eine Konversation aktiv ist.Events vom Avatar empfangen
Lausche aufmessage-Events am window. Prüfe immer event.origin, bevor du den Daten vertraust:
Wie wird „final" bestimmt?
Wie wird „final" bestimmt?
Getippte Chat-Nachrichten sind sofort
final: true. Gestreamte Sprach-Transkripte gelten als fertig, sobald sich der Text rund 1 Sekunde nicht mehr ändert — dann folgt genau ein abschließendes final: true-Event mit dem kompletten Text. Mehrere Events mit gleicher id gehören zur selben Nachricht; nutze die id, um die Anzeige zu aktualisieren statt anzuhängen. Wer nur das Endergebnis braucht, filtert auf final === true.Vollständiges Testbeispiel
Eine eigenständige HTML-Seite, die den Avatar einbettet, Text an ihn sendet und alle Events in einem kleinen Log anzeigt. Lokal mit einem statischen Server ausliefern (z. B.python3 -m http.server 8080) und dessen Origin (http://localhost:8080) bei den Erlaubten Origins des Agenten eintragen.
Sicherheits-Checkliste
1
Immer den Ziel-Origin angeben
Verwende niemals
"*" als Ziel-Origin in postMessage. Gib https://avaluma.ai an, damit Nachrichten nicht an andere Frames gelangen können.2
Immer den Quell-Origin prüfen
Weise in deinem
message-Listener jedes Event ab, dessen event.origin nicht https://avaluma.ai ist.3
Erlaubte Origins eng halten
Trage unter Erlaubte Origins im Dashboard nur die Origins ein, die den Avatar tatsächlich hosten.
