Personalizzare il widget Chat

È possibile personalizzare vari aspetti del widget di chat, ad esempio il layout e le icone, i colori e il testo.

Suggerimento

Questo articolo fornisce una panoramica delle varie proprietà di personalizzazione.

Configurazione rete

L'SDK viene avviato utilizzando queste proprietà di connessione. L'applicazione di esempio fornita con l'SDK fornisce un esempio di come impostarle nel file scripts/settings.js.
Nome proprietà descrizione; Richiesto? Valore predefinito
URI URL di Oracle Chat Server N/A
channelId ID canale del canale Web Oracle N/A
userId Identificativo univoco dell'utente. Se non lo fornisci, Oracle Digital Asssistant ne genera uno. No Valore generato in modo casuale
clientAuthEnabled Determina se l'SDK si connette a un canale in cui è stata abilitata l'autenticazione client. Come descritto in Configura autenticazione client, è possibile impostare questa opzione su true per connettersi al canale con autenticazione abilitata e utilizzare il token JWT. false

Flag funzioni

Utilizzare le proprietà Flag funzione per:
  • Connessioni sicure
  • Pulsanti di azione a forma di pillola
  • Audio narrazione delle risposte di abilità.
  • Condivisione degli allegati
  • Disabilitazione dei clic sui messaggi precedenti (fuori stato attivo)
  • Completamento automatico input utente
Ad esempio:

    <script>
        const chatSettings = {
            showConnectionStatus: true,
            conversationBeginPosition: 'bottom',
            openChatOnLoad: true,
            position: {bottom: '2px', right: '2px'},
            displayActionAsPills: true,
            initUserHiddenMessage: 'Hello',
            embedded: true,
            targetElement: 'chat-container',    
            embedTopScrollId: 'top-text',
            customHeaderElementId: 'custom-header',
            botButtonIcon: 'images/bot-button.png', 
            logoIcon: 'images/bot-white.png', 
            botIcon: 'images/bot-green.png',        
            personIcon: 'images/user-icon.png',
            URI: YOUR_URI,
            channelId: YOUR_CHANNELID,

         };

...
    </script>

Suggerimento

A partire dalla release 22.08, lo schema delle impostazioni di configurazione del widget chat è disponibile in un formato di schema JSON standard tramite una rete CDN (https://static.oracle.com/cdn/oda/22.8.0/settings-schema.json), che può essere utilizzata per creare schermate di configurazione dinamiche.
Nome proprietà descrizione; Richiesto? Valore predefinito
alwaysShowSendButton Visualizza il pulsante Invia nel piè di pagina della chat anche quando non è presente testo di input utente. No false
defaultGreetingTimeout Timeout predefinito, in secondi, dopo il quale viene visualizzato un messaggio di saluto predefinito. No 5
defaultWaitMessageInterval Intervallo predefinito, in secondi, visualizzato dal messaggio di attesa predefinito. No 5
disablePastActions Disabilita i pulsanti di azione in un messaggio di skill dopo che un utente ha interagito con un'azione di postback, posizione o sottomissione modulo. I valori consentiti sono all, none o postback. Quando l'opzione è impostata su all, tutti i pulsanti di azione del messaggio vengono disabilitati all'interazione. L'impostazione di postback disabilita solo le azioni di postback e di posizione e l'impostazione di none mantiene tutti i pulsanti abilitati anche dopo un'interazione. Il funzionamento abilitato da questa proprietà è indipendente dalla configurazione a livello di assistente digitale per la disabilitazione della selezione delle azioni precedenti. È necessario impostare i due separatamente. No all
displayActionsAsPills Visualizza i pulsanti di azione a forma di pillola. No false
enableAttachment Configura la condivisione degli allegati. No true
enableAttachmentSecurity Quando l'impostazione è true, alle richieste di caricamento degli allegati vengono passate intestazioni aggiuntive per assicurarsi che non possano essere scaricate senza passare un token JWT firmato valido come intestazione di autorizzazione.

Non abilitare questa impostazione se la competenza si connette a un'istanza ODA versione 20.08 o viene eseguita su qualsiasi versione precedente alla 20.08. Questa proprietà si applica solo alle connessioni abilitate per l'autenticazione del client alle versioni 20.12 e successive della piattaforma ODA.

No false
enableAutocomplete Impostare su true per abilitare la capacità di completare automaticamente la richiesta utente utilizzando le richieste utente idealizzate immesse come suggerimenti di completamento automatico nella pagina Crea intento. Lo skill interrompe questi suggerimenti quando l'utente immette tre o più caratteri. Consente inoltre di impostare le parole nell'input utente che corrispondono alle frasi suggerite in grassetto. No false
enableBotAudioResponse Abilita l'espressione delle risposte di un'abilità quando vengono ricevute utilizzando l'API di sintesi vocale Web. No false
enableClearMessage Abilita il pulsante Cancella messaggio nell'intestazione del widget chat. No false
enableDraggableButton Consente agli utenti di trascinare il pulsante del widget chat quando il contenuto della pagina Web viene bloccato. Questa funzione funziona anche per i browser Safari Android e iOS. No false
enableHeadless Consente di utilizzare Oracle Web SDK senza la relativa interfaccia utente in modo da sviluppare la propria interfaccia utente di chat. No false
enableLocalConversationHistory Consente di caricare nel browser la conversazione precedente associata a un determinato userId quando il widget è stato inizializzato. No false
enableLongPolling Utilizzare le richieste HTTP quando il websocket non riesce a connettersi. No false
enableSecureConnection Configura la comunicazione sicura (https v. http e wss v. ws). No true
enableSpeech Quando è impostata su true, questa proprietà abilita il microfono per il riconoscimento delle voci. Ad esempio:
const chatSettings = {
    URI: 'idcs-oda-example.com',
    channelId: '9999b1-f99a-9999-999ee-df9d99999d',
    enableSpeech: true
};
No false
enableSpeechAutoSend Quando l'impostazione è true (impostazione predefinita), la risposta vocale dell'utente viene inviata automaticamente al server chat e viene visualizzata come messaggio inviato nel widget chat. Quando è impostata su false, la risposta vocale dell'utente viene visualizzata nel campo di testo del messaggio prima dell'invio al server di chat in modo che l'utente possa modificarla prima di inviarla manualmente o eliminare il messaggio. No true
focusOnNewMessage Imposta la focus sul campo di input dell'utente o sul primo pulsante di azione in un messaggio quando viene ricevuto un nuovo messaggio.
  • action: quando viene ricevuto un messaggio, lo stato attivo è il primo pulsante di azione (se il messaggio dispone di pulsanti di azione). Se il messaggio non dispone di pulsanti, lo stato attivo è il campo di input dell'utente.
  • input: il campo di input utente rimane attivo quando vengono ricevuti nuovi messaggi.
No input
multiLangChat Consente al widget chat di rilevare la lingua di un utente e di selezionare una lingua preferita da un menu a discesa nell'intestazione. Il menu viene definito con un oggetto che definisce la lingua principale e un array di due o più tag di lingua (l'array supportedLangs, descritto in Chat multilingue). No N/A
name Il nome dell'istanza. Fornisce uno spazio di nomi all'istanza e viene utilizzato come prefisso per i nomi di classe CSS e gli ID elemento. No oda-chat
openChatOnLoad Espande il widget chat quando viene caricata la pagina. No false
openLinksInNewWindow Esegue l'override delle preferenze del browser dell'utente aprendo i collegamenti in una nuova finestra. Questa impostazione si applica a tutti i collegamenti presenti nella conversazione, inclusi i pulsanti di azione, i collegamenti di fallback per gli allegati e i collegamenti alle schede. No false
showConnectionStatus Consente la visualizzazione dello stato della connessione nell'intestazione del widget chat. No false
showPrevConvStatus Visualizza i messaggi di stato alla fine dei messaggi meno recenti delle conversazioni precedenti. No true
showTypingIndicator Visualizza un fumetto della chat in attesa di una risposta. No true

Funzionalità

Utilizzare le proprietà Funzionalità per:
  • Imitare una conversazione avviata con abilità.
  • Incorpora il contenuto nella parte superiore e inferiore della finestra di chat che scorre o che è fermo (appiccicoso).
  • Impostare le impostazioni internazionali.
  • Imposta la modalità debug.
  • Impostare la lingua e la voce per la sintesi vocale.
Proprietà descrizione; Richiesto? Valore predefinito
customHeaderElementId Assegna un nome all'ID dell'elemento <div> aggiunto all'intestazione del widget chat. No N/A
delegate Oggetto che imposta un delegato per la ricezione di callback prima che si verifichino determinati eventi in una conversazione. L'oggetto delegate consente al codice di interagire sia con i messaggi utente che con le risposte alle competenze prima dell'invio dei messaggi e della visualizzazione delle risposte. No N/A
embedBottomScrollId L'ID dell'elemento aggiunto come contenuto scorrevole nella parte inferiore della chat. Utilizzare questa proprietà per aggiungere contenuto personalizzato nella vista conversazione del widget chat. No N/A
embedBottomStickyId L'ID dell'elemento utilizzato per il contenuto adesivo visualizzato nella parte inferiore della chat. Utilizzare questa proprietà per aggiungere contenuto personalizzato nella vista conversazione del widget chat. No N/A
embedded Se si imposta questa opzione su true, viene attivata la modalità incorporata per il widget chat. Oltre a impostare questa proprietà, è necessario assegnare un nome all'elemento div che ospita il widget nella proprietà targetElement. No false
embeddedVideo Se si imposta questa opzione su true, vengono incorporati i collegamenti per i video YouTube, Daily Motion e Oracle Video Hub in modo che possano essere riprodotti dal widget di chat. No false
embedTopscrollId L'ID dell'elemento div aggiunto come contenuto a scorrimento nella parte superiore del widget chat. No N/A
embedTopStickyId ID dell'elemento div utilizzato per il contenuto adesivo visualizzato nella parte superiore del widget chat. Utilizzare questa proprietà per aggiungere contenuto personalizzato nella vista conversazione del widget chat. Ad esempio, l'elemento top-text div nel seguente snippet viene utilizzato come riferimento come embedTopStickyId: 'top-text':

<div id="top-text" style="padding: 0; text-align: initial">
<p>Talk to Pizzabot to order your pizza.</p>
</div>
Nell'esercitazione su Web SDK viene descritto come configurare questa proprietà e impostare lo scorrimento e il non scorrimento per gli elementi del widget chat.
No N/A
enableAgentSneakPreview Invia all'agente il testo inserito dall'utente insieme allo stato di digitazione. No false
enableAutocompleteClientCache Consente l'inserimento nella cache lato client per ridurre al minimo le chiamate al server quando è in uso la funzione di completamento automatico. No false
enableDefaultClientResponse Se l'impostazione è true, il client visualizza le risposte predefinite quando la risposta dello skill è stata ritardata o quando non è presente alcuna risposta dallo skill. No false
enableEndConversation Consente all'utente di terminare la conversazione e reimpostare la sessione di chat. Cancella inoltre la cronologia delle conversazioni locali, si disconnette dal server di chat e riduce al minimo il widget No true
enableHeaderActionCollapse Comprime le azioni di intestazione in un pulsante di menu se il conteggio delle icone è maggiore di due. No true
enableResizableWidget Consente all'utente di ridimensionare il widget chat dopo averlo espanso. Se il widget si trova sul lato destro della pagina Web, gli utenti modificano le dimensioni trascinando il bordo superiore, il bordo sinistro o l'angolo superiore sinistro. Allo stesso modo, se il widget è posizionato sul lato sinistro, gli utenti ridimensionano il bordo superiore, il bordo destro o l'angolo superiore destro. No false
enableSendTypingStatus Invia lo stato di digitazione dell'utente all'agente reale. No false
enableTabsSync Sincronizza i messaggi di conversazione tra schede diverse per un determinato userId e channelId. No true
enableVoiceOnlyMode Abilita la modalità solo vocale. L'attivazione della modalità solo vocale elimina la necessità per gli utenti di fare clic sul pulsante microfono ogni volta che ricevono un messaggio bot. Con questa modalità abilitata, l'SDK avvia automaticamente il riconoscimento vocale una volta che il TTS (Text-to-Speech) per il messaggio ricevuto è stato pronunciato. No false
hotkeys Oggetto che contiene un elenco di tasti da tastiera che attivano o attivano elementi mediante il tasto ALT combinato con il tasto di scelta rapida passato. No {...} Esempio:
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
    }
i18n Oggetto che contiene i campi delle impostazioni nazionali. Ogni impostazione nazionale gestisce le coppie chiave-valore i18n per le stringhe di testo utilizzate nel widget. No {'en-us':{…}}
Ad esempio:
"i18n": {
                "en-us": {
                    "chatTitle": "Pizza King"
                }
            } 
initBotAudioMuted Inizializza l'espressione del messaggio di skill in modalità con audio disattivato. Questa funzione può essere attivata solo quando si imposta enableBotAudioResponse su true. No true
initMessageOptions Mentre initUserHiddenMessage invia il messaggio iniziale "nascosto" solo dopo che il client si è connesso alla skill e il widget chat è stato espanso, è possibile utilizzare questa impostazione per inviare messaggi non appena il client si è connesso alla skill, indipendentemente dal fatto che il widget sia espanso o meno. Questa impostazione accetta un oggetto con una proprietà sendAt. La proprietà sendAt può avere uno dei due valori seguenti: 'init' o 'expand'. Se si imposta 'init', i messaggi di inizializzazione vengono inviati non appena viene stabilita la connessione. Se si imposta 'expand', i messaggi di inizializzazione vengono inviati solo quando il widget viene espanso. Nel seguente snippet, il messaggio viene impostato quando viene stabilita la connessione a causa di sendAt: 'init':
const chatSettings = {
    URI: '...',
    channelId: '...',
    initUserHiddenMessage: 'Hello',
    initMessageOptions: {
        sendAt: 'init'
    }
}
Bots = new WebSDK(settings);
Bots.connect();
Tenere presente che la fatturazione inizia quando il messaggio di inizializzazione è stato inviato, anche se il widget è ancora chiuso (come nel caso di sendAt: 'init').
  N/A
initUserHiddenMessage Messaggio utilizzato per avviare una conversazione. Questo messaggio può essere una stringa di testo o un payload di messaggi. Ad esempio: initUserHiddenMessage: 'Hi'. Questi messaggi non dipendono dalla cronologia utente. Questo messaggio viene inviato in ogni sessione dopo che il client si è connesso allo skill e il widget chat è stato espanso. Per inviare il primo messaggio solo quando la cronologia delle conversazioni è vuota, è necessario associare i listener di eventi utilizzando il metodo Bots.on(). Per eseguire questa operazione, ad esempio, è possibile associare gli eventi WIDGET_OPENED e NETWORK, descritti nella documentazione SDK. No N/A
initUserProfile Aggiorna il profilo utente prima dell'inizio di una conversazione. Il formato del payload del profilo deve essere { profile: {...} }. Ad esempio:
initUserProfile : {
    profile:{
    givenName: 'First',
    surname: 'Last',
    email: 'first.last@example.com',
    properties: {
        lastOrderedItems: '1 medium pepperoni'
    }
}
Questa funzione aggiorna il contesto utente dopo che il client è stato connesso allo skill e il widget chat è stato espanso. Di conseguenza, il profilo utente può essere riflesso nel primo messaggio di risposta all'utente. Ad esempio, l'abilità può salutare l'utente con un messaggio come "Benvenuto, John Smith! Il tuo ultimo ordine è stata una pizza di peperoni medio". Questi messaggi vengono inviati dopo che il client si è connesso allo skill e il widget di chat è stato espanso. Questi messaggi del profilo utente vengono inviati dopo che il client si è connesso allo skill e il widget chat è stato espanso. Un messaggio del profilo utente viene ancora inviato prima del messaggio iniziale "nascosto" se viene passato anche initUserHiddenMessage.

È possibile passare solo la proprietà profile nel payload. Se è necessario passare un'altra proprietà, ad esempio messagePayload. Se il messaggio iniziale richiede sia il profilo che le proprietà messagePayload, utilizzare initUserHiddenMessage.

No N/A
isDebugMode Abilita la modalità di debug. No false
linkHandler Oggetto che esegue l'override della configurazione per la gestione dei clic sui collegamenti incorporati nelle risposte dello skill. L'oggetto gestisce i collegamenti in due modi: target, che accetta una stringa, e onclick, che accetta una funzione. È possibile impostare target o onclick, ma non entrambi. Per aprire tutti i collegamenti in un'area WebView, passare linkHandler: { target: 'oda-chat-webview' }. No
{ onclick: <function>, target: 'string' }
locale Impostazioni nazionali predefinite per le stringhe di testo del widget. Le impostazioni nazionali passate durante l'inizializzazione hanno una preferenza superiore rispetto alle impostazioni nazionali del browser degli utenti. Se non esiste una corrispondenza esatta, l'SDK tenta di trovare la lingua più vicina. Ad esempio, se le impostazioni nazionali sono 'da-dk', ma le traduzioni i18n vengono fornite solo per 'da', viene utilizzata la traduzione 'da'. In assenza di traduzioni per le impostazioni nazionali passate, le traduzioni vengono cercate e applicate per le impostazioni nazionali del browser. In assenza di traduzioni per ognuna di esse, per le traduzioni viene utilizzata la versione locale predefinita 'en'. No en-us
messageCacheSizeLimit Il numero massimo di messaggi che vengono salvati in localStorage alla volta. No 2000
reconnectMaxAttempts Il numero di tentativi effettuati dal widget chat per riconnettersi quando la connessione iniziale non riesce. No 5
shareMenuItems Le voci di menu nel menu di scelta rapida di condivisione. Questa proprietà accetta un array con valori stringa mappati alle voci di menu:
  • 'visual' per immagini e video
  • 'audio' per l'audio
  • 'file' per i file
  • 'location' per la posizione
È possibile specificare gli elementi disponibili nel menu (ad esempio, ['audio', 'file']). Tutte le voci di menu sono disponibili quando l'array è vuoto, quando le voci nell'array non sono corrette (['audio', 'visuil'] o quando non è stato definito shareMenuItems).
No
['audio', 'file', 'location', 'visual']
skillVoices Array contenente le voci preferite che vengono utilizzate per narrare le risposte. Ogni elemento nell'array deve essere un oggetto con due campi: lang e name. name è facoltativo. Il primo elemento che corrisponde a una voce disponibile nel sistema verrà utilizzato per la narrazione. Questa impostazione non è più valida. No System language
speechLocale Impostazioni nazionali previste del discorso dell'utente utilizzate per il riconoscimento vocale. La lingua predefinita è l'inglese ('en-US') degli Stati Uniti. Le altre lingue supportate sono: inglese australiano ('en-au'), inglese britannico ('en-uk'), francese ('fr-fr'), tedesco ('de-de'), italiano ('it-it'), indiano-hindi (hi-in), indiano-inglese (en-in), portoghese brasiliano ('pt-br') e spagnolo ('es-es'). Le impostazioni nazionali di sintesi vocale possono essere impostate in modo dinamico chiamando l'API setSpeechLocale('<locale>'). Il riconoscimento vocale non funzionerà se sono state passate impostazioni nazionali non supportate. No 'en-us'
storageType Il meccanismo di memorizzazione Web utilizzato per memorizzare la cronologia delle conversazioni per gli utenti il cui userId viene passato dall'applicazione host. I valori supportati sono 'localStorage' e 'sessionStorage'. Le conversazioni degli utenti anonimi vengono sempre memorizzate in sessionStorage e vengono eliminate automaticamente al termine della sessione del browser. No 'localStorage'
targetElement Assegna un nome all'elemento div in cui il widget chat viene incorporato nella pagina Web. L'elemento chat-container div nel seguente snippet viene utilizzato come riferimento come targetElement: 'chat-container':
        <div id="chat-container" class="chatbox" 
            style="height: 600px; width: 400px; padding: 0;
            text-align: initial">
        </div>
Guarda l'esercitazione su Web SDK per scoprire come aggiungere e applicare lo stile all'elemento div.
No N/A
theme Il tema del layout principale. Sono disponibili tre temi: 'default', 'redwood-dark' e 'classic'. No default
timestampFormat Formatta l'indicatore orario di consegna che accompagna i messaggi. Accetta i valori in un oggetto options DateTimeFormat o come stringa di pattern come descritto in Personalizzare l'indicatore orario

Nota: controlla l'indicatore orario del messaggio e non l'indicatore orario dell'intestazione.

.
No
{
weekday:'long',
year:'numeric',
month: 'long',
day: 'numeric'

}
timestampHeaderFormat Personalizzare il formato dell'indicatore orario nell'intestazione del messaggio. È possibile utilizzare un oggetto options DateTimeFormat o una stringa di pattern come descritto in Personalizzare l'indicatore orario. No N/A
timestampHeaderMode Configura le intestazioni dell'indicatore orario visualizzate sopra il primo messaggio del giorno. 'absolute' (il formato predefinito) visualizza l'indicatore orario completo in formato assoluto, 'relative' lo visualizza in un formato relativo e 'none' nasconde completamente l'intestazione dell'indicatore orario. No absolute
timestampMode Configura la modalità di visualizzazione dell'indicatore orario come indicatore orario assoluto visualizzato in ogni messaggio oppure come indicatore orario relativo visualizzato solo nell'ultimo messaggio.
  • default: imposta un indicatore orario relativo su ogni messaggio.
  • relative (impostazione predefinita): l'indicatore orario viene visualizzato prima del primo messaggio del giorno come indicatore orario assoluto in un'intestazione e quindi come indicatore orario relativo per i nuovi messaggi come indicatore orario di aggiornamento che indica il tempo trascorso dall'aggiunta del messaggio nella conversazione. L'indicatore orario relativo viene aggiornato a intervalli prestabiliti fino alla ricezione di un nuovo messaggio.
  • absolute: imposta un indicatore orario assoluto su ogni messaggio.
  • none: disabilita l'indicatore orario.

Nota: controlla l'indicatore orario del messaggio e non l'indicatore orario dell'intestazione.

No default (per gli indicatori orari assoluti) o relative.
ttsService Array contenente le voci preferite utilizzate per le risposte vocali tramite TTS (text-to-speech). Ogni elemento nell'array deve essere un oggetto con almeno uno dei campi seguenti: lang e name. Il primo elemento che corrisponde a una voce disponibile nel sistema verrà utilizzato per il TTS. No oracle
typingIndicatorTimeout Imposta il numero di secondi trascorsi i quali l'indicatore di digitazione viene rimosso automaticamente se il widget chat non ha ancora ricevuto la risposta. No 20
typingStatusInterval Imposta l'intervallo, in secondi, per limitare lo stato di digitazione inviato all'agente reale. No 3
webViewConfig Personalizza il widget WebView. No { referrerPolicy: 'no-referrer-when-downgrade', closeButtonType: 'icon', size: 'tall' }

Pulsanti Read More e Read Less per risposte skill multi-paragrafo

È possibile ottimizzare l'esperienza utente per i messaggi di skill multi-paragrafo aggiungendo i pulsanti Read More e Read Less.
Segue la descrizione dell'immagine readmore.png
Descrizione dell'immagine readmore.png

È possibile aggiungere il codice lato client per questi pulsanti, che nascondono e mostrano i paragrafi, utilizzando l'oggetto delegate e le funzioni personalizzate.

  1. In settings.js, definire un oggetto delegate con una funzione di callback beforeDisplay nella dichiarazione const chatSettings:
    delegate: {
                beforeDisplay: function (message) {
                    var messagePayload = message && message.messagePayload;
                    if (messagePayload.type === 'text') {
                        messagePayload.text = splitParagraph(messagePayload.text);
                    }
                    return message;
                }
            }
    Se il messaggio è di tipo text, beforeDisplay chiama la funzione splitParagraph personalizzata per dividere il testo in base al primo paragrafo.
  2. Dichiarare le variabili per le funzioni di visualizzazione splitParagraph e toggleParagraph personalizzate:
    var PREFIX_DOTS = 'dots_';
    var PREFIX_MORE = 'more_';
    var PREFIX_TOGGLE = 'toggle_button';
  3. Aggiungere l'espressione della funzione splitParagraph e la funzione toggleParagraphView.
    splitParagraph è un'espressione IIFE (Immediately Invoked Function Expression) che isola la variabile globalIDCounter in modo che possa essere utilizzata solo dalla funzione splitParagraph. Il codice identifica un paragrafo ("\n\n") e divide di conseguenza il testo. Quindi aggiunge tre punti (...) per indicare che c'è più testo da visualizzare e un pulsante Read More per mostrare il testo rimanente.

    var splitParagraph = (function () {
        var globalIDCounter = 0;
    
        return function splitParagraph(text) {
            var paragraphs = text.split('\n\n');
    
            if (paragraphs.length > 1) {
                var HTMLText = '<p>' + paragraphs[0] +
                    '<span id="' + PREFIX_DOTS + globalIDCounter + '">...</span></p>' +
                    '<span id="' + PREFIX_MORE + globalIDCounter + '" class="more">';
    
                for (var i = 1; i < paragraphs.length; i++) {
                    HTMLText += '<p>' + paragraphs[i] + '</p>';
                }
    
                HTMLText += '</span><button id="' + PREFIX_TOGGLE + globalIDCounter + '" class="readMore" onclick="toggleParagraphView(' + globalIDCounter + ')">Read More</button>';
    
                globalIDCounter++;
                return HTMLText;
            } else {
                return text;
            }
        }
    })();
    
    function toggleParagraphView(elemID) {
        var dots = document.getElementById(PREFIX_DOTS + elemID);
        var textMore = document.getElementById(PREFIX_MORE + elemID);
        var buttonToggle = document.getElementById(PREFIX_TOGGLE + elemID);
    
        if (!dots || !textMore || !buttonToggle) {
            return;
        }
    
        if (dots.style.display === 'none') {
            dots.style.display = 'inline';
            buttonToggle.innerText = 'Read More';
            textMore.style.display = 'none';
        } else {
            dots.style.display = 'none';
            buttonToggle.innerText = 'Read Less';
            textMore.style.display = 'inline';
        }
    }
  4. Configurare e (facoltativamente) applicare lo stile ai pulsanti Read More e Read Less. Il CSS include uno stile display:none per mostrare o nascondere i pulsanti in base allo stato della visualizzazione del testo lungo.
    • Se non si desidera applicare uno stile ai pulsanti, aggiungere il seguente codice:
      <style>
      .more {
        display: none;
      }
      </style>
    • Se si desidera applicare uno stile ai pulsanti, è possibile eseguire operazioni simili alle seguenti:
      <style>
      .readMore {
        color: #fff !important;
        background-color: red;
        font-size: 12pt;
        padding: 4px;
        outline: 0;
        -moz-outline: 0;
        border: 0;
      }
      
      .readMore:hover {
        color: #fff !important;
        background-color: #606060 !important;
      }
      .more {
        display: none;
      }
      </style>

Layout

Utilizzare le proprietà del layout per:
  • Impostare la posizione del widget all'interno della pagina Web.
  • Impostare le dimensioni, i colori e lo stile del carattere del widget chat.
  • Impostare il riempimento per i messaggi all'interno del widget.
  • Impostare la posizione dell'icona badge di notifica rispetto al pulsante bot.
  • Impostare la posizione iniziale per la conversazione all'interno del widget.
Ad esempio:
     <script>
        const chatSettings = {
            URI: YOUR_URI,
            channelId: YOUR_CHANNELID,
            font: '14px "Helvetica Neue", Helvetica, Arial, sans-serif', //layout modification property
            height: '60vh', //layout modification property
            width: '20vw',  //layout modification property
             "colors": {    //custom colors property  
                "branding": "#01538A",
                "text": "#B20637"
            },
         }
                
...
    </script>
Proprietà descrizione; Richiesto? Valore predefinito
actionsLayout Imposta la direzione del layout per le azioni locali. Quando si imposta questa opzione come horizontal, questi pulsanti vengono disposti orizzontalmente e vengono inseriti a capo se il contenuto si eccede. No vertical
badgePosition La posizione dell'icona del distintivo rispetto al pulsante dell'icona. No {"top": "0", "right": "0"}
cardActionsLayout Imposta la direzione del layout per le azioni della scheda. Quando si imposta questa opzione come horizontal, questi pulsanti vengono disposti orizzontalmente e vengono racchiusi nel contenuto. No vertical
colors I colori utilizzati nel widget chat. No {"branding": "#1B8FD2", "text": "#212121", "textLight": "#737373"}
conversationBeginPosition La posizione iniziale della conversazione nel widget. Se impostato su top, i primi messaggi vengono visualizzati nella parte superiore del widget. Se l'impostazione è bottom, la conversazione inizia nella parte inferiore. No bottom
font Il carattere utilizzato nel widget chat. No 16px "Oracle Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue
fontFamily Famiglia di caratteri utilizzata per tutto il testo nel widget chat. Questa impostazione ha la precedenza sulla configurazione font. No "Oracle Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue"
fontSize La dimensione del carattere da utilizzare per il testo di intestazione, bolla e piè di pagina nel widget. Questa impostazione ha la precedenza sulla configurazione font. No 16px
globalActionsLayout Imposta la direzione del layout per le azioni globali. Se impostato su 'orizzontale', i pulsanti vengono posizionati orizzontalmente e vengono avvolti se il contenuto si eccede. No vertical
height Altezza della larghezza di una chat impostata in base a uno dei valori <length> tipo di dati. No 70vh
messagePadding Il riempimento intorno ai messaggi nel widget chat. No 15px
position Il posizionamento del widget chat nella finestra del browser. Deve essere passato come oggetto JSON. No {bottom: '20px', right: '20px'}
width Larghezza del widget chat impostata su uno dei valori <length> tipo di dati. No 30vw

Icone pulsante intestazione personalizzata

È possibile personalizzare il messaggio chiaro dell'intestazione Questa è l'immagine dell'icona dei messaggi chiari., il pulsante di attivazione/disattivazione risposta audio Immagine dell'icona Risposta audio. e il pulsante di chiusura Immagine dell'icona Chiudi. in due modi: passando l'URL di origine dell'immagine o passando una stringa SVG raw. Per le stringhe SVG raw, il colore di riempimento del SVG può essere personalizzato dalle classi CSS, nonché passando un valore di colore nella proprietà colors.headerButtonFill nelle impostazioni iniziali.
Nota

La personalizzazione dei colori potrebbe non funzionare per tutti gli SVG, in quanto possono essere colorati in più colori o avere un tratto e colori di riempimento personalizzati.
Icona Funzione Flag funzioni Personalizzazione
Cancella messaggio Cancella sia i messaggi correnti che quelli meno recenti nella conversazione. enableClearMessage: true '<image URL | SVG string>'
Risposta audio Attiva/disattiva l'audio delle risposte skill man mano che vengono ricevute. Poiché questo è un pulsante di attivazione/disattivazione, ha due stati, voce su, dove vengono pronunciate le risposte e voce fuori, dove le risposte non vengono pronunciate. enableBotAudioResponse: true
  • Risposta su: audioResponseOnIcon: '<image URL | SVG string>'
  • Risposta disattivata: audioResponseOffIcon: '<image URL | SVG string>
Chiudi Comprime il widget e visualizza il pulsante di avvio Immagine dell'icona di avvio.. Impossibile disabilitare questo pulsante. Nessuna: questa icona è sempre abilitata nel widget chat. Non viene visualizzato nella modalità incorporata. closeIcon : '<image URL | SVG string>'

Colori personalizzati

È possibile personalizzare il widget modificandone i colori. Ci sono due approcci alla personalizzazione del colore:
  • È possibile passare la configurazione colors:
    colors: {
        "branding": "#e00",
        "text": "#545454"
    },
    
  • In alternativa, è possibile utilizzare le variabili CSS definite nel wrapper chat (.oda-chat-wrapper):
    .oda-chat-wrapper {
        --color-branding: '#e00';
        --color-text: '#545454';
    }
    }
Il colore deve essere un colore esadecimale. Se non si specifica un colore, verrà utilizzato un colore predefinito. Questi snippet illustrano come modificare i colori del branding e del testo. Il colore predefinito verrà utilizzato per il colore del testo secondario.

Suggerimento

Si consiglia di modificare i colori utilizzando le variabili CSS.
Variabile CSS Chiave descrizione;
--color-actions-background actionsBackground Il colore di sfondo per i pulsanti di azione
--color-actions-background-hover actionsBackgroundFocus Colore di sfondo per i pulsanti di azione quando sono attivi.
--color-actions-background-focus actionsBackgroundHover Colore di sfondo dei pulsanti di azione al passaggio del mouse
--color-actions-border actionsBorder Colore del bordo per i pulsanti di azione
--color-actions-text actionsText Colore del testo per i pulsanti di azione
--color-actions-text actionsTextFocus Colore del testo per i pulsanti di azione sullo stato attivo
--color-actions-text-focus actionsTextHover Colore del testo per i pulsanti di azione al passaggio del mouse
--color-user-message-background botMessageBackground Colore dello sfondo della bolla dei messaggi di risposta dello skill
--color-bot-text botText Colore del testo in un messaggio inviato dallo skill
--color-branding branding Il colore principale per il branding del widget. Questo colore viene utilizzato come sfondo dell'intestazione e come colore al passaggio del mouse sui pulsanti del piè di pagina.
--color-card-background cardBackground Il colore di sfondo utilizzato per una scheda.
--color-conversation-background conversationBackground Colore utilizzato per lo sfondo del riquadro conversazioni.
--color-danger-actions-background dangerActionsBackground Colore di sfondo del pulsante azione pericolo
--color-danger-actions-background-focus dangerActionsBackgroundFocus Colore di sfondo del pulsante di azione pericolo sullo stato attivo
--color-danger-actions-background-hover dangerActionsBackgroundHover Colore di sfondo del pulsante azione pericolo al passaggio del mouse
--color-danger-actions-border dangerActionsBorder Colore bordo pulsante azione pericolo
--color-danger-actions-text dangerActionsText Colore testo pulsante azione pericolo
--color-danger-actions-text-focus dangerActionsTextFocus Colore del testo del pulsante azione pericolo sullo stato attivo
--color-danger-actions-text-hover dangerActionsTextHover Colore del testo del pulsante azione pericolo al passaggio del mouse
--color-danger-form-actions-background dangerFormActionsBackground Colore di sfondo delle azioni di pericolo nei messaggi Tabella, Maschera, Maschera tabella e Modifica modulo
--color-danger-form-actions-background-focus dangerFormActionsBackgroundFocus Colore di sfondo delle azioni di pericolo con stato attivo nei messaggi Tabella, Form, Table-Form e Modifica-Form
--color-danger-form-actions-background-hover dangerFormActionsBackgroundHover Colore di sfondo delle azioni di pericolo al passaggio del mouse nei messaggi Tabella, Form, Table-Form e Modifica-Form
--color-danger-form-actions-border dangerFormActionsBorder Colore del bordo delle azioni pericolo nei messaggi Tabella, Form, Table-Form e Modifica-Form
--color-danger-form-actions-text dangerFormActionsText Colore del testo delle azioni di pericolo nei messaggi Tabella, Maschera, Maschera tabella e Modifica modulo
--color-danger-form-actions-text-focus dangerFormActionsTextFocus Colore del testo delle azioni di pericolo con stato attivo nei messaggi Tabella, Form, Table-Form e Modifica-Form
--color-danger-form-actions-text-hover dangerFormActionsTextHover Colore del testo delle azioni di pericolo al passaggio del mouse nei messaggi Tabella, Form, Table-Form e Modifica-Form
--color-error-border errorBorder Colore del bordo di una bolla di messaggi di errore. Il colore viene utilizzato come colore del bordo del messaggio di errore a livello di modulo visualizzato nei messaggi Modifica modulo.
--color-error-message-background errorMessageBackground Colore di sfondo di un fumetto di messaggi di errore. Il colore viene utilizzato come colore di sfondo del messaggio di errore a livello di modulo visualizzato nei messaggi Modifica modulo.
--color-error-title errorTitle Colore del titolo del contenuto del messaggio di errore. Il colore viene utilizzato come colore del testo di errore del messaggio di errore a livello di modulo visualizzato nei messaggi Modifica modulo.
--color-footer-background footerBackground Colore utilizzato per il backgound del piè di pagina.
--color-footer-button-fill footerButtonFill Colore di riempimento di un'icona SVG utilizzata nei pulsanti che si trovano nel piè di pagina della chat.
--color-form-actions-background formActionsBackground Il colore di sfondo delle azioni modulo
--color-form-actions-background-focus formActionsBackgroundFocus Colore di sfondo delle azioni modulo sullo stato attivo
--color-form-actions-background-hover formActionsBackgroundHover Colore di sfondo delle azioni modulo al passaggio del mouse
--color-form-actions-border formActionsBorder Colore del bordo delle azioni della forma
--color-form-actions-text formActionsText Colore del testo delle azioni modulo
--color-form-actions-text-focus formActionsTextFocus Colore del testo delle azioni del modulo sullo stato attivo
--color-form-actions-text-hover formActionsTextHover Colore del testo delle azioni modulo al passaggio del mouse
--color-form-background formBackground Colore di sfondo delle forme
--color-form-error formError Colore di riempimento SVG dell'icona nei messaggi di errore a livello di campo e di modulo visualizzati nei messaggi di modifica modulo. Il colore viene utilizzato come colore del bordo del campo di input in caso di errore nei messaggi Modifica modulo.
--color-form-error-text formErrorText Colore del testo di un messaggio di errore a livello di campo visualizzato nei messaggi Edit-Form
--color-form-header-background formHeaderBackground Il colore di sfondo dei titoli dei moduli
--color-form-header-text formHeaderText Colore del testo dei titoli dei moduli
--color-form-input-background formInputBackground Colore di sfondo dei campi di input nei messaggi Modifica modulo
--color-form-input-border formInputBorder Colore del bordo dei campi di input nei messaggi Modifica modulo
--color-form-input-border-focus formInputBorderFocus Colore del bordo dei campi di input con stato attivo nei messaggi Modifica modulo
--color-form-input-text formInputText Colore del testo dei campi di input nei messaggi Modifica modulo
--color-form-label formLabel Colore delle etichette del modulo
--color-form-text formText Il colore del testo delle forme
--color-global-actions-background globalActionsBackground Colore di sfondo dei pulsanti di azione globali
--color-global-actions-background-focus globalActionsBackgroundFocus Colore di sfondo dei pulsanti di azione globali quando sono attivi.
--color-global-actions-background-hover globalActionsBackgroundHover Colore di sfondo per il passaggio del mouse sui pulsanti di azione globali.
--color-global-actions-border globalActionsBorder Colore del bordo dei pulsanti di azione globali
--color-global-actions-text globalActionsText Colore del testo dei pulsanti di azione globali
--color-global-actions-text-focus globalActionsTextFocus Colore del testo nei pulsanti di azione globali quando sono attivi.
--color-global-actions-text-hover globalActionsTextHover Colore del testo nei pulsanti di azione globali quando gli utenti vi passano sopra.
--color-header-background headerBackground Colore di sfondo dell'intestazione del widget chat
--color-header-button-fill headerButtonFill Colore di riempimento delle icone SVG utilizzate per i pulsanti nell'intestazione della chat
--color-header-text headerText Colore del titolo dell'intestazione della chat
--color-input-background inputBackground Colore di sfondo del campo di input del messaggio nel piè di pagina della chat
--color-input-text inputText Colore del testo di input del messaggio nel piè di pagina della chat
--color-links links Colore per i collegamenti incorporati nei messaggi skill
--color-error-border N/A Colore del bordo di una bolla di messaggi di errore
--color-error-message-background N/A Colore di sfondo di una bolla di messaggi di errore
--color-error-text N/A Colore della descrizione del contenuto di un messaggio di errore
--color-error-title N/A Colore del titolo del contenuto di un messaggio di errore
--color-footer-button-background-hover N/A Colore di sfondo dei pulsanti del piè di pagina al passaggio del mouse
--color-footer-button-fill-hover N/A Colore di riempimento del piè di pagina dell'intestazione al passaggio del mouse
--color-header-button-background-hover N/A Colore di sfondo dei pulsanti di intestazione al passaggio del mouse
--color-header-button-fill-hover N/A Colore di riempimento dei pulsanti di intestazione al passaggio del mouse
--color-input-border N/A Colore del bordo del campo di input
--color-user-links N/A Colore dei collegamenti incorporati nei messaggi utente.
--color-popup-background N/A Il colore di sfondo di prompt e popup
--color-popup-button-background N/A Colore di sfondo dei pulsanti popup
--color-popup-button-text N/A Colore del testo dei pulsanti popup
--color-popup-horizontal-rule N/A Colore della regola orizzontale per il separatore per l'azione del menu chat multilingua
--color-popup-item-background-hover N/A Colore di sfondo al passaggio del mouse sugli elementi dell'elenco popup
--color-popup-text N/A Colore del testo e dell'icona di prompt e popup
--color-table-background N/A Colore dello sfondo delle tabelle
--color-table-header-background N/A Colore di sfondo delle intestazioni di tabella
--color-table-separator N/A Colore del separatore delle righe della tabella
--color-table-text N/A Colore del testo delle tabelle
--color-notification-badge-background notificationBadgeBackground Il colore di sfondo per il badge delle notifiche dei messaggi
--color-notification-badge-text notificationBadgeText Il colore del testo per il conteggio dei messaggi nel distintivo di notifica
--color-primary-actions-background primaryActionsBackground Colore di sfondo del pulsante di azione principale
--color-primary-actions-background-focus primaryActionsBackgroundFocus Colore di sfondo del pulsante di azione principale sullo stato attivo
--color-primary-actions-background-hover primaryActionsBackgroundHover Colore di sfondo del pulsante di azione principale al passaggio del mouse
--color-primary-actions-border primaryActionsBorder Colore del bordo del pulsante di azione principale
--color-primary-actions-text primaryActionsText Colore del testo del pulsante di azione principale
--color-primary-actions-text-focus primaryActionsTextFocus Colore del testo del pulsante di azione principale sullo stato attivo
--color-primary-actions-text-hover primaryActionsTextHover Colore del testo del pulsante di azione principale al passaggio del mouse
--color-primary-form-actions-background primaryFormActionsBackground Colore di sfondo delle azioni principali nei messaggi Tabella, Form, Table-Form e Modifica-Form
--color-primary-form-actions-background-focus primaryFormActionsBackgroundFocus Colore di sfondo delle azioni principali con stato attivo nei messaggi Tabella, Form, Table-Form e Modifica-Form
--color-primary-form-actions-background-hover primaryFormActionsBackgroundHover Colore di sfondo delle azioni principali al passaggio del mouse nei messaggi Table, Form, Table-Form e Edit-Form
--color-primary-form-actions-border primaryFormActionsBorder Colore del bordo delle azioni principali nei messaggi Tabella, Form, Table-Form e Modifica-Form
--color-primary-form-actions-text primaryFormActionsText Colore del testo delle azioni principali nei messaggi Tabella, Maschera, Maschera tabella e Modifica modulo
--color-primary-form-actions-text-focus primaryFormActionsTextFocus Colore di sfondo delle azioni principali con stato attivo nei messaggi Tabella, Form, Table-Form e Modifica-Form
--color-primary-form-actions-text-hover primaryFormActionsTextHover Colore di sfondo delle azioni principali al passaggio del mouse nei messaggi Table, Form, Table-Form e Edit-Form
--color-rating-star ratingStar Colore applicato alle stelle di valutazione in un messaggio di feedback quando gli utenti le passano sopra o le selezionano. Se non si specifica un colore, viene utilizzato il colore branding.
N/A recognitionViewBackground Il colore di sfondo della vista in cui viene visualizzato il testo riconosciuto quando gli utenti attivano la modalità vocale. Se non si definisce questo colore, verrà utilizzato il colore definito per headerBackground.
N/A recognitionViewButtonFill Colore di riempimento SVG per l'attivazione/disattivazione della modalità testo vocale quando gli utenti passano alla modalità voce.
--color-recognition-view-text recognitionViewText Colore utilizzato per il testo riconosciuto dall'input vocale dell'utente. Se non si definisce questo colore, verrà utilizzato il colore definito per text.
N/A shareMenuText Colore utilizzato per le voci di menu di condivisione. Questo colore consente di eseguire l'override del set di valori per la chiave di testo, se passato.
--color-table-actions-background-focus tableActionsBackgroundFocus Colore di sfondo delle azioni della tabella sullo stato attivo
--color-table-actions-text-focus tableActionsTextFocus Colore del testo delle azioni della tabella sullo stato attivo
--color-table-actions-text-hover tableActionsTextHover Colore del testo delle azioni della tabella al passaggio del mouse
--color-text text Colore del testo per i messaggi nel widget chat.
-color-text-light textLight Il colore del testo secondario nei messaggi, ad esempio le descrizioni delle schede nel widget chat.
--color-timestamp timestamp Colore per l'indicatore orario relativo.
--color-typing-indicator typingIndicator Colore di riempimento dello sfondo utilizzato per l'indicatore di digitazione.
N/A userMessageBackgound Il colore di sfondo del fumetto utilizzato per i messaggi utente.
--color-user-text userText Il colore del testo in un messaggio inviato dall'utente.
--color-visualizer visualizer Colore utilizzato per le barre nel grafico del visualizzatore. Se non si definisce questo colore, verrà utilizzato il colore definito per branding.
--color-visualizer-container-background visualizerContainerBackground Colore di sfondo per il contenitore del visualizzatore vocale che viene visualizzato quando gli utenti passano alla modalità vocale. Se non si definisce questo colore, verrà utilizzato il colore definito per userMessageBackgound.
Nota

È possibile impostare un'immagine per conversationBackground, headerBackground e footerBackground. Questi campi possono accettare tutti i parametri che possono essere passati alla proprietà di sfondo dello sfondo CSS. Ad esempio:
colors: {conversationBackground: 'no-repeat url("https://images.unsplash.com/photo-1582580470647-e3be5274d6a0?ixlib=rb-1.2.1&auto=format&fit=crop&w=668&q=80")'},

Icone personalizzate

È possibile personalizzare le icone, incluse quelle per l'icona dello skill, l'icona del logo della chat e le icone dell'avatar per lo skill e l'utente.

È possibile passare l'URL dell'asset immagine per queste icone. Per alcune icone, è possibile utilizzare l'URL o passare una stringa SVG (Scalable Vector Graphics). È possibile passare i dati SVG raw per le icone che supportano le stringhe SVG. La vista chat li visualizza come un SVG in linea.

Suggerimento

Le stringhe SVG si caricano più velocemente degli asset immagine. Ti permettono anche di animare l'immagine e cambiarne il colore. Il layout definito per la proprietà theme viene applicato alle stringhe SVG per i pulsanti di collegamento, invio e microfono, ma non per gli altri asset immagine.
A partire dalla versione 21.10, è possibile utilizzare la proprietà icons per raggruppare tutte le icone personalizzate in un unico campo. Le icone precedenti alla versione 21.10 sono ancora supportate, ma i valori passati con l'oggetto icons hanno la precedenza. Tutti i campi nell'oggetto icons supportano sia i percorsi delle risorse immagine che le stringhe SVG raw.
const settings = {
    // ...,
    icons: {
        rating: '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24"><path d="M15.994 3.006a5.7 5.7 0 00-3.795 1.707L12 4.916l-.199-.202a5.676 5.676 0 00-8.128 0c-2.231 2.275-2.231 5.953 0 8.228L12 21.428l8.326-8.486A5.873 5.873 0 0022 8.828a5.873 5.873 0 00-1.675-4.115A5.693 5.693 0 0016.262 3z"/></svg>'
    }
};
Proprietà (release 21.10) Proprietà (release precedenti) descrizione; Stringa SVG compatibile?
avatarAgent agentAvatar Per le competenze integrate con gli agenti attivi, questa icona viene visualizzata insieme ai messaggi dell'agente reale. Se questa proprietà non è definita, viene visualizzato il valore avatarBot (o agentAvatar).
avatarbot botIcon Icona visualizzata accanto al messaggio di risposta dello skill. Questa icona abilità viene visualizzata solo se si fornisce questa icona. In caso contrario, non viene visualizzata alcuna icona.
avatarUser personIcon Icona visualizzata accanto ai messaggi utente. Questa icona non viene visualizzata per impostazione predefinita: viene visualizzata solo se definita.
clearHistory clearMessageIcon Icona pulsante Cancella messaggio che si trova nell'intestazione del widget
close N/A L'icona visualizzata per il pulsante Chiudi nei banner dei messaggi di errore, nelle anteprime espanse delle immagini e nel widget WebView.
collapse closeIcon L'icona del pulsante, situata nell'intestazione della vista chat, che riduce al minimo la vista chat.
download downloadIcon Icona utilizzata per il pulsante di download degli allegati che viene visualizzata in ogni messaggio allegato inviato dallo skill. download - Sì
error errorIcon L'URL dell'immagine utilizzata per l'icona di errore.
  • errorIcon - No
  • error - Sì
No
expandImage expandImageIcon L'icona utilizzata per l'immagine consente di espandere il controllo visualizzato su ogni messaggio di allegato immagine inviato dallo skill. expandImage - Sì
fileAudio audioIcon Icona dell'allegato audio visualizzata quando l'URL di origine dell'allegato non è raggiungibile.
  • audioIcon - No
  • fileAudio - Sì
fileGeneric fileIcon Icona allegato file.
  • fileIcon - No
  • fileGeneric - Sì
fileImage imageIcon Icona dell'allegato immagine, visualizzata quando non è possibile raggiungere l'origine dell'allegato.
  • fileImage - No

    imageIcon - Sì

fileVideo videoIcon L'icona dell'allegato video, visualizzata quando non è possibile raggiungere l'URL di origine dell'allegato.
  • videoIcon - No
  • fileVideo - Sì
keyboard keyboardIcon Icona della tastiera, visualizzata nel pulsante che consente di passare dalla modalità vocale alla modalità tastiera.
launch botButtonIcon Pulsante bot skill, visualizzato quando il widget chat viene ridotto a icona.
  • botButtonIcon - No

    launch - Sì

logo logoIcon Icona del logo della chat visualizzata nell'intestazione del widget della chat.
  • logoIcon - No
  • logo - Sì
mic micIcon Icona pulsante microfono nel piè di pagina del widget chat visualizzata quando
rating N/A Icona visualizzata per i pulsanti di azione feedback nel componente rating. Per una migliore esperienza utente per l'azione al passaggio del mouse, passare una stringa di icone SVG riempita. rating - Sì
send sendIcon Icona del pulsante Invia messaggio
shareMenu attachmentIcon Icona di caricamento dell'allegato
shareMenuAudio N/A L'icona per la voce di menu audio nel popup del menu di condivisione.
shareMenuFile N/A L'icona per la voce di menu del file nel popup del menu di condivisione.
shareMenuLocation N/A L'icona per il pulsante del menu Condividi nel popup del menu Condividi.
shareMenuVisual N/D L'icona per la voce del menu immagine/video nel popup del menu di condivisione
ttsOff audioResponseOffIcon L'icona del pulsante di attivazione/disattivazione quando le risposte audio sono disattivate.
ttsOn audioResponseOnIcon L'icona per il pulsante di attivazione/disattivazione quando le risposte audio sono attivate.
typingIndicator chatBubbleIcon Icona animata nel riquadro delle conversazioni che indica una risposta inviata da skill.
È inoltre possibile ridimensionare l'icona per l'icona a forma di bolla di caricamento della chat (abilitata con chatBubbleIcon).
Nome proprietà descrizione; Richiesto? Valore predefinito
chatBubbleIconHeight Altezza dell'icona a forma di bolla chat di caricamento. No 42px
chatBubbleIconWidth Larghezza dell'icona a forma di bolla chat di caricamento. No 56px

Stringhe personalizzate

È possibile personalizzare le seguenti stringhe e fornirle come testo localizzato. Come illustrato dal seguente oggetto, la localizzazione richiede di fornire impostazioni nazionali valide per ogni voce. È necessario aggiornare tutte le chiavi delle versioni locali diverse da en-us. In caso contrario, vengono visualizzate le traduzioni en-us per i valori mancanti.
"i18n": {
    "fr": {
        "chatTitle": "Soutien"
    },
    "en-us": {
        "chatTitle": "Support"
    },
    "es": {
        "chatTitle": "Apoyo"
    },
    "zh-cn": {
        "chatTitle": "支持"
    }
}
Se vengono fornite stringhe personalizzate per versioni locali diverse da en, è necessario specificare tutte le chiavi per tale versione locale. In caso contrario, vengono visualizzate le traduzioni en per i valori mancanti.
<script>
const chatSettings = {
    URI: '<Chat server URI>',
    channelId: '<Channel ID>',
    userId: '<User ID>',
    fontFamily: '"Helvetica Neue", Helvetica, Arial, sans-serif',
    locale: 'en',
    enableClearMessage: true,
    icons: {
        launch: 'style/Robot.png',
        avatarBot: 'style/Robot.png',
        avatarUser: 'style/userIcon.png'
    }
};

function initSDK(name) {
    // If WebSDK is not available, reattempt later
    if (!document || !WebSDK) {
        setTimeout(function() {
            initSDK(name);
        }, 2000);
        return;
    }

    // Default name is Bots
    if (!name) {
        name = 'Bots';
    }
Chiave descrizione; Valore predefinito
agent Il testo utilizzato per l'agente 'Agent'
agentMessage Indicatore del messaggio di skill per i lettori di schermo. Viene parlato dai lettori di schermo prima delle risposte alle abilità. Il testo (`{0}`) viene sostituito dal nome dell'agente. `'{0} says'`
attachment_audio Testo utilizzato per l'espressione TTS di un allegato audio. 'Audio attachment'
attachment_file Il testo utilizzato per l'espressione TTS di un allegato file. 'File attachment'
attachment_image Testo utilizzato per l'espressione TTS di un allegato immagine. 'Image attachment'
attachment_video Testo utilizzato per l'espressione TTS di un allegato video. 'Video attachment'
attachmentAudioFallback Messaggio di fallback visualizzato al posto di un allegato audio se il client non è in grado di eseguire il rendering dell'audio. Il testo compreso tra {0} e {/0} è impostato su un collegamento per il download del file. Your browser does not support embedded audio. However you can {0}download it{/0}.
attachmentVideoFallback Il messaggio di fallback visualizzato al posto di un allegato video se il client non può eseguire il rendering del video. Il testo compreso tra {0} e {/0} è impostato su un collegamento per il download del file. Your browser does not support embedded video. However you can {0}download it{/0}.
audioResponseOn La descrizione comandi che viene visualizzata quando l'utente passa il puntatore del mouse sul pulsante "off" dell'audio nell'intestazione. Turn audio response on
avatarAgent Testo alternativo utilizzato per l'icona agente visualizzata accanto ai messaggi agente. Agent icon
avatarBot Testo alternativo utilizzato per l'icona dello skill visualizzata accanto ai messaggi dello skill. Bot icon
avatarUser Testo alternativo utilizzato per l'icona utente visualizzata accanto ai messaggi utente. User icon
card L'identificativo della scheda. 'Card {0}'. È possibile localizzare la stringa posizionando il segnaposto ordinale ({0}) prima o dopo la parola. Continueremo a supportare la stringa 'Card' utilizzata nelle release precedenti che non include il segnaposto ordinale. Per questa stringa, l'ordinale viene posizionato dopo la parola. Se si desidera disattivare l'audio, passare una stringa vuota (card: '').
cardImagePlaceholder Testo segnaposto visualizzato durante il recupero e il caricamento dell'immagine della carta. Loading image
cardImagePlaceholder Testo segnaposto visualizzato durante il recupero e il caricamento dell'immagine della carta. Loading image
cardNavNext Etichetta per il pulsante di navigazione della scheda per la visualizzazione della scheda successiva in un layout orizzontale. Next card
cardNavPrevious Etichetta per il pulsante di navigazione della scheda per la visualizzazione della scheda precedente in un layout orizzontale. Previous card
chatSubtitle Imposta il sottotitolo della vista chat, visualizzato sotto il titolo nell'intestazione della vista chat. Se il flag dei sottotitoli è impostato e i flag showConnectionStatus e showTypingIndicator sono impostati su true, viene visualizzato il sottotitolo anziché lo stato della connessione o l'indicatore di digitazione. N/D
chatTitle Titolo del widget chat visualizzato nell'intestazione. Ask
clear Descrizione comandi visualizzata quando l'utente passa il puntatore del mouse sul pulsante Cancella messaggi nell'intestazione. Clear
close Descrizione comandi visualizzata quando l'utente passa il puntatore del mouse sul pulsante Chiudi widget nell'intestazione. Close
closing Il testo di stato visualizzato durante la chiusura della connessione tra widget chat e server. Closing
connected Il testo di stato visualizzato quando viene stabilita la connessione tra widget chat e server. Connected
connecting Testo di stato visualizzato quando il widget chat si connette al server chat. Connecting
connectionFailureMessage Messaggio di errore visualizzato quando il widget non è in grado di connettersi allo skill. Sorry, the assistant is unavailable right now. If the issue persists, contact your help desk.
connectionRetryLabel L'etichetta del pulsante di nuova connessione. Try Again
defaultGreetingMessage La risposta di saluto predefinita del client visualizzata quando la risposta skill non è stata ricevuta entro il numero di secondi impostato da defaultGreetingTimeout.. Hey, Nice to meet you! Allow me a moment to get back to you.
defaultSorryMessage La risposta client predefinita quando la risposta skill non è stata ricevuta il numero di secondi impostato da typingIndicatorTimeout. Unfortunately, I am not able to get you the right content. Please try again.
defaultWaitMessage Risposta predefinita visualizzata all'intervallo quando non è stata ricevuta una risposta skill effettiva. Questo intervallo viene impostato, in secondi, da defaultWaitMessageInterval I'm still working on your request. Thank you for your patience!
disconnected Testo di stato visualizzato quando la connessione tra il widget chat e il server è stata chiusa. Disconnected
download Testo di accesso facilitato per il pulsante di download visualizzato in ogni messaggio allegato inviato dallo skill. Download
endConversation Descrizione comandi visualizzata quando si passa il puntatore del mouse sul pulsante dell'intestazione della conversazione finale. End Conversation
endConversationConfirmMessage Messaggio di conferma visualizzato quando un utente fa clic sul pulsante Termina conversazione. Are you sure you want to end the conversation?
endConversationDescription Il messaggio di descrizione visualizzato insieme al messaggio di conferma nel prompt della conversazione finale. This will also clear your conversation history.
errorSpeechInvalidUrl Il messaggio di errore visualizzato quando l'URL del server di sintesi vocale non è impostato. ODA URL for connection is not set. Please pass 'URI' parameter during SDK initialization.
errorSpeechMultipleConnection Il messaggio di errore visualizzato quando si tentano più connessioni vocali per un breve intervallo. Another voice recognition is ongoing. Can't start a new one.'
errorSpeechTooMuchTimeout Messaggio di errore visualizzato quando un utente fornisce un messaggio vocale troppo lungo per essere riconosciuto. Too much voice input to recognize. Can not generate recognized text.
errorSpeechUnsupportedLocale Messaggio di errore visualizzato quando si tenta una registrazione ed è stata configurata una versione locale non supportata per il riconoscimento vocale. The set speech locale is not supported. Cannot start recording.
imageViewerClose Testo di accesso facilitato per il pulsante che chiude l'immagine espansa. Close image viewer
imageViewOpen Testo di accessibilità per il pulsante che espande l'immagine. Open image viewer
inputPlaceholder Testo del segnaposto visualizzato nel campo di input utente. Type a message
itemIterator Identificativo elemento in un elenco di elementi in un messaggio Table, Form o Table-Form. Il testo ({0}) è sostituito dall'indice degli elementi. Item {0}
language_<languageTag> L'etichetta della lingua rappresentata da languageTag. Ad esempio, English per en nell'elenco a discesa di selezione della lingua disponibile quando si configura la chat multilingue. | Language Label
language_detect Etichetta per l'opzione di rilevamento automatico nel menu a discesa di selezione della lingua. Detect Language
languageSelectDropdown Descrizione comandi visualizzata quando gli utenti passano il mouse sul pulsante di selezione della lingua nell'intestazione. Select chat language
linkField Testo dell'espressione sostitutiva per un campo di collegamento in un messaggio Table, Form o Table-Form. Il segnaposto ({0}) è sostituito dal linkLabel del campo. Click on the highlighted text to open Link for {0}
noSpeechTimeout Il testo di stato visualizzato quando il server di chat non è in grado di riconoscere la voce. Could not detect the voice, no message sent.
noText L'etichetta per il pulsante Nessuna conferma. No
openMap Etichetta del pulsante di azione utilizzata per aprire una mappa delle ubicazioni. Open Map
previousChats Testo di stato visualizzato alla fine dei messaggi meno recenti. Previous conversations
ratingStar Testo della descrizione comandi visualizzato per ogni stella di valutazione in un messaggio di feedback. Il segnaposto `{0}` viene sostituito dal numero di stelle selezionate dall'utente. Rate {0} star
recognitionTextPlaceholder Quando la modalità vocale è attivata, si tratta del testo segnaposto visualizzato nel campo del testo del riconoscimento. Speak your message
relTimeDay L'indicatore orario relativo visualizzato ogni giorno dalla ricezione del messaggio precedente. {0} viene sostituito dal numero di giorni trascorsi. {0}d ago
relTimeHr L'indicatore orario relativo che viene visualizzato ogni ora per le prime 24 ore dopo la ricezione del messaggio precedente. {0} viene sostituito dal numero di ore trascorse. {0}hr ago
relTimeMin L'indicatore orario relativo visualizzato ogni minuto dalla ricezione dell'ultimo messaggio. {0} viene sostituito dal numero di minuti trascorsi. {0}min ago
relTimeMoment L'indicatore orario relativo visualizzato dieci secondi dopo la ricezione del messaggio e prima che siano trascorsi 60 secondi dalla ricezione dell'ultimo messaggio. A few seconds ago
relTimeMon L'indicatore orario relativo visualizzato ogni mese dalla ricezione del messaggio precedente. {0} viene sostituito dal numero di mesi trascorsi. {0}mth ago
relTimeNow L'indicatore orario relativo visualizzato per un nuovo messaggio. Now
relTimeYr L'indicatore orario relativo visualizzato ogni anno dopo la ricezione del messaggio precedente. {0} viene sostituito dal numero di anni trascorsi. {0}yr ago
requestLocation Il testo visualizzato quando viene richiesta la posizione dell'utente. Requesting location
requestLocationDeniedPermission Messaggio di errore visualizzato quando viene negata l'autorizzazione per accedere alla posizione. Location permission denied. Please allow access to share your location, or else type in your location.
requestLocationDeniedTimeout Messaggio di errore visualizzato quando la richiesta di posizione non viene risolta a causa di un timeout. Taking too long to get your current location. Please try again, or else type in your location.
requestLocationDeniedUnavailable Il messaggio di errore visualizzato quando la richiesta di posizione viene negata perché la posizione corrente del dispositivo client non è disponibile. Your current location is unavailable. Please try again, or else type in your location.
requestLocationString Testo dell'errore visualizzato quando l'utente nega la richiesta di ubicazione. Cannot access your location. Please allow access to proceed further.
retryMessage Il testo visualizzato quando il messaggio utente non è stato inviato al server. Try again
send La descrizione comandi viene visualizzata quando l'utente passa il puntatore del mouse sul pulsante Invia nel piè di pagina. Send
shareAudio Il testo della voce di menu nella condivisione del popup per la condivisione di un file audio Share Audio
shareFailureMessage Il messaggio di errore visualizzato quando si fa clic sul pulsante di azione di condivisione in un messaggio, ma l'API di condivisione non è disponibile nel dispositivo client o la richiesta di condivisione è stata rifiutata. Sorry, sharing is not available on this device.
shareFile Il testo della voce di menu nel popup di condivisione per la condivisione di un file generico Share File
shareLocation Testo della voce di menu per la condivisione di una posizione nel popup Share Location
shareVisual Il testo della voce di menu nel popup di condivisione per la condivisione di un'immagine o di un file video Share Image/Video
skillMessage Indicatore del messaggio di skill per i lettori di schermo. È parlato dai lettori di schermo prima delle risposte alle abilità. Skill says
speak Descrizione comandi visualizzata quando l'utente passa il puntatore del mouse sul pulsante Parla nel piè di pagina. Speak
typingIndicator Testo di accesso facilitato per l'indicatore di digitazione. È parlato dai lettori di schermo. Waiting for response
upload Descrizione comandi visualizzata quando l'utente passa il puntatore del mouse sul pulsante Carica nel piè di pagina. Share popup
uploadFailed Testo dell'errore visualizzato quando un caricamento non riesce. Upload Failed.
uploadFileSizeLimitExceeded Testo dell'errore visualizzato quando la dimensione del file di caricamento supera il limite. Upload Failed. File size should not be more than 25MB.
uploadFileSizeZeroByte Il testo di errore visualizzato quando si carica la dimensione del file è di 0 byte. Upload Failed. Files of size zero bytes cannot be uploaded.
uploadUnsupportedFileType Testo dell'errore visualizzato quando si tenta di caricare un tipo di file non supportato. Upload Failed. Unsupported file type.
userMessage Indicatore di messaggio utente per i lettori di schermo. È parlato dai lettori di schermo prima dei messaggi utente. I say
utteranceGeneric Descrizione di fallback per il messaggio di risposta utilizzato nell'espressione. Message from skill.
webViewAccessibilityTitle Titolo di accesso facilitato predefinito per la vista Web letta ad alta voce dai lettori di schermo. In-widget WebView to display links
webViewClose Il titolo predefinito label/tooltip per il pulsante di chiusura della vista Web. Done
webViewErrorInfoDismiss Descrizione comandi per il pulsante di chiusura utilizzato per chiudere il collegamento di fallback all'interno della vista Web. 'Dismiss'
webViewErrorInfoText Il testo informativo visualizzato nella vista Web quando il collegamento selezionato non può essere aperto al suo interno. Il testo tra {0} e {/0} viene impostato sul collegamento originale che viene aperto in una nuova scheda o finestra. Sorry, we can't open this page in the chat window. Click {0}here{/0} to open it in your browser.
yesText L'etichetta per il pulsante di conferma Sì. Yes
editFieldErrorMessage Messaggio di errore a livello di campo visualizzato quando il valore immesso dall'utente non è valido per tale campo. L'SDK assume per impostazione predefinita questo messaggio quando la competenza non fornisce un messaggio di errore client. Field Input is invalid
editFormErrorMessage Messaggio di errore a livello di modulo visualizzato sotto l'azione di sottomissione del modulo per la convalida lato client. Questo messaggio viene visualizzato quando almeno uno dei campi non è valido ed è presente più di un campo. L'SDK utilizza per impostazione predefinita questo messaggio quando lo skill non fornisce un messaggio di errore nel payload del messaggio. Some of the fields need your attention.
noResultText Testo di stato visualizzato quando non sono presenti corrispondenze da una ricerca utente nella vista elenco a selezione multipla. No more results

Configura opzioni menu condivisione

Per impostazione predefinita, il menu di condivisione visualizza le opzioni per i seguenti tipi di file:
  • file multimediali visivi (immagini e video)
  • file audio
  • file generali come documenti, PDF e fogli di calcolo
  • posizione


L'impostazione shareMenuItems consente di limitare le voci visualizzate nel menu di condivisione. L'impostazione accetta un array di stringhe con tasti mappati alle voci del menu di condivisione: 'visual' per la voce Condividi immagine/video, 'audio' per la voce Condividi audio, 'file' per la voce Condividi file e 'location' per la voce Condividi posizione. È possibile utilizzare questi tasti, che non fanno distinzione tra maiuscole e minuscole, per specificare quali elementi sono disponibili nel menu (ad esempio, ['visual', 'location']). Tutte le voci di menu sono disponibili quando l'array è vuoto o quando viene passato un valore non valido.
Nota

È possibile disabilitare la funzionalità degli allegati impostando enableAttachment su false.


L'uso della funzionalità di collegamento spesso richiede l'aggiornamento dei criteri di sicurezza di rete del sito host. Gli allegati, caricati nello storage degli oggetti di Oracle Digitial Assistant tramite chiamate HTTP, potrebbero essere bloccati dai criteri CORS del sito. Con il sito che blocca i caricamenti, nella console del browser può essere visualizzato un errore che indica che il client ha bloccato la richiesta a causa di un criterio CORS. Per risolvere tali problemi, è necessario aggiornare i criteri di sicurezza della rete del sito host in modo da consentire il dominio Oracle Digital Assistant. Ciò consente l'esecuzione delle richieste di caricamento. Poiché il criterio CORS non si applica a WebSockets, le conversazioni tra l'SDK e le competenze non sono influenzate da tali restrizioni.
Nota

Non abilitare questa impostazione se la competenza si connette a un'istanza ODA versione 20.08 o viene eseguita su una versione precedente alla 20.08. Questa proprietà si applica solo alle connessioni abilitate per l'autenticazione del client alle versioni 20.12 e successive della piattaforma ODA.

Voci menu condivisione personalizzata

È possibile personalizzare la voce del menu di condivisione per visualizzare tipi di file specifici. Per creare questo menu personalizzato, passare ogni voce di menu come oggetto dell'array shareMenuItems:
{
type: string,       // Space separated list of file formats, pass '*' to allow all supported file types

label: string,      // OPTIONAL, label for the share menu item, should preferably be configured through i18n strings

icon?: string,      // OPTIONAL, Icon image source path or SVG source string, the file icon is displayed as fallback

maxSize?: number    // OPTIONAL, Maximum file size allowed for upload in KiloBytes, the maximum and fallback value is 25 MB (25600 KB)
}
La voce di menu può essere passata con o senza la categoria string.

Suggerimento

Per supportare le etichette in più lingue, è consigliabile utilizzare il tag i18n anziché il tag label.
Il seguente snippet di codice illustra come passare l'array shareMenuItems nella variabile settings. Le etichette vengono impostate passandole con i tasti share_, illustrati anche in questo snippet. È possibile impostare l'etichetta per un carattere jolly (*) utilizzando il tasto share_all i18n.
const settings = {
    shareMenuItems: [ {
        type: 'odf',
        label: 'Upload ODF',
    }, {
        type: 'pdf'
    }, {
        type: 'jpg png jpeg',
        icon: 'https://image-source-site/imageicon'
    }, {
        type: 'doc docx xls',
        maxSize: 4096
    }],
    i18n: {
        en: {
            share_pdf: 'Upload PDF',
            share_jpg_png_jpeg: 'Upload Image',
            share_doc_docx_xls: 'Upload document'
        }
    }
}

Personalizza classi CSS

È possibile sostituire le classi CSS del widget con regole di stile personalizzate per personalizzare ulteriormente l'aspetto.
Classe Componente
oda-chat-launch-button Pulsante di avvio widget chat
oda-chat-button-clear Pulsante Cancella messaggi
oda-chat-button-close Pulsante Chiudi widget
oda-chat-button-narration Pulsante di attivazione/disattivazione risposta audio dell'abilità
oda-chat-button-send Il pulsante Invia messaggio
oda-chat-button-upload Pulsante Carica file
oda-chat-card Il messaggio della carta
oda-chat-closing Applicato come pari livello a oda-chat-connection-status quando il widget si sta disconnettendo dal server
oda-chat-connected Applicato come pari livello a oda-chat-connection-status quando il widget è connesso al server
oda-chat-connecting Applicato come pari livello a oda-chat-connection-status quando il widget si connette al server
oda-chat-connection-status Lo stato della connessione. Ogni valore di connessione ha anche la propria classe, ad esempio oda-chat-connected, oda-chat-disconnected o oda-chat-connecting.
oda-chat-conversation Il contenitore per la conversazione
oda-chat-disconnected Applicato come pari livello a oda-chat-connection-status quando il widget è disconnesso dal server
oda-chat-footer Il piè di pagina del widget chat
oda-chat-footer-button La classe comune per tutti i pulsanti del piè di pagina
oda-chat-header Intestazione widget chat
oda-chat-header-button La classe comune per tutti i pulsanti di intestazione
oda-chat-icon-wrapper Il wrapper per l'abilità o per una persona visualizzata accanto al messaggio.
oda-chat-left Il wrapper per il messaggio relativo allo skill
oda-chat-logo Logo sull'intestazione del widget
oda-chat-message La classe wrapper comune per tutti i messaggi di chat
oda-chat-message-action-location Pulsante Azione richiesta ubicazione
oda-chat-message-action-postback Pulsante Azione postback
oda-chat-message-actions Il wrapper dei pulsanti di azione
oda-chat-message-bubble La bolla dei messaggi
oda-chat-message-global-actions Wrapper dei pulsanti di azione globali
oda-chat-message-icon Immagine per lo skill o per una persona visualizzata accanto al messaggio.
oda-chat-notification-badge Il badge di notifica per i messaggi non visualizzati.
oda-chat-rating-star Pulsante della stella di valutazione in un messaggio di feedback
oda-chat-rating-star-icon Icona SVG per il pulsante della stella di valutazione
oda-chat-right Il wrapper per il messaggio utente
oda-chat-title Titolo nell'intestazione del widget
oda-chat-user-input L'area di testo di input dell'utente
oda-chat-widget Componente chat espanso che racchiude l'intestazione, la conversazione e il piè di pagina del widget.
oda-chat-wrapper Il wrapper per l'intero componente chat

Personalizzare l'indicatore orario

Per impostazione predefinita, l'indicatore orario visualizzato nell'intestazione quando sono impostati timestampHeaderMode e timestampHeaderFormat visualizza il formato come giorno delle impostazioni nazionali della settimana, del mese, della data, dell'anno e dell'ora (am e pm). Ad esempio, giovedì 13 agosto 2020, 9:52:22. È possibile configurare questo indicatore orario passando le opzioni di formattazione nell'impostazione timestampFormat. È possibile formattare l'indicatore orario passando una stringa di pattern di token di formattazione o passando un oggetto contenente le opzioni Intl.DateTimeFormat.

Formattare la data e l'ora con stringhe pattern

Le stringhe di pattern utilizzate per la formattazione dell'indicatore orario sono costituite da token di formato. Ad esempio, passando timestampFormat: 'hh:mm:ss a' l'indicatore orario viene impostato su 09:30:14 pm.
Nota

Questi token fanno distinzione tra maiuscole e minuscole, pertanto, ad esempio, il passaggio di yyyy anziché di YYYY impedirebbe la visualizzazione dell'anno.
Componente Token Output
Giorno del mese
  • D
  • Do
  • DD
  • 1 2 ... 30 31
  • 1st 2nd ... 30th 31st
  • 1 2 ... 30 31
Giorno della settimana.
  • d
  • dd
  • dddd
  • 0 1 ... 5 6
  • Dom... ven. sab.
  • Domenica Lunedì... Venerdì Sabato
mese
  • M
  • MM
  • MMM
  • MMMM
  • 1 2 ... 11 12
  • 1 2 ... 11 12
  • Gen Feb ... Nov dic
  • Gennaio Febbraio... Novembre dicembre
Anno
  • YY
  • YYYY
  • 70 71 ... 29 30
  • 1.970 1.971 ... 2.029 2.030
Ora
  • H
  • HH
  • h
  • hh
  • 0 1 ... 22 23
  • 0 1 ... 22 23
  • 1 2 ... 11 12
  • 1 2 ... 11 12
Minuto
  • m
  • mm
  • 0 1 ... 58 59
  • 0 1 ... 58 59
Second
  • s
  • ss
  • 0 1 ... 58 59
  • 0 1 ... 58 59
Frazionario secondo
  • S
  • SS
  • SSS
  • 0 1 ... 8 9
  • 0 1 ... 98 99
  • 0 1 ... 998 999
AM/PM
  • A
  • a
  • AM - PM
  • am pm
fuso orario
  • Z
  • ZZ
  • -7:0 -6:0 ... +6:0 +7:0
  • -0700 -0600 ... +0600 +0700li

Formattare l'indicatore orario con gli oggetti Intl.DateTimeFormat

È inoltre possibile formattare l'indicatore orario utilizzando le opzioni definite per l'oggetto Intl.DateTimeFormat. Le proprietà passate con l'oggetto sono le seguenti:
Property Valori
dateStyle 'full' | 'long' | 'medium' | 'short'
timeStyle 'full' | 'long' | 'medium' | 'short'
weekday
  • 'long' (ad esempio, Thursday)
  • 'short' (ad esempio, Thu)
  • 'narrow' (ad esempio, T)
day
  • 'numeric'
  • '2-digit'
month
  • 'numeric' (ad esempio, 2)
  • '2-digit' (ad esempio, 02)
  • 'long' (ad esempio, March)
  • 'short' (ad esempio, Mar)
  • 'narrow' (ad esempio, M)
year
  • 'numeric'
  • '2-digit'
era
  • 'long' (ad esempio, Anno Domini)
  • 'short' (ad esempio, AD)
  • 'narrow' (ad esempio, A)
hour
  • 'numeric'
  • '2-digit'
minute
  • 'numeric'
  • '2-digit'
second
  • 'numeric'
  • '2-digit'
timeZoneName
  • 'long' (ad esempio, British Summer Time)
  • 'short' (ad esempio, GMT+1)
timeZone il fuso orario;. Tutte le implementazioni devono riconoscere UTC. Il valore predefinito è il fuso orario predefinito del runtime. Le implementazioni possono anche riconoscere i nomi dei fusi orari del database dei fusi orari IANA, come Asia/Shanghai, Asia/Kolkata, America/New_York.
hour12 Se utilizzare l'ora 12 ore (invece dell'ora 24 ore). I valori disponibili sono true e false.

Personalizzare l'indicatore di valutazione dei messaggi di feedback

Il messaggio sul componente di feedback consente di raccogliere il feedback degli utenti. Se si utilizza l'SDK 21.10, la presentazione predefinita del componente di feedback è un sistema di classificazione a stelle, una riga orizzontale di stelle evidenziate quando gli utenti passano il mouse e le selezionano. È possibile modificare il funzionamento del componente utilizzando il componente Feedback utente, ma è possibile personalizzare l'aspetto dei componenti utilizzando le impostazioni SDK.

È possibile modificare l'icona per i pulsanti di selezione della valutazione del componente passando l'icona desiderata definendo l'icona rating nel campo icons.

Suggerimento

Per una migliore esperienza utente, utilizzare una stringa SVG solida senza un colore di riempimento, in quanto consente un'evidenziazione riconoscibile al passaggio del mouse.
new WebSDK({
    URI: '<Server URI>',
    //...,
    icons: {
        rating: '<svg height="24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M15.994 3.006a5.7 5.7 0 00-3.795 1.707L12 4.916l-.199-.202a5.676 5.676 0 00-8.128 0c-2.231 2.275-2.231 5.953 0 8.228L12 21.428l8.326-8.486A5.873 5.873 0 0022 8.828a5.873 5.873 0 00-1.675-4.115A5.693 5.693 0 0016.262 3z"/></svg>'    // A heart icon
    }
})
Il colore dell'icona nei due stati, deselezionato e spostato/selezionato, può essere configurato rispettivamente con i campi di colore ratingStar e ratingStarFill nelle impostazioni dei colori.
new WebSDK({
    URI: '<Server URI>',
    //...,
    icons: {
        rating: '<svg height="24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M15.994 3.006a5.7 5.7 0 00-3.795 1.707L12 4.916l-.199-.202a5.676 5.676 0 00-8.128 0c-2.231 2.275-2.231 5.953 0 8.228L12 21.428l8.326-8.486A5.873 5.873 0 0022 8.828a5.873 5.873 0 00-1.675-4.115A5.693 5.693 0 0016.262 3z"/></svg>'    // A heart icon
    },
    colors: {
        ratingStar: '#ffebee',
        ratingStarFill: '#d32f2f'
    }
})

Suggerimento

È possibile personalizzare i prompt restituiti dal componente Feedback utente modificando i bundle di risorse correlate al feedback a cui si accede tramite la pagina Configurazione bundle risorse oppure modificando le chiavi systemComponent_Feedback_ in un file CSV del bundle di risorse esportato.

Invia il messaggio iniziale quando la cronologia della conversazione è vuota

I messaggi initUserHiddenMessage vengono inviati indipendentemente dalla cronologia delle conversazioni dell'utente; vengono inviati la prima volta che il widget di chat viene aperto per ogni sessione. Per inviare il messaggio iniziale quando la cronologia delle conversazioni è vuota, è necessario associare un listener di eventi al metodo Bots.on(). Ad esempio:
Bots = new WebSDK(chatSettings);

var isHandled = false;
var message = ;

Bots.on(WebSDK.EVENT.WIDGET_OPENED, function() {
    if (!isHandled && Bots.isConnected() && !Bots.getConversationHistory().messagesCount) {
        Bots.sendMessage(message, { hidden: true });
        isHandled = true;
    }
});

Bots.on(WebSDK.EVENT.NETWORK, function(state) {
    if (!isHandled && Bots.isConnected() && Bots.isChatOpened() && !Bots.getConversationHistory().messagesCount) {
        Bots.sendMessage(message, { hidden: true });
        isHandled = true;
    }
});

Bots.connect();

Iniezione del servizio di sintesi vocale

Utilizzando il servizio nativo text-to-speech del dispositivo, la sintesi text-to-speech (TTS) dell'SDK utilizza il servizio del dispositivo che consente di esprimere le risposte dell'abilità non appena vengono ricevute dall'istanza Web SDK. Questo è l'approccio predefinito e, sebbene sia affidabile, presenta alcuni svantaggi:
  • Sei spesso limitato a voci innaturali e generiche che possono minare il tuo branding.
  • Il dispositivo di un utente potrebbe non supportare voci specifiche di genere.
  • Alcuni framework nativi (Cordova e ReactNative tra questi) richiedono librerie di terze parti per i servizi TTS perché le loro viste Web non espongono le API di sintesi vocale native richieste dall'SDK Web.
Per risolvere queste problematiche, è possibile impostare la voce utilizzata per le risposte dello skill iniettando un servizio TTS nell'istanza SDK avviando l'SDK con il flag della funzione ttService o chiamando il metodo setTTSService (descritto nella documentazione che accompagna l'SDK). Puoi utilizzare un servizio fornito da Oracle, come Oracle Cloud Infrastructure (OCI) Speech Service, o uno fornito da terze parti.

Text-to-Speech

  • Flag funzione: enableBotAudioResponse: true (l'impostazione predefinita è false.)
  • Servizio TTS predefinito: WebSDK.TTS.oracle
  • Configurazione funzioni: ttsVoice

Puoi arricchire l'esperienza conversazionale abilitando la sintesi vocale (TTS, text-to-speech) per parlare delle risposte mentre raggiungono l'SDK. L'SDK fornisce due tipi di servizio TTS predefiniti: WebSDK.TTS.platform e WebSDK.TTS.oracle. Per impostazione predefinita, l'SDK utilizza il servizio vocale OCI (Oracle Cloud Infrastructure) per le risposte parlate in modo più naturalistico. Questo servizio offre un'esperienza facilmente brandizzata perché offre diverse voci. Tuttavia, è possibile utilizzare il servizio TTS dipendente dalla piattaforma, WebSDK.TTS.platform, basato sull'API di Web Speech. Utilizza le API di sintesi vocale sul dispositivo dell'utente per parlare delle risposte.

Utilizzare l'array ttsVoice per configurare la voce per il TTS. Ogni elemento nell'array deve essere un oggetto con almeno un campo lang o name. L'SDK cerca la disponibilità di ogni voce nell'ordine in cui viene passata nell'impostazione. La prima partita completa viene impostata come voce. Se non viene trovata alcuna corrispondenza esatta, l'SDK utilizza la prima corrispondenza in base al solo valore lang. Se non esiste ancora alcuna corrispondenza, l'SDK utilizza la voce predefinita.
const settings = {
    ...,
    enableBotAudioResponse: true,
    ttsVoice: [{
        lang: 'en-US',
        name: 'Samantha'
    }, {
        lang: 'en-US',
        name: 'Alex'
    }, {
        lang: 'en-UK'
    }]
}
Per adattare il modo in cui vengono pronunciate le espressioni, l'array ttsVoice consente di passare le proprietà facoltative pitch, rate e volume in ogni elemento. Queste proprietà corrispondono agli stessi campi dell'interfaccia SpeechSynthesisUtterance.
  • Il valore della proprietà pitch può essere compreso tra 0 e 2.
  • La proprietà rate può avere un valore compreso tra 0,1 e 10.
  • La proprietà volume può avere un valore compreso tra 0 e 1.
Ad esempio:
const settings = {
    // ....,
    ttsVoice: [{
        lang: 'en-us',
        name: 'Alex',
        pitch: 1.5,
        rate: 2,
        volume: 0.8
    }, {
        lang: 'en-us',
        name: 'Victoria',
        pitch: 1.2,
        rate: 1.7,
    }, {
        lang: 'en',
        name: 'Fiona',
        pitch: 2,
    }, {
        lang: 'en'
    }]
}

Interfaccia del servizio di sintesi vocale

È necessario implementare l'interfaccia SpeechSynthesisService per l'istanza del servizio TTS che si sta per inserire.
/**
 * Interface for the speech synthesis service; this can be used to define a service that can be
 * injected into the SDK to perform speech synthesis on behalf of the skill or assistant
 */
interface SpeechSynthesisService {
    /**
     * Adds a phrase to the utterance queue to be spoken
     * @param phrase string
     */
    speak(phrase: string): void;

    /**
     * Cancels any ongoing speech synthesis utterance
     */
    cancel(): void;

    /**
     * Returns a Promise that resolves into a list of SpeechSynthesisServiceVoice objects representing
     * the available voices
     *
     * @return {*}  {Promise<SpeechSynthesisServiceVoice[]>}
     */
    getVoices(): Promise<SpeechSynthesisServiceVoice[]>;

    /**
     * Sets the voice to be used for speaking the utterances. It accepts an array of candidate voices
     * sorted in their preference order, and sets one of them according to its matching criteria.
     * It returns a Promise that gets resolved when the voice is set.
     *
     * @param {SpeechSynthesisServiceVoice[]} voice
     * @return {*}  {Promise<void>}
     */
    setVoice(voices: SpeechSynthesisServiceVoice[]): Promise<void>;

    /**
     * Returns the voice that is used for speaking the utterances
     */
    getVoice(): SpeechSynthesisServiceVoice;

    /**
     * Adds listener to SpeechSynthesisServiceEvent
     *
     * @param {SpeechSynthesisServiceEvent} event
     * @param {Function} listener
     */
    on(event: SpeechSynthesisServiceEvent, listener: () => void): void;

    /**
     * Removes listener(s) to SpeechSynthesisServiceEvent
     *
     * @param {SpeechSynthesisServiceEvent} event
     * @param {Function} listener
     */
    off(event: SpeechSynthesisServiceEvent, listener?: () => void): void;
}
È necessario implementare o estendere l'interfaccia SpeechSynthesisServiceVoice per le voci utilizzate nel servizio di sintesi vocale:
/**
 * Represents a voice that the SpeechSynthesisService supports. Every SpeechSynthesisServiceVoice has
 * its own relative speech service including information about language, name and optionally more.
 */
interface SpeechSynthesisServiceVoice {
    /**
     * Returns a BCP 47 language tag indicating the language of the voice
     */
    readonly lang: string;

    /**
     * Returns a human-readable name that represents the voice
     */
    readonly name: string;

    /**
     * Pitch of the voice, can range between 0 and 2, default is 1
     * Optional
     */
    pitch?: number;

    /**
     * Speed at which the utterance is spoken at, can range between 0.1 and 10, default is 1
     * Optional
     */
    rate?: number;

    /**
     * Volume at which the utterance is spoken at, can range between 0 and 1, default is 1
     * Optional
     */
    volume?: number;
}
Nota

L'oggetto SpeechSynthesisServiceEvent dispone di due eventi, TTSPlay e TTSEnd:
const SpeechSynthesisServiceEvent = {
    TTSPlay: 'tts:play',
    TTSEnd: 'tts:end'
}
Una volta che il servizio TTS viene mappato a un oggetto che implementa l'API di sintesi vocale, può essere passato all'SDK per l'iniezione del servizio TTS. Il servizio può essere inserito quando questo oggetto viene passato al campo ttsService durante l'inizializzazione oppure può essere inserito dinamicamente passando l'oggetto al metodo setTTSService(service).

Dopo l'inserimento del servizio TTS, l'SDK gestisce le chiamate ai metodi di servizio per l'esecuzione dei messaggi. Tuttavia, è possibile chiamare direttamente questi metodi oppure utilizzare i metodi TTS esposti dall'SDK per qualsiasi esigenza. In modalità headless, ad esempio, è possibile chiamare il metodo Bots.speakTTS(message) per passare un messaggio ricevuto dalla competenza. L'SDK gestisce sia l'analisi del testo pronunciabile dal messaggio che il passaggio di questo testo al servizio TTS in modo che possa essere pronunciato.