Features

Im Folgenden finden Sie die Features, die Sie im Oracle-Web-SDK konfigurieren können.

Absolute und relative Zeitstempel

  • Feature-Flag: timestampMode: 'relative' | 'absolute' (Standard: 'relative')
  • Featurekonfiguration: timestampMode

Sie können absolute oder relative Zeitstempel für Chatnachrichten aktivieren. Absolute Zeitstempel zeigen die genaue Zeit für jede Nachricht an. Relative Zeitstempel werden nur in der letzten Nachricht angezeigt und geben die Zeit in Bezug auf die Sekunden, Tage, Stunden, Monate oder Jahre seit der vorherigen Nachricht an.
Beschreibung von relative-v-absolute-timestamps.png folgt
Beschreibung der Abbildung relative-v-absolute-timestamps.png

Die Genauigkeit Mit absoluten Zeitstempeln sind sie ideal für Archivierungsaufgaben. Im begrenzten Kontext einer Chatsession beeinträchtigt diese Genauigkeit jedoch die Benutzererfahrung, da Benutzer Zeitstempel vergleichen müssen, um die Zeitspanne zwischen Nachrichten zu ermitteln. Mit relativen Zeitstempeln können Benutzer die Unterhaltung einfach durch leicht verständliche Begriffe wie Jetzt gerade und Vor wenigen Minuten verfolgen. Relative Zeitstempel verbessern die Benutzererfahrung auch auf andere Weise und vereinfachen gleichzeitig die Entwicklungsaufgaben: Da relative Zeitstempel die Nachrichten in Sekunden, Tagen, Stunden, Monaten oder Jahren kennzeichnen, müssen Sie sie nicht für andere Zeitzonen konvertieren.

Verhalten relativer Zeitstempel

Wie bereits erwähnt wird ein relativer Zeitstempel nur in der letzten Nachricht angezeigt. Im Folgenden wird dieses Verhalten genauer beschrieben. Wenn Sie den Zeitstempel (timestampMode: 'relative' oder timestampMode: 'default') konfigurieren, wird vor der ersten Nachricht des Tages ein absoluter Zeitstempel als Header angezeigt. Dieser Header wird angezeigt, wenn die Unterhaltung nicht gelöscht wurde und ältere Nachrichten noch in der Historie verfügbar sind.

In jeder neuen Nachricht wird dann ein relativer Zeitstempel angezeigt.
Beschreibung von most-recent-message-timestamp.png folgt
Beschreibung der Abbildung most-recent-message-timestamp.png
Dieser Zeitstempel wird in folgenden regelmäßigen Abständen (Sekunden, Minuten usw.) aktualisiert, bis eine neue Nachricht empfangen wird.
  • In den ersten 10 Sekunden
  • Zwischen 10 und 60 Sekunden
  • Jede Minute zwischen 1 und 60 Minuten
  • Jede Stunde zwischen 1 und 24 Stunden
  • Jeden Tag zwischen 1 und 30 Tagen
  • Jeden Monat zwischen 1 und 12 Monaten
  • Jedes Jahr nach dem ersten Jahr
Wenn eine neue Nachricht in den Chat geladen wird, wird der relative Zeitstempel der vorherigen Nachricht entfernt. Stattdessen wird ein neuer Zeitstempel in der neuen Nachricht angezeigt, der die Zeit relativ zur vorherigen Nachricht anzeigt. Ab dann wird der relative Zeitstempel aktualisiert, bis die nächsten Nachrichten eintreffen.

Relativen Zeitstempel hinzufügen

So fügen Sie einen relativen Zeitstempel hinzu:
  • Aktivieren Sie relative Zeitstempel: timestampMode: 'relative'
  • Optionale Schritte:
    • Legen Sie die Farbe für den relativen Zeitstempel fest: timestamp: "<a hexadecimal color value>"
    • Lokalisieren Sie bei mehrsprachigen Skills den Zeitstempeltext mit den folgenden Schlüsseln:
      Taste Standardtext Beschreibung
      relTimeNow Now Der anfängliche Zeitstempel, der für die ersten 9 Sekunden angezeigt wird. Dieser Zeitstempel wird auch angezeigt, wenn die Unterhaltung zurückgesetzt wird.
      relTimeMoment a few moments ago Wird 10 bis 60 Sekunden lang angezeigt.
      relTimeMin {0}min ago Wird jede Minute aktualisiert.
      relTimeHr {0}hr ago Wird jede Stunde aktualisiert.
      relTimeDay {0}d ago Wird im ersten Monat täglich aktualisiert.
      relTimeMon {0}mth ago Wird in den ersten zwölf Monaten monatlich aktualisiert.
      relTimeYr {0}yr ago Wird jährlich aktualisiert.
    • Mit den timeStampFormat-Einstellungen können Sie das Format des absoluten Zeitstempels ändern, der vor der ersten Nachricht jedes Tages angezeigt wird.

Automatische Vervollständigung

  • Feature-Flag: enableAutocomplete: true (Standard: false)
  • Clientseitiges Caching aktivieren: enableAutocompleteClientCache
Durch die automatische Vervollständigung werden Benutzerfehler minimiert, indem effektive Phrasen angegeben werden, die sowohl als direkte Eingabe als auch als Vorschläge verwendet werden können. Um dieses Feature zu aktivieren, aktualisieren Sie die Widgeteinstellungen mit enableAutocomplete: true, und fügen Sie der Seite "Intent erstellen" ein Set optimierter Benutzernachrichten hinzu. Wenn diese Option aktiviert ist, werden diese Nachrichten in einem Popup-Fenster angezeigt, nachdem Benutzer drei oder mehr Zeichen eingegeben haben. Die Wörter in den vorgeschlagenen Nachrichten, die mit der Benutzereingabe übereinstimmen, werden in Fettschrift hervorgehoben. Dann können Benutzer ihren eigenen Text eingeben oder stattdessen eine der automatisch vervollständigten Nachrichten auswählen.
Hinweis

Dieses Feature ist nur über WebSocket verfügbar.


Wenn ein digitaler Assistent mit dem Oracle-Webkanal verknüpft ist, können alle für die Skills, die bei diesem digitalen Assistenten registriert sind, konfigurierten Beispieläußerungen als automatische Vervollständigungsvorschläge verwendet werden.

Feld automatisch weiterleiten

Wenn für ein Feld die Eigenschaft autoSubmit auf true gesetzt ist, sendet der Client eine FormSubmissionMessagePayload mit der Zuordnung submittedField, die entweder die gültigen Feldwerte enthält, die bisher eingegeben wurden. Felder, die noch nicht festgelegt sind (unabhängig davon, ob sie erforderlich sind) oder Felder, die eine clientseitige Validierung verletzen, werden nicht in die submittedField-Map aufgenommen. Wenn das automatisch weitergeleitete Feld selbst einen ungültigen Wert enthält, wird die Weiterleitungsnachricht nicht gesendet, und die Clientfehlermeldung wird für dieses Feld angezeigt. Wenn eine automatische Weiterleitung erfolgreich ist, wird die partialSubmitField in der Formularweiterleitungsnachricht auf id des Feldes autoSubmit gesetzt.

Vorheriges Eingabeformular ersetzen

Wenn der Endbenutzer das Formular weiterleitet, weil für ein Feld autosubmit auf true gesetzt ist, kann der Skill eine neue EditFormMessagePayload senden. Diese Meldung sollte die vorherige Eingabeformularnachricht ersetzen. Wenn Sie die Kanalerweiterungseigenschaft replaceMessage auf true setzen, aktivieren Sie das SDK, um die vorherige Eingabeformularnachricht durch die aktuelle Eingabeformularnachricht zu ersetzen.

Automatisches RTL-Layout

Wenn die Grundrichtung der Hostseite mit <html dir="rtl"> festgelegt ist, um Rechts-nach-links-Sprachen (RTL) zu unterstützen, wird das Chatwidget automatisch auf der linken Seite gerendert. Da das Widget für RTL-Sprachen linksbündig ausgerichtet ist, werden dessen Symbole und Textelemente ebenfalls neu positioniert. Die Symbole befinden sich an den gegenüberliegenden Stellen von ihrer Position bei einem Links-nach-rechts-Rendering (LTR). Beispiel: Die Symbole "Senden", "Mikrofon" und "Anhang" werden vertauscht, sodass die Symbole "Mikrofon" und "Senden" die linke Seite des Eingabefeldes belegen (wobei das Richtungssymbol zum Senden nach links zeigt), während sich das Anhangssymbol auf der rechten Seite des Eingabefeldes liegt. Die Ausrichtung der Textelemente, wie inputPlaceholder und chatTitle, basiert darauf, ob die Textsprache LTR oder RTL ist. Bei RTL-Sprachen werden der inputPlaceHolder-Text und chatTitle auf der rechten Seite des Eingabefeldes angezeigt.

Avatare

Standardmäßig werden in den Nachrichten im Chat keine Avatare angezeigt. Mit den folgenden Parametern können Sie jedoch Avatare für den Skill, den Benutzer und einen Agent-Avatar konfigurieren, wenn in den Skill Live-Agent-Unterstützung integriert ist.
  • avatarBot: Die URL der Bildquelle oder die Quellzeichenfolge des SVG-Bildes, das neben den Skillnachrichten angezeigt wird.
  • avatarUser: Die URL der Bildquelle oder die Quellzeichenfolge des SVG-Bildes, das neben den Benutzernachrichten angezeigt wird. Wenn der Skill über eine Live-Agent-Integration verfügt, kann das SDK so konfiguriert werden, dass ein anderes Symbol für Agent-Nachrichten angezeigt wird.
  • avatarAgent: Die URL der Bildquelle oder die Quellzeichenfolge des SVG-Images, das neben den Agent-Nachrichten angezeigt wird. Wenn dieser Wert nicht angegeben wird, avatarBot jedoch festgelegt ist, wird stattdessen das Symbol avatarBot verwendet.
Hinweis

Diese Einstellungen können nur in den Initialisierungseinstellungen übergeben werden. Sie können nicht dynamisch geändert werden.
new WebSDK({
URI: '<URI>',
//...,
icons: {
    avatarBot: '../assets/images/avatar-bot.png',
    avatarUser: '../assets/images/avatar-user.jpg',
    avatarAgent: '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path d="M12 6c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2m0 9c2.7 0 5.8 1.29 6 2v1H6v-.99c.2-.72 3.3-2.01 6-2.01m0-11C9.79 4 8 5.79 8 8s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 9c-2.67 0-8 1.34-8 4v3h16v-3c0-2.66-5.33-4-8-4z"/></svg>'
}
})

Registerkartenübergreifende Unterhaltung synchronisieren

Feature-Flag: enableTabsSync: true (Standard: true)

Möglicherweise müssen Benutzer die Website aus verschiedenen Gründen in mehreren Registerkarten öffnen. Mit enableTabsSync: true können Sie die Benutzerunterhaltung von einer beliebigen Registerkarte aus synchronisieren und fortsetzen, solange die Verbindungsparameter (URI, channelId und userId) auf allen Registerkarten identisch sind. Dieses Feature stellt sicher, dass Benutzer Nachrichten aus dem Skill auf einer beliebigen Registerkarte anzeigen und über dieselbe oder eine andere Registerkarte antworten können. Wenn der Benutzer die Unterhaltungshistorie auf einer Registerkarte löscht, wird sie auch aus den anderen Registerkarten gelöscht. Wenn der Benutzer die Chatsprache auf einer Registerkarte aktualisiert, wird die Chatsprache mit den anderen Registerkarten synchronisiert.

Es gelten folgende Einschränkungen:
  • Eine neue Registerkarte wird mit vorhandenen Registerkarten für die neuen Nachrichten zwischen dem Benutzer und dem Skill beim Öffnen synchronisiert. Wenn Sie das SDK nicht für die Anzeige von Nachrichten aus der Unterhaltungshistorie konfiguriert haben, wird das anfängliche Chatwidget auf der neuen Registerkarte beim Öffnen leer angezeigt.
  • Wenn Sie das SDK so konfiguriert haben, dass die Unterhaltungshistorie angezeigt wird, werden die Nachrichten aus dem aktuellen Chat auf vorhandenen Registerkarten als Teil der Unterhaltungshistorie auf einer neuen Registerkarte angezeigt. Wenn Sie disablePastActions auf all oder postback setzen, kann die Interaktion mit den Aktionen für Nachrichten auf der neuen Registerkarte verhindert werden.
  • Der Safari-Browser unterstützt diese Funktion derzeit nicht.

Rendering benutzerdefinierter Nachrichten

Feature-Flag: delegate.render: (message) => boolean (default: undefined)

Mit dieser Funktion können Sie die standardmäßige Wiedergabe von Nachrichten mit Ihrer eigenen benutzerdefinierten Nachrichtenvorlage überschreiben. Um dieses Feature verwenden zu können, müssen Sie die Delegate-Funktion render implementieren, die das Nachrichtenmodell als Eingabe verwendet und ein boolesches Flag als Ausgabe zurückgibt. Sie muss true zurückgeben, um das Standard-Rendering durch das benutzerdefinierte Rendering für einen bestimmten Nachrichtentyp zu ersetzen. Wenn false zurückgegeben wird, wird stattdessen die Standardmeldung wiedergegeben.
Hinweis

Beim benutzerdefinierten Rendering müssen die gesamte Aktionsklickbehandlung und die Deaktivierung oder Aktivierung der Aktion explizit behandelt werden.
Sie können eine beliebige externe Framework-Komponente für die Wiedergabe von Nachrichten verwenden. In den Integrationsbeispielen im Verzeichnis samples des SDK wird beschrieben, wie Sie dieses Feature mit solchen Frameworks wie React, Angular und Oracle JavaScript Extension Toolkit (JET) verwenden können.

Standard-Clientantworten

Feature-Flag: enableDefaultClientResponse: true (Standard: false)

Verwenden Sie dieses Flag, um standardmäßige clientseitige Antworten zusammen mit einem Tippindikator anzugeben, wenn die Skillantwort verzögert wurde oder wenn keine Skillantwort vorhanden ist. Wenn der Benutzer die erste Nachricht/Abfrage sendet, der Skill jedoch nicht innerhalb der durch das Kennzeichen defaultGreetingTimeout festgelegten Anzahl von Sekunden antwortet, kann der Skill eine Begrüßungsnachricht anzeigen, die mit dem Übersetzungsstring defaultGreetingMessage konfiguriert ist. Als Nächstes sucht der Client erneut nach der Skillantwort. Der Client zeigt die Skillantwort an, wenn sie empfangen wurde. Wenn dies jedoch nicht der Fall ist, zeigt der Client in von defaultWaitMessageInterval festgelegten Intervallen eine Wartemeldung (mit dem defaultWaitMessage-Übersetzungsstring konfiguriert) an. Wenn die Wartezeit auf die Skillantwort den durch das Flag typingIndicatorTimeout festgelegten Schwellenwert überschreitet, zeigt der Client eine bedauernde Antwort an den Benutzer an und stoppt den Eingabeindikator. Sie können die Entschuldigungsantwort mit dem Übersetzungsstring defaultSorryMessage konfigurieren.

Delegation

Featurekonfiguration: delegate

Mit dem Delegationsfeature können Sie einen Delegaten so festlegen, dass Callbacks vor bestimmten Ereignissen in der Unterhaltung empfangen werden. Um einen Delegaten festzulegen, übergeben Sie den Parameter delegate, oder verwenden Sie die Methode setDelegate. Das Delegatobjekt kann optional die Delegatfunktionen beforeDisplay, beforeSend, beforePostbackSend, beforeEndConversation und render enthalten.
var delegate = {
    beforeDisplay: function(message) {
        return message;
    },
    beforeSend: function(message) {
        return message;
    },
    beforePostbackSend: function(postback) {
        return postback;
    },
    beforeEndConversation: function(message) {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve(message);
            }, 2000);
        });
    },
    render: function(message) {
        if (message.messagePayload.type === 'card') {
            // Perform custom rendering for card using msgId
            return true;
        }
        return false;
    }
}

beforeDisplay

Mit dem Delegaten beforeDisplay kann die Nachricht eines Skills geändert werden, bevor sie in der Unterhaltung angezeigt wird. Die vom Delegierten zurückgegebene Nachricht wird anstelle der ursprünglichen Nachricht angezeigt. Die zurückgegebene Nachricht wird nicht angezeigt, wenn der Delegierte einen falschen Wert wie null, undefined oder false zurückgibt. Wenn der Delegierte Fehler ausgibt, wird die ursprüngliche Nachricht anstelle der vom Delegierten zurückgegebenen Nachricht angezeigt. Verwenden Sie den Delegaten beforeDisplay, um das Linkverhalten für Webansichten im Widget selektiv anzuwenden.

beforeSend

Mit dem Delegaten beforeSend kann eine Benutzernachricht geändert werden, bevor sie als Teil von sendMessage an den Chatserver gesendet wird. Die vom Delegaten zurückgegebene Nachricht wird an den Skill anstelle der ursprünglichen Nachricht gesendet. Die vom Delegierten zurückgegebene Nachricht ist nicht festgelegt, wenn der Delegierte einen falschen Wert wie null, undefined oder false zurückgibt. Die Nachricht wird dann nicht gesendet. Wenn ein Fehler auftritt, wird die ursprüngliche Nachricht anstelle der vom Delegierten zurückgegebenen Nachricht gesendet.

beforePostbackSend

Der Delegat beforePostbackSend ähnelt beforeSend, wird aber auf Postback-Nachrichten vom Benutzer angewendet. Der vom Delegaten zurückgegebene Postback wird an den Skill gesendet. Wenn er einen falschen Wert zurückgibt, wie null, undefined oder false, wird keine Nachricht gesendet.

beforeEndConversation

Der Delegierte beforeEndConversation ermöglicht ein Abfangen am Ende eines Unterhaltungsablaufs, wenn eine Pre-Exit-Aktivität ausgeführt werden muss. Die function empfängt die Beendigungsnachricht als ihren Eingabeparameter und muss eine Promise zurückgeben. Wenn diese Promise mit der Beendigungsnachricht aufgelöst wird, wird die Beendigungsnachricht CloseSession an den Chatserver gesendet. Andernfalls wird verhindert, dass die Beendigungsnachricht gesendet wird.
...

 beforeEndConversation: function(message) {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve(message);
            }, 2000);
        });
    }

ren

Mit dem Delegaten render können Sie die Standardnachrichtenwiedergabe außer Kraft setzen. Wenn die Delegatfunktion render true für einen bestimmten Nachrichtentyp zurückgibt, erstellt die WebSDK einen Platzhalter-Slot anstelle der Standardnachrichtenwiedergabe. Um den Platzhalter zu identifizieren, fügen Sie die msgId der Nachricht als id des Elements hinzu. In der Delegatfunktion render können Sie mit dieser ID die Referenz für den Platzhalter abrufen und die benutzerdefinierte Nachrichtenvorlage wiedergeben. Siehe Benutzerdefinierte Nachrichtenwiedergabe.

Verschiebbare Startschaltfläche und Widget

Feature-Flag: enableDraggableButton: true (Standard: false)

Insbesondere auf Mobilgeräten mit begrenzter Bildschirmgröße kann das Chatwidget oder die Startschaltfläche manchmal Inhalte auf einer Webseite blockieren. Wenn Sie enableDraggableButton: true festlegen, können Benutzer das Widget oder die Startschaltfläche wegziehen, wenn es die Ansicht blockiert. Dieses Kennzeichen wirkt sich nur auf die Position der Startschaltfläche aus und nicht auf das Chatwidget: Das Widget wird weiterhin aus seinem ursprünglichen Ort geöffnet.

Dynamischer Eingabeindikator

Feature-Flag: showTypingIndicator: 'true'

Ein Eingabeindikator zeigt Benutzern an, dass sie mit dem Senden einer Nachricht warten sollen, weil der Skill gerade eine Antwort vorbereitet. Standardmäßig zeigen Skills den Eingabeindikator nur für ihre erste Antwort an, wenn Sie das SDK mit showTypingIndicator: 'true' initialisieren. Für eine optimale Benutzererfahrung sollte der Skill über einen dynamischen Eingabeindikator verfügen, d.h. ein Eingabeindikator, der nach jeder Skillantwort angezeigt wird. Dadurch wird Benutzern vermittelt, dass kein Timeout im Skill aufgetreten ist und dieser noch aktiv an einer Antwort arbeitet. Darüber hinaus verhindert die Anzeige des Eingabeindikators nach jeder Skillantwort ein vorzeitiges Senden von Nachrichten durch die Benutzer. Dies ist möglicherweise der Fall, wenn die Eigenschaft keepTurn den Skill anweist, mit einer Reihe separater Nachrichten zu antworten, die es dem Benutzer nicht erlauben, eine eigene Antwort einzuwerfen.

So aktivieren Sie einen Eingabeindikator nach jeder Skillantwort:
  • Initialisieren Sie das SDK, indem Sie showTypingIndicator auf true setzen.
  • Rufen Sie die showTypingIndicator-API auf.
Mit showTypingIndicator können Sie die Anzeige des dynamischen Eingabeindikators nur in folgenden Fällen aktivieren:
  • Das Widget ist mit dem Oracle-Chatserver verbunden. Der dynamische Eingabeindikator wird nicht angezeigt, wenn die Verbindung beendet wurde.
  • Das SDK wurde initialisiert, indem showTypingIndicator auf true gesetzt wurde.
    Hinweis

    Diese API funktioniert nicht, wenn das SDK im Headless-Modus verwendet wird.
Der Eingabeindikator wird für die Dauer angezeigt, die von der optionalen Eigenschaft typingIndicatorTimeout festgelegt wurde. Die Standardeinstellung beträgt 20 Sekunden. Wenn die API aufgerufen wird, während bereits ein Eingabeindikator angezeigt wird, wird der Timer zurückgesetzt und der Indikator ausgeblendet.

Der Eingabeindikator wird ausgeblendet, sobald der Benutzer die Nachrichten des Skills empfängt. Der Eingabeindikator wird im Chatfenster nach unten verschoben, wenn ein Benutzer bei angezeigtem Indikator eine Nachricht eingibt, einen Anhang hochlädt oder einen Standort sendet.

Eingebettetes Linkverhalten steuern

  • Benutzerdefinierte Handhabung: linkHandler: { onclick: <function>, target: '<string>' }
  • In der Webansicht im Widget: linkHandler: { target: 'oda-chat-webview' }
  • In einem neuen Fenster: openLinksInNewWindow: 'true'
Neben dem Öffnen von Links in einem neuen Fenster durch Festlegen von openLinksInNewWindow: true oder dem Standardverhalten beim Öffnen von Links in einer neuen Registerkarte können Sie auch Links öffnen, die die Webseiten des Widgets überlagern. Um dies und andere Overrides für das Linkverhalten zu aktivieren, initialisieren Sie das SDK mit:
linkHandler: {
    target: '_blank',   // open link in a new page
    onclick: (event) => { // some operation }
}
Mit linkHander können Sie:
  • die iframe-Navigation so steuern, dass die Seite weiterhin überlagert werden kann, ohne dass das Widget unter Beibehaltung derselben Benutzer-ID in jede Seite aufgenommen und bei der Navigation erneut geöffnet werden muss.

  • einige Links in einem neuen Fenster öffnen, während andere Links auf derselben Registerkarte geöffnet werden.
  • eine Aktion ausführen, wenn auf einen Link geklickt wird.
  • verhindern, dass ein Link geöffnet wird.
  • einen Link in einer Webview öffnen.
Um das durch die Einstellung openLinksInNewWindow festgelegte Linkverhalten außer Kraft zu setzen, müssen Sie eines oder beide der folgenden Attribute definieren:
  • self - Der aktuelle Browserkontext
  • target: Gibt den Kontext an, in dem eine Suche stattfindet, z.B. eine Registerkarte, ein Fenster oder ein iFrame. Definieren Sie den iFrame-Speicherort als target-Attribut eines Ankerelements (<a>). Sie können die Attribute _self, _blank, _parent und _top des Ziels definieren.
  • onclick: Akzeptiert eine Callback-Funktion, die aufgerufen wird, wenn auf den Link geklickt wird. Das beim Klicken empfangene MouseEvent wird an den Callback übergeben. Damit kann eine Aktion ausgeführt oder sogar das Öffnen des Links verhindert werden.

Embedded-Modus

  • Feature-Flag: embedded: true (Standard: false)
  • Übergeben Sie die ID des Zielcontainerelements: targetElement
Neben den anderen Einstellungen, die das Look-and-Feel des Chatwidgets anpassen, können Sie das Widget selbst wie folgt in die Webseite einbetten:
  • Fügen Sie embedded: true hinzu.
  • Definieren Sie die Eigenschaft targetElement mit der ID des DOM-Elements (einer HTML-Komponente), das als Container des Widgets verwendet wird (z.B. 'container-div' im folgenden Snippet).
<head>
    <meta charset="utf-8">
    <title>Oracle Web SDK Sample</title>
    <script src="scripts/settings.js"></script>
     <script>
        var chatWidgetSettings = {
            URI: YOUR_URI,
            channelId: YOUR_CHANNELID,
            embedded: true,
            targetElement: 'container-div'
...

    </script> 
</head>
<body>
    <h3 align="center">The Widget Is Embedded Here!</h3>
</body>
           <div id="container-div" 
                style="height: 600px; width: 380px; padding: 0; text-align: initial">
            </div>
Hinweis

Das Widget nimmt die gesamte Breite und Höhe des Containers ein. Falls der Container nicht groß genug ist, wird das Widget nicht auf der Seite angezeigt.

Unterhaltungssitzung beenden

Feature-Flag: enableEndConversation: true (Standard: true)

Ab Version 21.12 fügt das SDK dem Chatwidgetheader standardmäßig eine Schaltfläche "Schließen" hinzu (enableEndConversation: true), mit der Benutzer die aktuelle Session beenden können.
Dieses Bild zeigt die Schaltfläche "Schließen" im Chatwidgetheader.

Nachdem Benutzer auf diese Schaltfläche geklickt haben, zeigt das SDK ihnen eine Bestätigungsaufforderung an, deren Text ("Möchten Sie die Unterhaltung wirklich beenden?") lautet. Dadurch wird auch die Unterhaltungshistorie gelöscht.") Sie können sie mit den Schlüsseln endConversationConfirmMessage und endConversationDescription anpassen. Wenn ein Benutzer den Prompt ablehnt, indem er auf Ja klickt, sendet das SDK dem Skill eine Ereignisnachricht, mit der die aktuelle Unterhaltungssession als beendet markiert wird. Die Instanz trennt dann die Verbindung zum Skill, blendet das Chatwidget aus und löscht die Unterhaltungshistorie des aktuellen Benutzers. Außerdem wird ein chatend-Ereignis ausgelöst, für das Sie sich registrieren können:
Bots.on('chatend', function() {
    console.log('The conversation is ended.');
});
Nach dem Öffnen des Chatwidgets wird eine neue Konversationssitzung gestartet.
Hinweis

Sie können eine Session auch beenden, indem Sie die Methode Bots.endChat() aufrufen (in der Referenz zu dem Oracle-Web-SDK beschrieben, das auf der Seite Downloads verfügbar ist). Der Aufruf dieser Methode kann nützlich sein, wenn das SDK im headless-Modus initialisiert wird.

Fokus auf der ersten Aktion in einer Nachricht

Feature-Flag: focusOnNewMessage: 'action' (Standard: 'input')

Benutzer, die eine tastaturbasierte Navigation bevorzugen (wie Poweruser), können den Fokus vom Benutzereingabefeld auf die erste (oder ganz linke) Aktionsschaltfläche in einer Nachricht verschieben. Standardmäßig legt das Chatwidget den Fokus mit jeder neuen Nachricht wieder auf das Benutzereingabefeld (focusOnNewMessage: 'input'). Dieses Verhalten eignet sich für Dialogabläufe, die viele Texteingaben vom Benutzer erwarten. Wenn der Dialogablauf jedoch eine Reihe von Nachrichten mit Aktionen enthält, können Benutzer diese Aktionen nur über Mausklick oder Tabulator-Rücknavigation auswählen. Für diesen Anwendungsfall können Sie den Fokus auf die erste Aktionsschaltfläche in der empfangenen Skillnachricht legen, indem Sie focusOnNewMessage: 'action' festlegen. Wenn die Nachricht keine Aktionen enthält, wird der Fokus auf das Benutzereingabefeld gelegt.

Tastenkombinationen und Zugriffstasten

Durch die Definition des Objekts hotkeys können Sie Tastenkombinationen für Alt-Tasten erstellen, mit denen UI-Elemente im Chatwidget aktiviert oder fokussiert werden. Benutzer können diese Tastenkombinationen anstelle von Maus- oder Berührungsgesten ausführen. Beispiel: Benutzer können Alt + L eingeben, um das Chatwidget zu starten, und Alt + C, um es auszublenden. Sie weisen den Elementen mithilfe der Schlüssel/Wert-Paare des Objekts hotkeys die Tastaturtasten zu. Beispiel:
var settings = {
    // ...,
    hotkeys: {
        collapse: 'c',  // Usage: press Alt + C to collapse the chat widget when chat widget is expanded
        launch: 'l'     // Usage: press Alt + L to launch the chat widget when chat widget is collapsed
    }
};
Beim Erstellen dieser Schlüssel/Wert-Paare gilt Folgendes:
  • Sie können nur einen einzelnen Buchstaben oder eine Ziffer für einen Schlüssel übergeben.
  • Sie können nur die Tastaturtasten a-z und 0-9 als Werte verwenden.
Sie können das Hotkey-Attribut übergeben, indem Sie die folgenden Schlüssel definieren.
Hinweis

Beim Attribut muss die Groß-/Kleinschreibung nicht berücksichtigt werden.
Taste Element
clearHistory Die Schaltfläche, mit der die Unterhaltungshistorie gelöscht wird.
close Die Schaltfläche, die das Chatwidget schließt und die Unterhaltung beendet.
collapse Die Schaltfläche, mit der das eingeblendete Chatwidget ausgeblendet wird.
input Das Texteingabefeld im Chatfooter.
keyboard Die Schaltfläche, die den Eingabemodus von Sprache zu Text wechselt.
language Das Auswahlmenü, das die Sprachauswahlliste anzeigt.
launch Schaltfläche zum Starten des Chatwidgets
mic Die Schaltfläche, mit der der Eingabemodus von Text auf Sprache umgeschaltet wird.
send Die Schaltfläche, die den Eingabetext an den Skill sendet.
shareMenu Die Schaltfläche "Menü freigeben" im Chatfußzeile
shareMenuAudio Die Menüoption im Popup-Menü "Teilen", die eine Audiodatei zum Teilen auswählt.
shareMenuFile Die Menüoption im Popup-Menü "Teilen", die eine generische Datei zum Teilen auswählt.
shareMenuLocation Die Menüoption im Popup-Menü "Teilen", die den Benutzerstandort für das Teilen auswählt.
shareMenuVisual Die Menüoption im Popup-Menü "Teilen", die eine Bild- oder Videodatei zum Teilen auswählt.

Headless-SDK

Feature-Flag: enableHeadless: true (Standard: false)

Ähnlich wie Headless-Browser kann das SDK auch ohne seine UI verwendet werden. Das SDK verwaltet die Verbindung zum Server und stellt APIs zum Senden von Nachrichten, Empfangen von Nachrichten und Abrufen von Aktualisierungen zum Netzwerkstatus bereit. Mit diesen APIs können Sie mit dem SDK interagieren und die UI aktualisieren. Um dieses Feature zu aktivieren, übergeben Sie enableHeadless: true in den anfänglichen Einstellungen. Die Kommunikation kann wie folgt implementiert werden:
  • Nachrichten senden: Ruft Bots.sendMessage(message) auf, um eine Payload an den Server zu übergeben.
  • Nachrichten empfangen: Auf Antworten kann mit Bots.on('message:received', <messageReceivedCallbackFunction>) gehorcht werden.
  • Aktualisierung des Verbindungsstatus abrufen: Horcht mit Bots.on('networkstatuschange', <networkStatusCallbackFunction>) auf Aktualisierungen des Verbindungsstatus. Der Callback hat einen Statusparameter, der mit Werten von 0 bis 3 aktualisiert wird, wobei jeder Wert einem WebSocket-Status zuordnet ist:
    • 0 : WebSocket.CONNECTING
    • 1: WebSocket.OPEN
    • 2: WebSocket.CLOSING
    • 3: WebSocket.CLOSED
    • Vorschläge für eine Abfrage zurückgeben: Gibt einen Promise zurück, der als die Vorschläge für die angegebene Abfragezeichenfolge aufgelöst wird. Der Promise wird abgelehnt, wenn das Abrufen des Vorschlags zu lang dauert (etwa 10 Sekunden).
      Bots.getSuggestions(utterance)
          .then((suggestions) => {
              const suggestionString = suggestions.toString();
              console.log('The suggestions are: ', suggestionString);
          })
          .catch((reason) => {
              console.log('Suggestion request failed', reason);
          });
    Hinweis

    Um diese API zu verwenden, müssen Sie die autocomplete-Option (
    enableAutocomplete: true
    ) aktivieren und die automatische Vervollständigung für die Intents konfigurieren.

Mehrsprachiger Chat

Mit der nativen Sprachunterstützung des Web-SDK kann das Chatwidget die Sprache eines Benutzers erkennen oder es Benutzern ermöglichen, die Unterhaltungssprache auszuwählen. Benutzer können zwischen Sprachen wechseln, aber nur zwischen Unterhaltungen und nicht während einer Unterhaltung, da die Unterhaltung zurückgesetzt wird, wenn ein Benutzer eine neue Sprache wählt.

Sprachmenü aktivieren

Sie können ein Menü aktivieren, mit dem Benutzer eine bevorzugte Sprache aus einem Dropdown-Menü auswählen können, indem Sie die Eigenschaft multiLangChat mit einem Objekt definieren, das das Array supportedLangs enthält, das aus Sprachtags (lang) und optionalen Anzeigelabels (label) besteht. Außerhalb dieses Arrays können Sie optional die Standardsprache mit dem Schlüssel primary festlegen (primary: 'en' im folgenden Snippet).
multiLangChat: {
    supportedLangs: [{
        lang: 'en'
    }, {
        lang: 'es',
        label: 'Español'
    }, {
        lang: 'fr',
        label: 'Français'
    }, {
        lang: 'hi',
        label: 'हिंदी'
    }],
    primary: 'en'
}
Das Chatwidget zeigt die übergebenen unterstützten Sprachen in einem Dropdown-Menü im Header an. Neben den verfügbaren Sprachen enthält das Menü auch die Option Sprache ermitteln. Wenn ein Benutzer eine Sprache in diesem Menü auswählt, wird die aktuelle Unterhaltung zurückgesetzt, und eine neue Unterhaltung mit der ausgewählten Sprache wird gestartet. Die vom Benutzer ausgewählte Sprache wird in allen Sessions desselben Browsers beibehalten. So wird die vorherige Sprache des Benutzers automatisch ausgewählt, wenn der Benutzer den Skill über die Seite mit dem Chatwidget erneut öffnet.

Tipp:

Sie können einen Ereignis-Listener für das Ereignis chatlanguagechange hinzufügen (in der Referenz zu dem Oracle-Web-SDK beschrieben, das auf der Seite Downloads verfügbar ist). Dieser wird ausgelöst, wenn eine Chatsprache aus dem Dropdown-Menü ausgewählt oder geändert wurde.
Bots.on('chatlanguagechange', function(language) {
    console.log('The selected chat language is', language);
});
Beachten Sie bei der Konfiguration des Dropdown-Menüs für die Sprache die folgenden Aspekte:
  • Sie müssen mindestens zwei Sprachen definieren, damit das Dropdown-Menü angezeigt werden kann.
  • Der Schlüssel label ist für die nativ unterstützten Sprachen optional: fr wird im Menü als Französisch angezeigt, es als Spanisch usw.
  • Labels für die Sprachen können dynamisch festgelegt werden, indem die Labels mit der Einstellung i18n übergeben werden. Sie können das Label für jede Sprache festlegen, indem Sie es an den Schlüssel language_<languageTag> übergeben. Dieses Muster ermöglicht das Festlegen von Labels für jede Sprache (ob unterstützt oder nicht unterstützt) sowie Übersetzungen des Labels selbst in verschiedene Gebietsschemas. Beispiel:
    i18n: {
        en: {
            langauge_de: 'German',
            language_en: 'English',
            language_sw: 'Swahili',
            language_tr: 'Turkish'
        },
        de: {
            langauge_de: 'Deutsche',
            language_en: 'Englisch',
            language_sw: 'Swahili',
            language_tr: 'Türkisch'
        }
    }
    Wenn die Eigenschaft i18n Übersetzungszeichenfolgen für die ausgewählte Sprache enthält, wird der Text für Felder wie Eingabeplatzhalter, Chattitel, Mouseover-Text für Schaltflächen und QuickInfo-Titel automatisch in die ausgewählte Sprache geändert. Der Feldtext kann nur dann in eine andere Sprache geändert werden, wenn Übersetzungszeichenfolgen für die ausgewählte Sprache vorhanden sind. Wenn diese Zeichenfolgen nicht vorhanden sind, bleibt die Sprache für den Feldtext unverändert.
  • Das Widget erkennt automatisch die Sprache im Benutzerprofil und aktiviert die Option Sprache erkennen, wenn Sie den Schlüssel primary nicht angeben.
  • Wenn label optional ist und Sie eine Sprache hinzugefügt haben, die nicht nativ unterstützt wird, fügen Sie ein Label zur Identifizierung des Tags hinzu, insbesondere wenn keine i18n-Zeichenfolge für die Sprache vorhanden ist. Beispiel: Wenn Sie nicht label: 'हिंदी' für lang: hi definieren, wird in der Dropdown-Liste stattdessen hi angezeigt, was zu einer suboptimalen Benutzererfahrung führt.

Sprachmenü deaktivieren

Ab Version 21.12 können Sie die Chatsprache auch konfigurieren und aktualisieren, ohne das Dropdown-Menü für die Sprachauswahl konfigurieren zu müssen. Übergeben Sie dazu multiLangChat.primary in der anfänglichen Konfiguration, ohne auch ein multiLangChat.supportedLangs-Array zu übergeben. Der in der Variable primary übergebene Wert wird als Chatsprache für die Unterhaltung festgelegt.

Spracherkennung

Neben den übergebenen Sprachen zeigt das Chatwidget in der Dropdown-Liste auch die Option Sprache erkennen an. Bei Auswahl dieser Option erkennt der Skill die Unterhaltungssprache automatisch anhand der Nachricht des Benutzers und antwortet nach Möglichkeit in derselben Sprache.
Hinweis

Wenn Sie den Schlüssel primary nicht angeben, erkennt das Widget automatisch die Sprache im Benutzerprofil und aktiviert die Option Sprache erkennen im Menü.

Sie können die ausgewählte Sprache dynamisch aktualisieren, indem Sie die API setPrimaryChatLanguage(lang) aufrufen. Wenn der übergebene lang-Befehl mit einer der unterstützten Sprachen übereinstimmt, wird diese Sprache ausgewählt. Wenn keine Übereinstimmung gefunden werden kann, wird Sprache erkennen aktiviert. Sie können die Option Ermittelte Sprache auch aktivieren, indem Sie die setPrimaryChatLanguage('und')-API aufrufen, wobei 'und' unbestimmt angibt, oder indem Sie multiLangChat: {primary: null} oder multiLangChat: {primary: 'und'} übergeben.

Sie können die Chatsprache auch dann dynamisch mit der API setPrimaryChatLanguage(lang) aktualisieren, wenn das Dropdown-Menü nicht konfiguriert wurde. Beispiel:
Bots.setPrimaryChatLanguage('fr')
Sie können die Sprache dynamisch aktualisieren, unabhängig davon, ob die Chatsprache ursprünglich konfiguriert wurde oder nicht.
Hinweis

Spracherkennung ist bei der Konfiguration verfügbar, wenn Benutzer eine unterstützte Sprache auswählen. Sie ist nicht verfügbar, wenn die Option Sprache erkennen festgelegt ist. Die Auswahl einer Sprache, die von der Spracherkennung nicht unterstützt wird, deaktiviert die Erkennungsfunktion, bis eine unterstützte Sprache ausgewählt wird.

Kurzreferenz für mehrsprachigen Chat

Gehen Sie folgendermaßen vor... ... Vorgehensweise
Zeigen Sie die Dropdown-Liste für die Sprachauswahl für Endbenutzer an. Übergeben Sie multiLangChat.supportedLangs.
Legen Sie die Chatsprache fest, ohne den Endbenutzern das Dropdown-Menü für die Sprachauswahl anzuzeigen. Übergeben Sie multiLangChat.primary.
Standardsprache festlegen Übergeben Sie multiLangChat.primary mit multiLangChat.supportedLangs. Der Wert primary muss eine der unterstützten Sprachen im Array sein.
Spracherkennung aktivieren. Übergeben Sie primary: null oder primary: 'und' mit multiLangChat.
Chat-Sprache dynamisch aktualisieren. Rufen Sie die API setPrimaryChatLanguage(lang) auf.

Webansicht im Widget

Sie können das Linkverhalten in Chatnachrichten konfigurieren, damit Benutzer über das Chatwidget auf Webseiten zugreifen können. Anstatt die Unterhaltung zu verlassen, um eine Seite auf einer Registerkarte oder in einem separaten Browserfenster anzuzeigen, kann ein Benutzer im Chat verbleiben, da das Chatwidget den Link in einer Webansicht öffnet.

Linkverhalten zur Webansicht konfigurieren

Sie können die Webansicht auf alle Links anwenden. In der Regel wenden Sie es aber nur auf ausgewählte Links an. Außerdem können Sie die Webansicht selbst anpassen.
  • Um alle Links in der Webansicht zu öffnen, übergeben Sie linkHandler: { target: 'oda-chat-webview' } in den Einstellungen. Dadurch wird das Ziel aller Links auf oda-chat-webview gesetzt. Das ist der iframe-Name in der Webansicht.
  • Um nur bestimmte Links in der Webansicht zu öffnen und gleichzeitig sicherzustellen, dass andere Links normal in anderen Registerkarten oder Fenstern geöffnet werden, verwenden Sie den Delegaten beforeDisplay. Um eine bestimmte Nachrichten-URL-Aktion in der Webansicht zu öffnen, ersetzen Sie den Wert 'url' des Feldes action.type durch 'webview'. Wenn der Aktionstyp in der Funktion beforeDisplay 'webview' lautet, öffnet die Aktionsschaltfläche den Link in der Webansicht, wenn auf ihn geklickt wird.

Links aus der Webansicht öffnen

Links, die in eine Seite eingebettet sind, die in der Webansicht angezeigt wird, können nur in der Webansicht geöffnet werden, wenn sie in ein Ankerelement (<a>) konvertiert werden, wobei das Attribut target als target="oda-chat-webview" definiert ist.

WebView anpassen

Sie können die Webansicht mit der Einstellung webViewConfig anpassen, die ein Objekt akzeptiert. Beispiel:
{ referrerPolicy: 'no-referrer-when-downgrade', closeButtonType: 'icon', size: 'tall' 
Die Felder in diesem Objekt sind optional.
Hinweis

Die Konfiguration kann auch dynamisch aktualisiert werden, indem Sie ein webViewConfig-Objekt in der Methode setWebViewConfig übergeben. Jede Eigenschaft im Objekt ist optional.
Feld Value Beschreibung
accessibilityTitle Zeichenfolge Der Name des Webansichts-Frameelements für barrierefreien Webzugriff.
closeButtonIcon Zeichenfolge Die Bild-URL/SVG-Zeichenfolge, mit der das Symbol "Schließen" angezeigt wird.
closeButtonLabel Zeichenfolge Textlabel/QuickInfo-Titel für die Schaltfläche "Schließen".
closeButtonType
  • 'icon'
  • 'label'
  • 'iconWithLabel'
Legt fest, wie die Schaltfläche "Schließen" in der Webansicht angezeigt wird.
referrerPolicy ReferrerPolicy Gibt an, welcher Referrer beim Abrufen der Frameressource gesendet werden soll. Der Policy-Wert referrerPolicy muss eine gültige Direktive sein. Die angewendete Standard-Policy ist 'no-referrer-when-downgrade'.
sandbox Ein Zeichenfolgenarray Ein Array gültiger Einschränkungszeichenfolgen, mit denen bestimmte Aktionen innerhalb des Frames ausgeschlossen werden können. Die Einschränkungen, die an dieses Feld übergeben werden können, sind in der Beschreibung des Attributs sandbox in der MDN-Webdokumentation enthalten.
size
  • 'tall'
  • 'full'
Die Höhe der Webansicht im Vergleich zur Höhe des Chatwidgets. Wenn dieser Wert auf 'tall' gesetzt ist, wird er auf 80 % der Höhe des Widgets gesetzt. Bei 'full' entspricht er der Höhe des Widgets.
title Zeichenfolge Der Titel, der im Header des Containers der Webansicht angezeigt wird.
Möglicherweise können nicht alle Links in der Webansicht geöffnet werden. Das kann folgende Gründe haben:
  • Seiten mit dem Antwortheader X-frame-options: deny oder X-frame-options: sameorigin können aufgrund von serverseitigen Einschränkungen, die das Öffnen der Seite innerhalb von iFrames verhindern, möglicherweise nicht in der Webansicht geöffnet werden. In diesen Fällen zeigt die Webansicht den Link erneut dem Benutzer an, damit er ihn in einem neuen Fenster oder einer neuen Registerkarte öffnen kann.
  • Aufgrund serverseitiger Einschränkungen können Autorisierungsseiten nicht innerhalb der WebViews geöffnet werden, da Autorisierungsseiten immer X-frame-options: deny zurückgeben, um einen Clickjacking-Angriff zu verhindern.
  • Externe Links können nicht korrekt in der Webansicht geöffnet werden. Nur Links, die in die Unterhaltungsnachrichten eingebettet sind, können in der Webansicht geöffnet werden.
    Hinweis

    Da externe Nachrichten nicht mit der Webansicht kompatibel sind, dürfen Sie keinen externen Links zum Öffnen in der Webansicht festlegen.
Wenn ein Link nicht in der Webansicht geöffnet werden kann, zeigt das Widget Informationstext und einen Link zur Webansicht an. Beim Klicken darauf wird die Seite in einer neuen Registerkarte geöffnet. Sie können diesen Text mit der i18n-Übersetzungszeichenfolge webViewErrorInfoText anpassen:
settings = {
    URI: 'instance',
    //...,
    i18n: {
        en: {
            webViewErrorInfoText: 'This link can not be opened here. You can open it in a new page by clicking {0}here{/0}.'
        }
    }
}

Langes Polling

Feature-Flag: enableLongPolling: true (Standard: false)

Das SDK verwendet WebSockets zur Verbindung mit dem Server und zur Kommunikation mit Skills. Wenn das WebSocket aus irgendeinem Grund über das Netzwerk deaktiviert ist, können traditionelle HTTP-Aufrufe zum Chat mit dem Skill verwendet werden. Dieses Feature wird als langes Polling bezeichnet, da das SDK den Server kontinuierlich aufrufen oder abfragen muss, um die neuesten Nachrichten vom Skill abzurufen. Dieses Fallback-Feature kann aktiviert werden, indem Sie enableLongPolling: true in den anfänglichen Einstellungen übergeben.

Eingabeindikator für Benutzer-Agent-Unterhaltungen

Feature-Flag: enableSendTypingStatus: boolesch (Standard: false)

Mit dieser Funktion können Agents feststellen, ob Benutzer noch an der Unterhaltung beteiligt sind, indem sie den Benutzerstatus an den Live-Agent senden. Wenn enableSendTypingStatus auf true gesetzt ist, sendet das SDK ein Statusereignis der Typisierung RESPONDING zusammen mit dem Text, der derzeit vom Benutzer eingegeben wird, an Oracle B2C Service oder Oracle Fusion Service. Dadurch wird wiederum ein Tippindikator auf der Agent-Konsole angezeigt. Wenn der Benutzer die Eingabe beendet hat, sendet das SDK ein LISTENING-Ereignis an den Service, um den Eingabeindikator in der Agent-Konsole auszublenden.

Die Konfiguration typingStatusInterval, die einen Mindestwert von drei Sekunden hat, drosselt die Eingabestatusaktualisierung.

Um einen Oracle B2C Service-Agent sowohl den vom Benutzer eingegebenen Text als auch den Eingabestatus zu senden, muss enableAgentSneakPreview (standardmäßig false) auf true gesetzt sein, und die Sneak-Vorschau muss in der Oracle B2C Service-Chatkonfiguration aktiviert sein.
Hinweis

Sie müssen den Livetippstatus nicht auf der Benutzerseite konfigurieren. Der Benutzer kann standardmäßig den Eingabestatus des Agent anzeigen. Wenn der Agent eingibt, erhält das SDK eine RESPONDING-Statusmeldung, die zur Anzeige eines Eingabeindikators in der Ansicht des Benutzers führt. Wenn der Agent im Leerlauf ist, erhält das SDK eine LISTENING-Statusmeldung, mit der der Eingabeindikator ausgeblendet wird.

Spracherkennung

Feature-Flag: enableSpeech: true (Standard: false)

Wenn Sie enableSpeech: true festlegen, kann die Schaltfläche "Mikrofon" anstelle der Sendeschaltfläche angezeigt werden, wenn das Benutzereingabefeld leer ist.

Ihr Skill kann die Spracherkennung auch mit der Methode startVoiceRecording(onSpeechRecognition, onSpeechNetworkChange) zum Starten von Aufzeichnungen und mit der Methode stopVoiceRecording zum Stoppen von Aufzeichnungen verwenden. (Diese Methoden werden im Benutzerhandbuch beschrieben, das im SDK enthalten ist.)

Mit dem Flag enableSpeechAutoSend können Sie konfigurieren, ob der von der Stimme des Benutzers erkannte Text ohne manuelle Eingabe vom Benutzer direkt an den Chatserver gesendet werden soll. Wenn Sie diese Eigenschaft auf true (Standard) setzen, kann die Sprachantwort des Benutzers automatisch an den Chatserver gesendet werden. Wenn Sie diesen Wert auf false setzen, kann der Benutzer die Nachricht bearbeiten, bevor sie an den Chatserver gesendet wird, oder sie löschen.

Sprachvisualisierung

Featurekonfiguration: enableSpeechAutoSend

Das Chatwidget zeigt eine Sprachvisualisierung an, wenn Benutzer auf das Sprachsymbol Dieses Bild zeigt das Symbol "Sprechen" der Sprachvisualisierung. klicken. Es ist ein Indikator dafür, ob der Audiopegel hoch genug ist, damit das SDK die Stimme des Benutzers erfassen kann. Die Nachricht des Benutzers wird als Text erkannt und unter der Visualisierung angezeigt.
Hinweis

Der Sprachfunktionsmodus wird durch Anzeige des Tastatursymbols Dieses Bild zeigt das Symbol "Tastatur". angegeben.
Beschreibung von voice-visualizer.png folgt
Beschreibung der Abbildung voice-visualizer.png
Da die Standardeinstellung für enableSpeechAutosend true ist (enableSpeechAutoSend: true), werden Nachrichten automatisch gesendet, nachdem sie erkannt wurden. Wenn Sie enableSpeechAutoSend: false festlegen, wechselt der Eingabemodus zu Text, nachdem die Sprachnachricht erkannt wurde, sodass Benutzer ihre Nachrichten als Text bearbeiten oder vervollständigen können, bevor sie sie manuell senden. Alternativ können Benutzer ihre Nachricht mit der Sprachfunktion über einen nachfolgenden Klick auf das Sprachsymbol vervollständigen, bevor sie sie manuell senden.
Hinweis

Die Sprachvisualisierung wird mit AnalyserNode erstellt. Sie können die Sprachvisualisierung mit der Methode startVoiceRecording im Headless-Modus implementieren. Weitere Informationen zu AnalyserNode und Frequenzebenen finden Sie im SDK.