Personnaliser le widget de clavardage

Vous pouvez personnaliser divers aspects du widget de clavardage, tels que la disposition et les icônes, les couleurs et le texte.

Conseil :

Cet article présente les différentes propriétés de personnalisation.

Configuration de réseau

Vous lancez la trousse SDK à l'aide des propriétés de connexion ci-dessous. L'exemple d'application fourni avec la trousse SDK contient un exemple de configuration de ces propriétés dans le fichier scripts/settings.js.
Nom de la propriété Description Obligatoire? Valeur par défaut
URI URL du serveur de clavardage Oracle Oui S.O.
channelId ID canal du canal Oracle Web Oui S.O.
userId Identificateur unique de l'utilisateur. Si vous n'indiquez pas cette valeur, Oracle Digital Asssistant la génère. Non Valeur générée aléatoirement
clientAuthEnabled Détermine si la trousse SDK se connecte à un canal pour lequel l'authentification de client a été activée. Comme décrit dans Configurer l'authentification de client, réglez cette propriété à true pour vous connecter à un canal prenant en charge l'authentification et utiliser le jeton JWT. Oui false

Indicateurs de fonction

Utilisez les propriétés d'indicateur de fonction pour les éléments suivants :
  • Connexions sécurisées
  • Boutons d'action de forme ovale
  • Expression audio des réponses de compétence
  • Partage de fichiers joints
  • Désactivation des clics sur les messages précédents (hors sélection)
  • Remplir automatiquement l'entrée d'utilisateur
Par exemple :

    <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>

Conseil :

À partir de la version 22.08, le schéma des paramètres de configuration du widget de clavardage est disponible dans un format de schéma JSON standard au moyen d'un réseau de diffusion de contenu (https://static.oracle.com/cdn/oda/22.8.0/settings-schema.json), qui peut être utilisé pour créer des écrans de configuration dynamiques.
Nom de la propriété Description Obligatoire? Valeur par défaut
alwaysShowSendButton Affiche le bouton d'envoi dans le pied de page du clavardage même s'il n'y a pas de texte d'entrée utilisateur. Non false
defaultGreetingTimeout Temporisation par défaut, en secondes, après laquelle un message d'accueil par défaut s'affiche. Non 5
defaultWaitMessageInterval Intervalle par défaut, en secondes, pendant lequel le message d'attente par défaut s'affiche. Non 5
disablePastActions Désactive les boutons d'action dans un message de compétence après qu'un utilisateur a interagi avec une action de republication, d'emplacement ou de soumission de formulaire. Les valeurs autorisées sont all, none ou postback. Lorsque cette option est réglée à all, tous les boutons d'action du message sont désactivés lors de l'interaction. Le réglage de postback désactive uniquement les actions de republication et d'emplacement, et le réglage de none conserve tous les boutons activés même après une interaction. Le comportement activé par cette propriété est indépendant de la configuration au niveau de l'assistant numérique pour la désactivation de la sélection d'actions passées. Vous devez définir les deux configurations séparément. Non all
displayActionsAsPills Affiche des boutons d'action de forme ovale. Non false
enableAttachment Configure le partage des fichiers joints. Non true
enableAttachmentSecurity Lorsque cette propriété est réglée à true, des en-têtes supplémentaires sont transmis aux demandes de chargement de pièces jointes afin de s'assurer qu'elles ne peuvent pas être téléchargées sans transmettre de jeton JWT signé valide en tant qu'en-tête d'autorisation.

N'activez pas ce paramètre si la compétence se connecte à une instance ODA de version 20.08 ou s'exécute sur une version antérieure à 20.08. Cette propriété ne s'applique qu'aux connexions à authentification de client activée aux versions 20.12 et supérieures de la plate-forme ODA.

Non false
enableAutocomplete Réglez cette propriété à true pour permettre à la compétence de remplir automatiquement la demande de l'utilisateur à l'aide de la meilleure demande possible figurant dans les suggestions de remplissage automatique de la page Create Intent (Créer une intention). La compétence affiche ces suggestions lorsque l'utilisateur entre au moins trois caractères. Elle met également en évidence les mots entrés par l'utilisateur qui correspondent aux expressions suggérées en gras. Non false
enableBotAudioResponse Active l'énoncé des réponses d'une compétence à mesure qu'elles sont reçues à l'aide de l'API de synthèse vocale Web. Non false
enableClearMessage Active le bouton d'effacement de message dans l'en-tête du widget de clavardage. Non false
enableDraggableButton Permet aux utilisateurs de déplacer le bouton du widget de clavardage lorsqu'il bloque le contenu de la page Web. Cette fonctionnalité peut également être utilisée pour les navigateurs Safari Android et iOS. Non false
enableHeadless Permet d'utiliser la trousse SDK Oracle Web sans son interface utilisateur pour développer votre propre interface utilisateur de clavardage. Non false
enableLocalConversationHistory Permet le chargement dans le navigateur de la conversation précédente associée à un userId donné une fois le widget initialisé. Non false
enableLongPolling Utiliser des demandes HTTP en cas d'échec de la connexion WebSocket. Non false
enableSecureConnection Configure la communication sécurisée (https et http, et wss et ws). Non true
enableSpeech Si elle est réglée à true, cette propriété active la fonction de reconnaissance de la parole du microphone. Par exemple :
const chatSettings = {
    URI: 'idcs-oda-example.com',
    channelId: '9999b1-f99a-9999-999ee-df9d99999d',
    enableSpeech: true
};
Non false
enableSpeechAutoSend Lorsque cette propriété est réglée à true (valeur par défaut), la réponse vocale de l'utilisateur est automatiquement envoyée au serveur de clavardage (et s'affiche en tant que message envoyé dans le widget de clavardage). Lorsque cette propriété est réglée à false, la réponse vocale de l'utilisateur est affichée dans le champ de texte du message avant d'être envoyée au serveur de clavardage afin que l'utilisateur puisse la modifier avant de l'envoyer manuellement, ou qu'il puisse supprimer le message. Non true
focusOnNewMessage Place la focalisation soit sur le champ d'entrée d'utilisateur, soit sur le premier bouton d'action d'un nouveau message reçu.
  • action – Lorsqu'un message est reçu, la focalisation est placée sur le premier bouton d'action (si le message en comporte). Si le message ne comprend pas de bouton, la focalisation est placée sur le champ d'entrée d'utilisateur.
  • input – La focalisation reste sur le champ d'entrée d'utilisateur lorsque de nouveaux messages sont reçus.
Non input
multiLangChat Permet au widget de clavardage de détecter la langue d'un utilisateur et de permettre à celui-ci de sélectionner une langue de préférence dans un menu déroulant de l'en-tête. Vous définissez le menu avec un objet qui spécifie la langue principale et un tableau de deux balises linguistiques ou plus (le tableau supportedLangs, décrit dans Clavardage multilingue). Non S.O.
name Nom de l'instance. Fournit un espace de noms à l'instance et est utilisé comme préfixe pour les noms de classe CSS et les ID d'élément. Non oda-chat
openChatOnLoad Développe le widget de clavardage lorsque la page est chargée. Non false
openLinksInNewWindow Remplace les préférences du navigateur de l'utilisateur en ouvrant les liens dans une nouvelle fenêtre. Ce paramètre s'applique à tous les liens présents dans la conversation, y compris les boutons d'action, les liens de traitement de secours pour les fichiers joints et les liens de carte. Non false
showConnectionStatus Active l'affichage du statut de la connexion dans l'en-tête du widget de clavardage. Non false
showPrevConvStatus Affiche les messages de statut à la fin des messages des conversations précédentes. Non true
showTypingIndicator Affiche une bulle de clavardage lors de l'attente d'une réponse. Non true

Fonction

Utilisez les propriétés de fonctionnalité pour :
  • Imiter une conversation lancée par une compétence.
  • Intégrer du contenu en haut et en bas de la fenêtre de clavardage, fixe ou pouvant être parcouru.
  • Définissez les paramètres régionaux.
  • Définir le mode de débit.
  • Définir les paramètres régionaux et la voix pour la synthèse de la parole.
Propriété Description Obligatoire? Valeur par défaut
customHeaderElementId Nomme l'ID de l'élément <div> ajouté à l'en-tête du widget de clavardage. Non S.O.
delegate Objet qui définit un délégué pour la réception de rappels avant certains événements de l'une conversation. L'objet delegate permet au code d'interagir avec les messages d'utilisateur et les réponses de compétence avant l'envoi des messages et l'affichage des réponses. Non S.O.
embedBottomScrollId ID de l'élément ajouté en tant que contenu défilant au bas du clavardage. Utilisez cette propriété pour ajouter du contenu personnalisé dans la vue de conversation du widget de clavardage. Non S.O.
embedBottomStickyId ID de l'élément utilisé pour le contenu fixe affiché au bas du clavardage. Utilisez cette propriété pour ajouter du contenu personnalisé dans la vue de conversation du widget de clavardage. Non S.O.
embedded Réglez cette propriété à true pour activer le mode intégré pour le widget de clavardage. En plus de paramétrer cette propriété, vous devez nommer l'élément div qui abrite le widget dans la propriété targetElement. Non false
embeddedVideo Le réglage de cette option à true intègre des liens pour les vidéos YouTube, Daily Motion et Oracle Video Hub afin qu'elles puissent être lues à partir du widget de clavardage. Non false
embedTopscrollId ID de l'élément div ajouté en tant que contenu défilant en bas du widget de clavardage. Non S.O.
embedTopStickyId ID de l'élément div utilisé pour le contenu fixe qui apparaît en haut du widget de clavardage. Utilisez cette propriété pour ajouter du contenu personnalisé dans la vue de conversation du widget de clavardage. Par exemple, l'élément top-text div dans l'extrait de code suivant est référencé en tant que embedTopStickyId: 'top-text' :

<div id="top-text" style="padding: 0; text-align: initial">
<p>Talk to Pizzabot to order your pizza.</p>
</div>
Le tutoriel de la trousse SDK Web décrit comment configurer cette propriété et définir le défilement et le non-défilement des éléments du widget de clavardage.
Non S.O.
enableAgentSneakPreview Envoie le texte entré par l'utilisateur et le statut de saisie à l'agent. Non false
enableAutocompleteClientCache Active la mise en mémoire cache côté client pour réduire les appels du serveur lorsque la fonction de remplissage automatique est en cours d'utilisation. Non false
enableDefaultClientResponse Lorsque cette option est réglée à true, le client affiche les réponses par défaut lorsque la réponse de la compétence a été retardée ou lorsqu'il n'y a aucune réponse de la compétence. Non false
enableEndConversation Permet à l'utilisateur de mettre fin à la conversation et de réinitialiser la session de clavardage. Il efface également l'historique de conversation local, se déconnecte du serveur de clavardage et minimise le widget Non true
enableHeaderActionCollapse Réduit les actions d'en-tête dans un bouton de menu si le nombre d'icônes est supérieur à deux. Non true
enableResizableWidget Permet à l'utilisateur de redimensionner le widget de clavardage après l'avoir développé. Si le widget est situé sur le côté droit de la page Web, les utilisateurs ajustent ses dimensions en faisant glisser le bord supérieur, le bord gauche ou le coin supérieur gauche. De la même façon, si le widget est placé sur le côté gauche, les utilisateurs redimensionnent le bord supérieur, le bord droit ou le coin supérieur droit. Non false
enableSendTypingStatus Envoie le statut de saisie de l'utilisateur à l'agent humain. Non false
enableTabsSync Synchronise les messages de conversation entre différents onglets pour un userId et un channelId donnés. Non true
enableVoiceOnlyMode Active le mode voix seule. L'activation du mode voix seule élimine la nécessité pour les utilisateurs de cliquer sur le bouton micro à chaque fois après avoir reçu un message du robot. Avec ce mode activé, le SDK lance automatiquement la reconnaissance vocale une fois que le TTS (Text-to-Speech) pour le message reçu a été prononcé. Non false
hotkeys Objet contenant une liste de touches du clavier qui activent ou mettent en évidence des éléments à l'aide de la touche ALT combinée au raccourci transmis. Non {...} Par exemple :
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 Objet contenant les champs de paramètres régionaux. Les paramètres régionaux contiennent des paires nom-valeur i18n pour les chaînes de texte utilisées dans le widget. Non {'en-us':{…}}
Par exemple :
"i18n": {
                "en-us": {
                    "chatTitle": "Pizza King"
                }
            } 
initBotAudioMuted Initialise l'énoncé du message de compétence en mode mis en sourdine. Cette fonction ne peut être activée que lorsque vous réglez enableBotAudioResponse à true. Non true
initMessageOptions Alors qu'initUserHiddenMessage envoie le message "masqué" initial seulement après que le client s'est connecté à la compétence et que le widget de clavardage a été développé, vous pouvez utiliser ce paramètre pour envoyer des messages dès que le client s'est connecté à la compétence, que le widget soit développé ou non. Ce paramètre accepte un objet ayant une propriété sendAt. La propriété sendAt peut avoir l'une des deux valeurs suivantes : 'init' ou 'expand'. Si vous sélectionnez 'init', les messages initiaux sont envoyés dès que la connexion est effectuée. Si vous sélectionnez 'expand', les messages initiaux ne sont envoyés que lorsque le widget est développé. Dans l'extrait suivant, le message est envoyé lorsque la connexion est établie en raison de sendAt: 'init' :
const chatSettings = {
    URI: '...',
    channelId: '...',
    initUserHiddenMessage: 'Hello',
    initMessageOptions: {
        sendAt: 'init'
    }
}
Bots = new WebSDK(settings);
Bots.connect();
Gardez à l'esprit que la facturation commence lorsque le message initial a été envoyé, même si le widget est toujours fermé (comme c'est le cas avec sendAt: 'init').
  S.O.
initUserHiddenMessage Message utilisé pour lancer une conversation. Ce message peut être une chaîne de texte ou des données utiles de message. Par exemple : initUserHiddenMessage: 'Hi'. Ces messages ne dépendent pas de l'historique de l'utilisateur. Ce message est envoyé dans chaque session après que le client s'est connecté à la compétence et que le widget de clavardage a été développé. Pour envoyer le premier message uniquement lorsque l'historique de conversation est vide, vous devez lier les modules d'écoute d'événement à l'aide de la méthode Bots.on(). Par exemple, vous pouvez le faire en liant les événements WIDGET_OPENED et NETWORK , décrits dans les documents sur la trousse SDK. Non S.O.
initUserProfile Met à jour le profil de l'utilisateur avant le début d'une conversation. Le format des données utiles du profil doit être { profile: {...} }. Par exemple :
initUserProfile : {
    profile:{
    givenName: 'First',
    surname: 'Last',
    email: 'first.last@example.com',
    properties: {
        lastOrderedItems: '1 medium pepperoni'
    }
}
Cette fonction met à jour le contexte d'utilisateur une fois que le client est connecté à la compétence et que le widget de clavardage a été développé. Ainsi, le profil de l'utilisateur peut apparaître dans le premier message de réponse à l'utilisateur. Par exemple, la compétence peut accueillir l'utilisateur avec un message du type "Bienvenue, Jean Martin ! Votre dernière commande était une pizza au pepperoni de taille moyenne." Ces messages sont envoyés après que le client s'est connecté à la compétence et que le widget de conversation est développé. Ces messages de profil d'utilisateur sont envoyés après que le client s'est connecté à la compétence et que le widget de clavardage est développé. Un message de profil d'utilisateur est toujours envoyé avant le message "masqué" initial si initUserHiddenMessage est également transmis.

Vous ne pouvez transmettre la propriété profile que dans les données utiles. Si vous devez transmettre une autre propriété telle que messagePayload. Si le message initial a besoin à la fois du profil et des propriétés messagePayload, utilisez initUserHiddenMessage à la place.

Non S.O.
isDebugMode Active le mode de débit. Non false
linkHandler Objet qui remplace la configuration de traitement des clics sur les liens intégrés dans les réponses de la compétence. Cet objet traite les liens de deux façons : target, qui accepte une chaîne, et onclick, qui accepte une fonction. Vous pouvez définir target ou onclick, mais pas les deux. Lorsque vous voulez que tous les liens s'ouvrent dans une vue Web, transmettez linkHandler: { target: 'oda-chat-webview' }. Non
{ onclick: <function>, target: 'string' }
locale Paramètres régionaux par défaut pour les chaînes de texte du widget. Les paramètres régionaux transmis lors de l'initialisation sont prioritaires sur ceux du navigateur des utilisateurs. En l'absence de correspondance exacte, la trousse SDK tente de mettre en correspondance la langue la plus proche. Par exemple, si les paramètres régionaux sont 'da-dk', mais que des traductions i18n sont fournies uniquement pour 'da', la traduction 'da' est utilisée. S'il n'y a pas de traductions pour les paramètres régionaux transmis, les traductions associées aux paramètres régionaux du navigateur sont recherchées et appliquées. En l'absence totale de traductions, les paramètres régionaux par défaut, 'en', sont utilisés. Non en-us
messageCacheSizeLimit Nombre maximal de messages à enregistrer dans localStorage à la fois. Non 2000
reconnectMaxAttempts Nombre de tentatives effectuées par le widget de clavardage pour se reconnecter lorsque la connexion initiale échoue. Non 5
shareMenuItems Éléments du menu contextuel de partage. Cette propriété accepte un tableau de valeurs de chaîne mappées à des éléments de menu :
  • 'visual' pour image et vidéos
  • 'audio' pour l'audio
  • 'file' pour les fichiers
  • 'location' pour l'emplacement
Vous pouvez indiquer les éléments disponibles dans le menu (['audio', 'file'], par exemple). Tous les éléments du menu sont disponibles lorsque le tableau est vide, lorsque les éléments du tableau sont incorrects (['audio', 'visuil'] ou lorsque shareMenuItems n'a pas été défini.
Non
['audio', 'file', 'location', 'visual']
skillVoices Tableau contenant les voix préférées utilisées pour narrer les réponses. Chaque élément du tableau doit être un objet avec deux champs : lang et name. name est facultatif. Le premier élément correspondant à une voix disponible dans le système sera utilisé comme voix de narration. Ce paramètre est obsolète. Non System language
speechLocale Paramètres régionaux attendus du message vocal de l'utilisateur servant à la reconnaissance vocale. Anglais É.-U. ('en-US') est le paramètre régional par défaut. Les autres paramètres régionaux pris en charge sont : anglais australien ('en-au'), anglais britannique ('en-uk'), français ('fr-fr'), allemand ('de-de'), italien ('it-it'), indien-hindi (hi-in), indien-anglais (en-in), portugais brésilien ('pt-br') et espagnol ('es-es'). Les paramètres régionaux de la parole peuvent être définis dynamiquement en appelant l'API setSpeechLocale('<locale>'). La reconnaissance vocale ne fonctionnera pas si une région non prise en charge est transmise. Non 'en-us'
storageType Mécanisme de stockage Web servant à conserver l'historique des conversations pour les utilisateurs dont l'identificateur userId est transmis par l'application hôte. Les valeurs prises en charge sont 'localStorage' et 'sessionStorage'. Les conversations des utilisateurs anonymes sont toujours stockées dans sessionStorage et sont automatiquement supprimées une fois la session du navigateur terminée. Non 'localStorage'
targetElement Nomme l'élément div dans lequel le widget de clavardage est intégré à la page Web. Dans l'extrait de code suivant, l'élément chat-container div est référencé en tant que targetElement: 'chat-container' :
        <div id="chat-container" class="chatbox" 
            style="height: 600px; width: 400px; padding: 0;
            text-align: initial">
        </div>
Consultez le tutoriel de la trousse SDK Web pour savoir comment ajouter l'élément div et définir son style.
Non S.O.
theme Thème de disposition principal. Trois thèmes sont disponibles : 'default', 'redwood-dark' et 'classic'. Non default
timestampFormat Formate l'horodatage de transmission qui accompagne les messages. Accepte les valeurs d'un objet DateTimeFormat options ou sous forme de modèle comme décrit dans Personnaliser l'horodatage

Note : Cela contrôle l'horodatage du message, et non l'horodatage de l'en-tête.

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

}
timestampHeaderFormat Personnalisez le format d'horodatage dans l'en-tête du message. Vous pouvez utiliser un objet DateTimeFormat options ou une chaîne de modèle comme décrit dans Personnaliser l'horodatage. Non S.O.
timestampHeaderMode Configure les en-têtes d'horodatage qui apparaissent au-dessus du premier message du jour. 'absolute' (format par défaut) affiche l'horodatage complet dans un format absolu, 'relative' l'affiche dans un format relatif et 'none' masque entièrement l'en-tête d'horodatage. Non absolute
timestampMode Configure le mode d'affichage des heures en tant qu'horodatage absolu qui apparaît sur chaque message, ou en tant qu'horodatage relatif qui apparaît uniquement sur le dernier message.
  • default - Définit un heure relative sur chaque message.
  • relative (par défaut) - L'horodatage s'affiche avant le premier message du jour comme heure absolue dans un en-tête, puis comme heure relative pour les nouveaux messages comme heure de mise à jour indiquant le temps écoulé depuis l'ajout du message dans la conversation. L'horodatage relatif se met à jour à intervalles déterminés jusqu'à la réception d'un nouveau message.
  • absolute - Définit un heure absolue sur chaque message.
  • none - Désactive l'horodatage.

Note : Cela contrôle l'horodatage du message, et non l'horodatage de l'en-tête.

Non default (pour les horodatages absolus), ou relative.
ttsService Tableau contenant les voix préférées utilisées pour les réponses vocales via le texte à la parole (TTS). Chaque élément du tableau doit être un objet avec au moins un des champs suivants : lang et name. Le premier élément correspondant à une voix disponible dans le système sera utilisé pour le TTS. Non oracle
typingIndicatorTimeout Définit le délai en secondes au bout duquel l'indicateur de saisie est automatiquement supprimé si le widget de clavardage n'a pas encore reçu la réponse. Non 20
typingStatusInterval Définit l'intervalle, en secondes, pour ajuster le statut de saisie envoyé à l'agent humain. Non 3
webViewConfig Personnalise la vue Web dans le widget. Non { referrerPolicy: 'no-referrer-when-downgrade', closeButtonType: 'icon', size: 'tall' }

En savoir plus et lire moins Boutons pour les réponses de compétence multi-paragraphe

Vous pouvez optimiser l'expérience utilisateur pour les messages de compétence à plusieurs paragraphes en ajoutant des boutons Read More et Read Less.
Description de readmore.png :
Description de l'illustration readmore.png

Vous pouvez ajouter le code côté client pour ces boutons, qui masquent et affichent les paragraphes, à l'aide de l'objet delegate et des fonctions personnalisées.

  1. Dans settings.js, définissez un objet delegate avec une fonction de rappel beforeDisplay dans la déclaration const chatSettings :
    delegate: {
                beforeDisplay: function (message) {
                    var messagePayload = message && message.messagePayload;
                    if (messagePayload.type === 'text') {
                        messagePayload.text = splitParagraph(messagePayload.text);
                    }
                    return message;
                }
            }
    Si le message est de type text, beforeDisplay appelle la fonction splitParagraph personnalisée pour fractionner le texte par le premier paragraphe.
  2. Déclarez les variables pour les fonctions de vue splitParagraph et toggleParagraph personnalisées :
    var PREFIX_DOTS = 'dots_';
    var PREFIX_MORE = 'more_';
    var PREFIX_TOGGLE = 'toggle_button';
  3. Ajoutez l'expression de fonction splitParagraph et la fonction toggleParagraphView.
    splitParagraph est une expression de fonction IIFE (Immediately Invoked Function Expression) qui isole la variable globalIDCounter afin qu'elle ne soit accessible qu'à partir de la fonction splitParagraph. Le code identifie un paragraphe ("\n\n") et divise le texte en conséquence. Il ajoute ensuite trois points (...) pour indiquer qu'il y a plus de texte à afficher et un bouton Read More pour afficher le texte restant.

    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. Configurez et stylisez (facultativement) les boutons Read More et Read Less. Le CSS inclut un style display:none pour afficher ou masquer les boutons en fonction de l'état de l'affichage du texte long.
    • Si vous ne voulez pas styliser les boutons, ajoutez le code suivant :
      <style>
      .more {
        display: none;
      }
      </style>
    • Si vous voulez styliser les boutons, vous pouvez faire quelque chose comme ceci :
      <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>

Présentation

Utilisez les propriétés de disposition pour :
  • Définir la position du widget dans la page Web.
  • Définir les dimensions, les couleurs et le style de police du widget de clavardage.
  • Définir le remplissage des messages dans le widget.
  • Définir la position de l'icône de la pastille d'avis par rapport au bouton du robot.
  • Définir la position de départ de la conversation dans le widget.
Par exemple :
     <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>
Propriété Description Obligatoire? Valeur par défaut
actionsLayout Définit la direction de disposition des actions locales. Lorsque vous réglez ce paramètre à horizontal, ces boutons sont disposés horizontalement et s'encapsuleront si le contenu déborde. Non vertical
badgePosition Position de l'icône de la pastille par rapport au bouton de l'icône. Non {"top": "0", "right": "0"}
cardActionsLayout Définit la direction de disposition pour les actions de carte. Lorsque vous réglez ce paramètre à horizontal, ces boutons sont disposés horizontalement et s'encapsuleront si le contenu. Non vertical
colors Couleurs utilisées dans le widget de clavardage. Non {"branding": "#1B8FD2", "text": "#212121", "textLight": "#737373"}
conversationBeginPosition Position de début de la conversation dans le widget. Si cette propriété est réglée à top, les premiers messages apparaissent en haut du widget. Si elle est réglée à bottom, la conversation commence en bas. Non bottom
font Police utilisée dans le widget de clavardage. Non 16px "Oracle Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue
fontFamily Famille de polices utilisée pour tout le texte du widget de clavardage. Ce paramètre a priorité sur la configuration font. Non "Oracle Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue"
fontSize Taille de police à utiliser pour l'en-tête, la bulle et le texte de pied de page dans le widget. Ce paramètre a priorité sur la configuration font. Non 16px
globalActionsLayout Définit la direction de disposition pour les actions globales. Si ce paramètre est réglé à 'horizontal', les boutons sont placés horizontalement et s'encapsuleront si le contenu déborde. Non vertical
height Hauteur du widget de clavardage définie par l'une des valeurs de <length> data type. Non 70vh
messagePadding Remplissage autour des messages dans le widget de clavardage. Non 15px
position Emplacement du widget de clavardage dans la fenêtre du navigateur. Il doit être transmis en tant qu'objet JSON. Non {bottom: '20px', right: '20px'}
width Largeur du widget de clavardage définie sur l'une des valeurs de <length> data type. Non 30vw

Icônes de bouton d'en-tête personnalisé

Vous pouvez personnaliser le bouton d'effacement de message Ceci est une image de l'icône d'effacement de message, d'activation/de désactivation des réponses audio Ceci est une image de l'icône Audio Response (Réponse audio). de l'en-tête et le bouton de fermeture Ceci est une image de l'icône Close (Fermer). de deux manières : en transmettant l'URL source de l'image ou une chaîne SVG brute. Pour les chaînes SVG brutes, la couleur de remplissage peut être personnalisée par des classes CSS, ainsi qu'en transmettant une valeur de couleur dans la propriété colors.headerButtonFill des paramètres initiaux.
Note

Il est possible que la personnalisation des couleurs ne fonctionne pas pour tous les SVG. En effet, ceux-ci peuvent être multicolores ou avoir leur propre couleurs de trait et de remplissage.
Icône d'icône Fonction Indicateur de fonction Personnaliser
Effacer le message Efface les messages actuels et anciens dans la conversation. enableClearMessage: true '<image URL | SVG string>'
Réponse audio Permet d'activer/de désactiver l'audio des réponses des compétences à mesure qu'elles sont reçues. Étant donné qu'il s'agit d'un bouton à bascule, il est doté de deux états : énoncé activé, où les réponses sont vocales et énoncé désactivé, où elles ne le sont pas. enableBotAudioResponse: true
  • Réponse activée : audioResponseOnIcon: '<image URL | SVG string>'
  • Réponse désactivée : audioResponseOffIcon: '<image URL | SVG string>
Fermer Réduit le widget et affiche le bouton de lancement Ceci est une image de l'icône de lancement.. Ce bouton ne peut pas être désactivé. Aucun : Cette icône est toujours activée dans le widget de clavardage. Elle n'apparaît pas en mode intégré. closeIcon : '<image URL | SVG string>'

Couleurs personnalisées

Vous pouvez personnaliser le widget en modifiant ses couleurs. Il existe deux approches de personnalisation des couleurs :
  • Vous pouvez transmettre la configuration colors :
    colors: {
        "branding": "#e00",
        "text": "#545454"
    },
    
  • Vous pouvez également utiliser des variables CSS définies dans l'encapsuleur de clavardage (.oda-chat-wrapper) :
    .oda-chat-wrapper {
        --color-branding: '#e00';
        --color-text: '#545454';
    }
    }
La couleur doit être hexadécimale. Si vous n'indiquez pas de couleur, celle-ci est utilisée par défaut. Ces extraits illustrent comment modifier la marque et les couleurs du texte. La couleur par défaut sera utilisée pour la couleur de texte secondaire.

Conseil :

Nous recommandons de modifier les couleurs à l'aide de variables CSS.
Variable CSS Clé Description
--color-actions-background actionsBackground Couleur d'arrière-plan des boutons d'action
--color-actions-background-hover actionsBackgroundFocus Couleur d'arrière-plan des boutons d'action lorsqu'ils sont actifs.
--color-actions-background-focus actionsBackgroundHover Couleur d'arrière-plan de pointage des boutons d'action
--color-actions-border actionsBorder Couleur de la bordure des boutons d'action
--color-actions-text actionsText Couleur du texte des boutons d'action
--color-actions-text actionsTextFocus Couleur du texte des boutons d'action lorsqu'ils sont actifs
--color-actions-text-focus actionsTextHover Couleur de pointage du texte des boutons d'action
--color-user-message-background botMessageBackground Couleur d'arrière-plan de la bulle de message de réponse de la compétence
--color-bot-text botText Couleur de texte d'un message envoyé par la compétence
--color-branding branding Couleur de marque principale du widget. Cette couleur est utilisée comme arrière-plan de l'en-tête et comme couleur de pointage pour les boutons du pied de page.
--color-card-background cardBackground Couleur d'arrière-plan utilisée pour une carte.
--color-conversation-background conversationBackground Couleur utilisée pour l'arrière-plan du volet de conversation.
--color-danger-actions-background dangerActionsBackground Couleur d'arrière-plan du bouton d'action de danger
--color-danger-actions-background-focus dangerActionsBackgroundFocus Couleur d'arrière-plan du bouton d'action de danger sur le focus
--color-danger-actions-background-hover dangerActionsBackgroundHover Couleur d'arrière-plan du bouton d'action de danger lors du pointage
--color-danger-actions-border dangerActionsBorder Couleur de la frontière du bouton d'action de danger
--color-danger-actions-text dangerActionsText Couleur du texte du bouton d'action de danger
--color-danger-actions-text-focus dangerActionsTextFocus Couleur du texte du bouton d'action de danger lors de la mise au point
--color-danger-actions-text-hover dangerActionsTextHover Couleur du texte du bouton d'action de danger lors du survol
--color-danger-form-actions-background dangerFormActionsBackground Couleur d'arrière-plan des actions de danger dans les messages Table, Form, Table-Form et Edit-Form
--color-danger-form-actions-background-focus dangerFormActionsBackgroundFocus Couleur d'arrière-plan des actions de danger sur le focus dans les messages Table, Form, Table-Form et Edit-Form
--color-danger-form-actions-background-hover dangerFormActionsBackgroundHover Couleur d'arrière-plan des actions de danger lors du survol des messages Table, Form, Table-Form et Edit-Form
--color-danger-form-actions-border dangerFormActionsBorder Couleur de bordure des actions de danger dans les messages Table, Form, Table-Form et Edit-Form
--color-danger-form-actions-text dangerFormActionsText Couleur de texte des actions de danger dans les messages Table, Form, Table-Form et Edit-Form
--color-danger-form-actions-text-focus dangerFormActionsTextFocus Couleur de texte des actions de danger sur le focus dans les messages Table, Form, Table-Form et Edit-Form
--color-danger-form-actions-text-hover dangerFormActionsTextHover Couleur de texte des actions de danger lors du survol des messages Table, Form, Table-Form et Edit-Form
--color-error-border errorBorder Couleur de bordure d'une bulle de message d'erreur. La couleur est utilisée comme couleur de bordure du message d'erreur au niveau du formulaire qui est affiché dans les messages Edit-Form.
--color-error-message-background errorMessageBackground Couleur d'arrière-plan d'une bulle de message d'erreur. La couleur est utilisée comme couleur d'arrière-plan du message d'erreur au niveau du formulaire qui est affiché dans les messages Edit-Form.
--color-error-title errorTitle Couleur du titre du contenu du message d'erreur. La couleur est utilisée comme couleur de texte d'erreur du message d'erreur au niveau du formulaire qui est affiché dans les messages Edit-Form.
--color-footer-background footerBackground Couleur utilisée pour l'arrière-plan du pied de page.
--color-footer-button-fill footerButtonFill Couleur de remplissage d'une icône SVG utilisée dans les boutons situés dans le pied de page du clavardage.
--color-form-actions-background formActionsBackground Couleur d'arrière-plan des actions de formulaire
--color-form-actions-background-focus formActionsBackgroundFocus Couleur d'arrière-plan des actions de formulaire sur le focus
--color-form-actions-background-hover formActionsBackgroundHover Couleur d'arrière-plan des actions de formulaire lors du survol
--color-form-actions-border formActionsBorder Couleur de bordure des actions de formulaire
--color-form-actions-text formActionsText Couleur de texte des actions de formulaire
--color-form-actions-text-focus formActionsTextFocus Couleur de texte des actions de formulaire sur le focus
--color-form-actions-text-hover formActionsTextHover Couleur de texte des actions de formulaire lors du survol
--color-form-background formBackground La couleur de fond des formes
--color-form-error formError Couleur de remplissage SVG de l'icône dans les messages d'erreur au niveau du champ et du formulaire qui s'affichent dans les messages Edit-Form. La couleur est utilisée comme couleur de bordure du champ d'entrée en cas d'erreur dans les messages Edit-Form.
--color-form-error-text formErrorText Couleur de texte d'un message d'erreur au niveau du champ affiché dans les messages Modifier le formulaire
--color-form-header-background formHeaderBackground Couleur d'arrière-plan des titres de formulaire
--color-form-header-text formHeaderText Couleur de texte des titres de formulaire
--color-form-input-background formInputBackground Couleur d'arrière-plan des champs d'entrée dans les messages Edit-Form
--color-form-input-border formInputBorder Couleur de bordure des champs d'entrée dans les messages Modifier le formulaire
--color-form-input-border-focus formInputBorderFocus Couleur de bordure des champs d'entrée sur le focus dans les messages de modification de formulaire
--color-form-input-text formInputText Couleur de texte des champs d'entrée dans les messages Edit-Form
--color-form-label formLabel Couleur des étiquettes de formulaire
--color-form-text formText Couleur de texte des formulaires
--color-global-actions-background globalActionsBackground Couleur d'arrière-plan des boutons d'action globaux
--color-global-actions-background-focus globalActionsBackgroundFocus Couleur d'arrière-plan des boutons d'action globaux lorsqu'ils sont actifs.
--color-global-actions-background-hover globalActionsBackgroundHover Couleur d'arrière-plan de pointage des boutons d'action globaux.
--color-global-actions-border globalActionsBorder Couleur de la bordure des boutons d'action globaux
--color-global-actions-text globalActionsText Couleur du texte des boutons d'action globaux
--color-global-actions-text-focus globalActionsTextFocus Couleur du texte des boutons d'action globaux lorsqu'ils sont actifs.
--color-global-actions-text-hover globalActionsTextHover Couleur du texte des boutons d'action globaux lorsque les utilisateurs pointent dessus.
--color-header-background headerBackground Couleur d'arrière-plan de l'en-tête du widget de clavardage
--color-header-button-fill headerButtonFill Couleur de remplissage des icônes SVG utilisées pour les boutons de l'en-tête du clavardage.
--color-header-text headerText Couleur du titre de l'en-tête du clavardage
--color-input-background inputBackground Couleur d'arrière-plan du champ d'entrée de message dans le pied de page du clavardage
--color-input-text inputText Couleur du texte d'entrée de message dans le pied de page du clavardage
--color-links links Couleur des liens intégrés dans les messages de compétence
--color-error-border S.O. Couleur de bordure d'une bulle de message d'erreur
--color-error-message-background S.O. Couleur d'arrière-plan d'une bulle de message d'erreur
--color-error-text S.O. Couleur de description du contenu d'un message d'erreur
--color-error-title S.O. Couleur de titre du contenu d'un message d'erreur
--color-footer-button-background-hover S.O. Couleur d'arrière-plan du pointage des boutons de pied de page
--color-footer-button-fill-hover S.O. Couleur de remplissage du pied de page de l'en-tête lors du survol
--color-header-button-background-hover S.O. Couleur d'arrière-plan du pointage des boutons d'en-tête
--color-header-button-fill-hover S.O. Couleur de remplissage des boutons d'en-tête sur le pointage
--color-input-border S.O. Couleur de bordure du champ d'entrée
--color-user-links S.O. Couleur des liens intégrés dans les messages d'utilisateur.
--color-popup-background S.O. Couleur d'arrière-plan des invites et des fenêtres contextuelles
--color-popup-button-background S.O. Couleur d'arrière-plan des boutons contextuels
--color-popup-button-text S.O. Couleur du texte des boutons contextuels
--color-popup-horizontal-rule S.O. Couleur de règle horizonatale pour le séparateur pour l'action de menu de clavardage multi-langues
--color-popup-item-background-hover S.O. Couleur d'arrière-plan lors du survol des éléments de liste contextuelle
--color-popup-text S.O. Couleur du texte et des icônes des invites et des fenêtres contextuelles
--color-table-background S.O. Couleur d'arrière-plan des tables
--color-table-header-background S.O. Couleur d'arrière-plan des en-têtes de table
--color-table-separator S.O. Couleur de séparateur des rangées de table
--color-table-text S.O. Couleur de texte des tables
--color-notification-badge-background notificationBadgeBackground Couleur d'arrière-plan de la pastille d'avis de message
--color-notification-badge-text notificationBadgeText Couleur du texte du nombre de messages dans la pastille d'avis
--color-primary-actions-background primaryActionsBackground Couleur d'arrière-plan du bouton d'action principal
--color-primary-actions-background-focus primaryActionsBackgroundFocus Couleur d'arrière-plan du bouton d'action principal sur la cible
--color-primary-actions-background-hover primaryActionsBackgroundHover Couleur d'arrière-plan du bouton d'action principal lors du pointage
--color-primary-actions-border primaryActionsBorder Couleur de la frontière du bouton d'action principale
--color-primary-actions-text primaryActionsText Couleur du texte du bouton d'action principal
--color-primary-actions-text-focus primaryActionsTextFocus Couleur du texte du bouton d'action principal lors de la mise au point
--color-primary-actions-text-hover primaryActionsTextHover Couleur du texte du bouton d'action principal lors du pointage
--color-primary-form-actions-background primaryFormActionsBackground Couleur d'arrière-plan des actions principales dans les messages Table, Form, Table-Form et Edit-Form
--color-primary-form-actions-background-focus primaryFormActionsBackgroundFocus Couleur d'arrière-plan des actions principales ciblées dans les messages Table, Form, Table-Form et Edit-Form
--color-primary-form-actions-background-hover primaryFormActionsBackgroundHover Couleur d'arrière-plan des actions principales lors du survol des messages Table, Form, Table-Form et Edit-Form
--color-primary-form-actions-border primaryFormActionsBorder Couleur de bordure des actions principales dans les messages Table, Form, Table-Form et Edit-Form
--color-primary-form-actions-text primaryFormActionsText Couleur de texte des actions principales dans les messages Table, Form, Table-Form et Edit-Form
--color-primary-form-actions-text-focus primaryFormActionsTextFocus Couleur d'arrière-plan des actions principales ciblées dans les messages Table, Form, Table-Form et Edit-Form
--color-primary-form-actions-text-hover primaryFormActionsTextHover Couleur d'arrière-plan des actions principales lors du survol des messages Table, Form, Table-Form et Edit-Form
--color-rating-star ratingStar Couleur appliquée aux étoiles de notation dans un message de rétroaction lorsque les utilisateurs les survolent ou les sélectionnent. Si vous ne spécifiez pas de couleur, la couleur branding est utilisée à la place.
S.O. recognitionViewBackground Couleur d'arrière-plan de la vue où le texte reconnu s'affiche lorsque les utilisateurs activent le mode vocal. Si vous ne définissez pas cette couleur, celle qui est indiquée pour headerBackground est utilisée à la place.
S.O. recognitionViewButtonFill Couleur de remplissage du SVG pour basculer entre les modes voix-texte lorsque les utilisateurs passent en mode vocal.
--color-recognition-view-text recognitionViewText Couleur utilisée pour le texte reconnu à partir de l'entrée vocale de l'utilisateur. Si vous ne définissez pas cette couleur, celle qui est indiquée pour text est utilisée à la place.
S.O. shareMenuText Couleur utilisée pour les éléments du menu de partage. Cette couleur remplace la valeur définie pour la clé de texte, si elle est transmise.
--color-table-actions-background-focus tableActionsBackgroundFocus Couleur d'arrière-plan des actions de table sur le focus
--color-table-actions-text-focus tableActionsTextFocus Couleur de texte des actions de table sur le focus
--color-table-actions-text-hover tableActionsTextHover Couleur de texte des actions de table lors du survol
--color-text text Couleur d texte des messages dans le widget de clavardage.
-color-text-light textLight Couleur du texte secondaire des messages ,par exemple, les descriptions de carte dans le widget de clavardage.
--color-timestamp timestamp Couleur de l'horodatage relatif.
--color-typing-indicator typingIndicator Couleur de remplissage d'arrière-plan utilisée pour l'indicateur de frappe.
S.O. userMessageBackgound Couleur d'arrière-plan de la bulle utilisée pour les messages d'utilisateur.
--color-user-text userText Couleur de texte d'un message envoyé par l'utilisateur.
--color-visualizer visualizer Couleur utilisée pour les barres du graphique de visualisation. Si vous ne définissez pas cette couleur, celle qui est indiquée pour branding est utilisée à la place.
--color-visualizer-container-background visualizerContainerBackground Couleur d'arrière-plan du conteneur du visualiseur vocal qui s'affiche lorsque les utilisateurs passent en mode vocal. Si vous ne définissez pas cette couleur, celle qui est indiquée pour userMessageBackgound est utilisée à la place.
Note

Vous pouvez définir une image pour conversationBackground, headerBackground et footerBackground. Ces champs acceptent tout paramètre pouvant être transmis à la propriété background CSS. Par exemple :
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")'},

Icônes personnalisées

Vous pouvez personnaliser les icônes, y compris celles de la compétence, du logo de clavardage et des avatars de la compétence et de l'utilisateur.

Vous pouvez transmettre l'URL de la ressource d'image associée à ces icônes . Pour certaines icônes, vous pouvez utiliser l'URL ou transmettre une chaîne SVG (Scalable Vector Graphics) . Vous pouvez transmettre les données SVG brutes pour les icônes qui prennent en charge les chaînes SVG. Dans la vue de clavardage, leur rendu s'effectue sous forme de SVG en ligne.

Conseil :

Les chaînes SVG se chargent plus rapidement que les ressources d'image. Elles permettent également d'animer l'image et de modifier sa couleur. La disposition définie pour la propriété theme est appliquée aux chaînes SVG pour les boutons de fichiers joints, d'envoi et de microphone, mais non pour les autres ressources d'image.
À partir de la version 21.10, vous pouvez utiliser la propriété icons pour regrouper toutes les icônes personnalisées dans un seul champ. Les icônes antérieures à la version 21.10 sont toujours prises en charge, mais les valeurs transmises avec l'objet icons ont priorité. Tous les champs de l'objet icons prennent en charge les chemins de ressource d'image et les chaînes SVG brutes.
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>'
    }
};
Property (version 21.10) Propriété (versions précédentes) Description Compatible avec la chaîne SVG?
avatarAgent agentAvatar Pour les compétences intégrant des agents humains, cette icône apparaît avec les messages de ceux-ci. avatarBot (ou agentAvatar) s'affiche si cette propriété n'est pas définie. Oui
avatarbot botIcon Icône qui s'affiche à côté du message de réponse de la compétence. Cette icône de compétence s'affiche uniquement si vous la fournissez. Sinon, aucune icône ne s'affiche. Oui
avatarUser personIcon L'icône qui s'affiche à côté des messages d'utilisateur. Cette icône ne s'affiche pas par défaut; elle s'affiche uniquement si vous la définissez. Oui
clearHistory clearMessageIcon Icône du bouton d'effacement de message situé dans l'en-tête du widget Oui
close S.O. Icône affichée pour le bouton Fermer dans les bannières de message d'erreur, les prévisualisations d'image développées et le widget WebView. Oui
collapse closeIcon Icône du bouton de réduction de la vue de clavardage, situé dans l'en-tête de celle-ci. Oui
download downloadIcon Icône utilisée pour le bouton de téléchargement de fichier joint qui apparaît sur chaque message de fichier joint envoyé par la compétence. download - Oui
error errorIcon URL de l'image utilisée pour l'icône d'erreur.
  • errorIcon - Non
  • error - Oui
Non
expandImage expandImageIcon L'icône utilisée pour l'image développe le contrôle qui apparaît sur chaque message de fichier joint d'image envoyé par la compétence. expandImage - Oui
fileAudio audioIcon Icône de fichier joint audio, affichée lorsque l'URL de la source du fichier joint est inaccessible.
  • audioIcon - Non
  • fileAudio - Oui
fileGeneric fileIcon Icône de fichier joint.
  • fileIcon - Non
  • fileGeneric - Oui
fileImage imageIcon Icône d'image jointe, qui s'affiche lorsque la source du fichier joint est inaccessible.
  • fileImage - Non

    imageIcon - Oui

fileVideo videoIcon Icône de vidéo jointe, qui s'affiche lorsque l'URL de la source du fichier joint est inaccessible.
  • videoIcon - Non
  • fileVideo - Oui
keyboard keyboardIcon Icône de clavier, affichée dans le bouton qui bascule du mode vocal au mode clavier. Oui
launch botButtonIcon Bouton du robot de la compétence, affiché lorsque le widget de clavardage est réduit.
  • botButtonIcon - Non

    launch - Oui

logo logoIcon Icône du logo de clavardage affichée dans l'en-tête du widget de clavardage.
  • logoIcon - Non
  • logo - Oui
mic micIcon Icône du bouton micro dans le pied de page du widget de clavardage qui s'affiche lorsque Oui
rating S.O. Icône affichée pour les boutons d'action de rétroaction dans le composant de notation. Pour une expérience utilisateur optimale pour l'action de survol, transmettez une chaîne d'icône SVG remplie. rating - Oui
send sendIcon Icône du bouton d'envoi de message Oui
shareMenu attachmentIcon Icône de chargement de fichier joint Oui
shareMenuAudio S.O. Icône de l'élément de menu audio dans la fenêtre contextuelle de partage. Oui
shareMenuFile S.O. Icône de l'élément de menu de fichier dans la fenêtre contextuelle de partage. Oui
shareMenuLocation S.O. Icône du bouton de menu de partage dans la fenêtre contextuelle du menu de partage. Oui
shareMenuVisual S.O. Icône de l'élément de menu image/vidéo dans la fenêtre contextuelle du menu de partage Oui
ttsOff audioResponseOffIcon Icône du bouton d'activation/désactivation lorsque les réponses audio sont désactivées. Oui
ttsOn audioResponseOnIcon Icône du bouton d'activation/désactivation lorsque les réponses audio sont activées. Oui
typingIndicator chatBubbleIcon Icône animée dans le volet de conversation qui indique une réponse envoyée par la compétence. Oui
Vous pouvez également redimensionner l'icône de la bulle de chargement du clavardage (activée à l'aide de chatBubbleIcon).
Nom de la propriété Description Obligatoire? Valeur par défaut
chatBubbleIconHeight Hauteur de l'icône de la bulle de chargement du clavardage. Non 42px
chatBubbleIconWidth Largeur de l'icône de la bulle de chargement du clavardage. Non 56px

Chaînes personnalisées

Vous pouvez personnaliser les chaînes suivantes et les fournir en tant que texte localisé. Comme le montre l'objet suivant, la localisation requiert que vous fournissiez des paramètres régionaux valides pour chaque entrée. Vous devez mettre à jour toutes les clés des paramètres régionaux autres que en-us. Si vous ne le faites pas, les traductions en-us sont affichées pour les valeurs manquantes.
"i18n": {
    "fr": {
        "chatTitle": "Soutien"
    },
    "en-us": {
        "chatTitle": "Support"
    },
    "es": {
        "chatTitle": "Apoyo"
    },
    "zh-cn": {
        "chatTitle": "支持"
    }
}
Si des chaînes personnalisées sont fournies pour des paramètres régionaux autres que en, toutes les clés doivent être spécifiées pour ces paramètres régionaux. Sinon, les traductions en sont affichées pour les valeurs manquantes.
<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';
    }
Clé Description Valeur par défaut
agent Texte utilisé pour l'agent 'Agent'
agentMessage Indicateur de message de compétence pour les lecteurs d'écran. Il est énoncé par les lecteurs d'écran avant les réponses de la compétence. Le texte (`{0}`) est remplacé par le nom de l'agent. `'{0} says'`
attachment_audio Texte utilisé pour l'énoncé TTS d'un fichier joint audio. 'Audio attachment'
attachment_file Texte utilisé pour l'énoncé TTS d'un fichier joint. 'File attachment'
attachment_image Texte utilisé pour l'énoncé TTS d'un fichier joint d'image. 'Image attachment'
attachment_video Texte utilisé pour l'énoncé TTS d'un fichier joint de vidéo. 'Video attachment'
attachmentAudioFallback Message de remplacement qui est affiché si l'audio d'un fichier joint ne peut pas être rendu par le client. Le texte entre {0} et {/0} est réglé à un lien permettant de télécharger le fichier. Your browser does not support embedded audio. However you can {0}download it{/0}.
attachmentVideoFallback Message de remplacement qui est affiché si la vidéo d'un fichier joint ne peut pas être rendue par le client. Le texte entre {0} et {/0} est réglé à un lien permettant de télécharger le fichier. Your browser does not support embedded video. However you can {0}download it{/0}.
audioResponseOn Infobulle qui s'affiche lorsque l'utilisateur positionne le pointeur de la souris sur le bouton "off" (désactivé) d'un énoncé audio dans l'en-tête. Turn audio response on
avatarAgent Texte de remplacement utilisé pour l'icône d'agent qui s'affiche à côté des messages d'agent. Agent icon
avatarBot Texte de remplacement utilisé pour l'icône de compétence affichée à côté des messages de compétence. Bot icon
avatarUser Texte de remplacement utilisé pour l'icône d'utilisateur affichée à côté des messages d'utilisateur. User icon
card Identificateur de la carte. 'Card {0}'. Vous pouvez localiser la chaîne en plaçant le paramètre fictif ordinal ({0}) avant ou après le mot. Nous continuerons à prendre en charge la chaîne 'Card' utilisée dans les versions précédentes qui n'inclut pas le paramètre fictif ordinal. Pour cette chaîne, l'ordinal est placé après le mot. Si vous voulez mettre en sourdine l'énoncé, transmettez une chaîne vide (card: '').
cardImagePlaceholder Texte fictif qui s'affiche pendant que l'image de carte est extraite et chargée. Loading image
cardImagePlaceholder Texte fictif qui s'affiche pendant que l'image de carte est extraite et chargée. Loading image
cardNavNext Étiquette du bouton de navigation de carte pour afficher la carte suivante dans une disposition horizontale. Next card
cardNavPrevious Étiquette du bouton de navigation de carte pour afficher la carte précédente dans une disposition horizontale. Previous card
chatSubtitle Définit le sous-titre de la vue de clavardage, qui est affiché sous le titre dans l'en-tête de la vue de clavardage. Si l'indicateur de sous-titre est défini et que l'un et/ou l'autre des indicateurs showConnectionStatus et showTypingIndicator sont réglés à true, le sous-titre s'affiche au lieu du statut de connexion ou de l'indicateur de saisie. S.O.
chatTitle Titre du widget de clavardage affiché dans l'en-tête. Ask
clear Infobulle qui s'affiche lorsque l'utilisateur positionne le pointeur de la souris sur le bouton d'effacement de message dans l'en-tête. Clear
close Infobulle qui s'affiche lorsque l'utilisateur positionne le pointeur de la souris sur le bouton de fermeture du widget dans l'en-tête. Close
closing Texte de statut qui s'affiche lors de la fermeture de la connexion entre le widget de clavardage et le serveur. Closing
connected Texte de statut qui s'affiche lors de l'établissement de la connexion entre le widget de clavardage et le serveur. Connected
connecting Texte de statut qui s'affiche lorsque le widget de clavardage se connecte au serveur de clavardage. Connecting
connectionFailureMessage Message d'échec qui s'affiche lorsque le widget ne peut pas se connecter à la compétence. Sorry, the assistant is unavailable right now. If the issue persists, contact your help desk.
connectionRetryLabel Étiquette du bouton de nouvelle tentative de connexion. Try Again
defaultGreetingMessage Réponse d'accueil du client par défaut affichée lorsque la réponse de la compétence n'a pas été reçue dans le nombre de secondes défini par defaultGreetingTimeout.. Hey, Nice to meet you! Allow me a moment to get back to you.
defaultSorryMessage Réponse du client par défaut lorsque la réponse de la compétence n'a pas été reçue, le nombre de secondes défini par typingIndicatorTimeout. Unfortunately, I am not able to get you the right content. Please try again.
defaultWaitMessage Réponse par défaut qui s'affiche à l'intervalle lorsqu'une réponse réelle à la compétence n'a pas été reçue. Cet intervalle est défini, en secondes, par defaultWaitMessageInterval I'm still working on your request. Thank you for your patience!
disconnected Texte de statut qui s'affiche lorsque la connexion entre le widget et le serveur de clavardage est fermée. Disconnected
download Texte d'accessibilité pour le bouton de téléchargement qui apparaît sur chaque message de fichier joint envoyé par la compétence. Download
endConversation Infobulle qui s'affiche lorsque vous pointez le curseur de la souris sur le bouton d'en-tête de fin de conversation. End Conversation
endConversationConfirmMessage Message de confirmation qui s'affiche lorsqu'un utilisateur clique sur le bouton de fin de conversation. Are you sure you want to end the conversation?
endConversationDescription Message de description qui s'affiche avec le message de confirmation dans l'invite de fin de conversation. This will also clear your conversation history.
errorSpeechInvalidUrl Message d'erreur affiché lorsque l'URL du serveur vocal n'est pas définie. ODA URL for connection is not set. Please pass 'URI' parameter during SDK initialization.
errorSpeechMultipleConnection Message d'erreur affiché lorsque plusieurs tentatives de connexion vocale sont effectuées dans un court intervalle. Another voice recognition is ongoing. Can't start a new one.'
errorSpeechTooMuchTimeout Message d'erreur affiché lorsqu'un utilisateur fournit un message vocal trop long pour être reconnu. Too much voice input to recognize. Can not generate recognized text.
errorSpeechUnsupportedLocale Message d'erreur affiché lors d'une tentative d'enregistrement si un paramètre régional non pris en charge a été configuré pour la reconnaissance vocale. The set speech locale is not supported. Cannot start recording.
imageViewerClose Texte d'accessibilité du bouton qui ferme l'image développée. Close image viewer
imageViewOpen Texte d'accessibilité du bouton qui développe l'image. Open image viewer
inputPlaceholder Texte fictif qui s'affiche dans le champ d'entrée d'utilisateur. Type a message
itemIterator Identificateur d'élément dans une liste d'éléments d'un message Table, Form ou Table-Form. Le texte ({0}) est remplacé par l'index de l'élément. Item {0}
language_<languageTag> Étiquette de la langue représentée par languageTag. Par exemple, English pour en dans la liste déroulante de sélection de langue disponible lorsque vous configurez le clavardage multilingue. | Language Label
language_detect Étiquette de l'option de détection automatique dans le menu déroulant de sélection de langue. Detect Language
languageSelectDropdown Infobulle qui s'affiche lorsque les utilisateurs positionnent le pointeur de la souris sur le bouton de sélection de la langue dans l'en-tête. Select chat language
linkField Texte d'énoncé de remplacement pour un champ de lien dans un message Table, Form ou Table-Form. Le paramètre fictif ({0}) est remplacé par le linkLabel du champ. Click on the highlighted text to open Link for {0}
noSpeechTimeout Texte de statut affiché lorsque le serveur de clavardage ne parvient pas à reconnaître la voix. Could not detect the voice, no message sent.
noText Étiquette du bouton de confirmation Non. No
openMap Étiquette du bouton d'action servant à ouvrir une carte d'emplacements. Open Map
previousChats Texte de statut qui s'affiche à la fin des anciens messages. Previous conversations
ratingStar Texte de l'infobulle affiché pour chaque étoile de notation dans un message de rétroaction. Le paramètre fictif `{0}` est remplacé par le nombre d'étoiles que l'utilisateur a sélectionné. Rate {0} star
recognitionTextPlaceholder Lorsque le mode vocal est activé, il s'agit du texte de paramètre fictif affiché dans le champ de texte de reconnaissance. Speak your message
relTimeDay Horodatage relatif qui s'affiche chaque jour depuis la réception du message précédent. {0} est remplacé par le nombre de jours écoulés. {0}d ago
relTimeHr Horodatage relatif qui s'affiche toutes les heures pendant les 24 premières heures suivant la réception du message précédent. {0} est remplacé par le nombre d'heures écoulées. {0}hr ago
relTimeMin Horodatage relatif qui s'affiche chaque minute depuis la réception du dernier message. {0} est remplacé par le nombre de minutes écoulées. {0}min ago
relTimeMoment Horodatage relatif qui s'affiche dix secondes après la réception du message et avant que 60 secondes ne se soient écoulées depuis la réception du dernier message. A few seconds ago
relTimeMon Horodatage relatif qui s'affiche chaque mois depuis la réception du message précédent. {0} est remplacé par le nombre de mois écoulés. {0}mth ago
relTimeNow Horodatage relatif qui s'affiche pour un nouveau message. Now
relTimeYr Horodatage relatif qui s'affiche chaque année après la réception du message précédent. {0} est remplacé par le nombre d'années écoulées. {0}yr ago
requestLocation Texte affiché pendant la demande de l'emplacement de l'utilisateur. Requesting location
requestLocationDeniedPermission Message d'erreur affiché lorsque l'autorisation d'accéder à un emplacement est refusée. Location permission denied. Please allow access to share your location, or else type in your location.
requestLocationDeniedTimeout Message d'erreur affiché lorsque la demande d'emplacement n'est pas résolue en raison d'une temporisation. Taking too long to get your current location. Please try again, or else type in your location.
requestLocationDeniedUnavailable Message d'erreur affiché lorsque la demande d'emplacement est refusée, car l'emplacement courant de l'appareil client n'est pas disponible. Your current location is unavailable. Please try again, or else type in your location.
requestLocationString Texte d'erreur qui s'affiche lorsque l'utilisateur refuse la demande d'emplacement. Cannot access your location. Please allow access to proceed further.
retryMessage Texte qui s'affiche lorsque le message de l'utilisateur n'a pas été envoyé au serveur. Try again
send Infobulle qui s'affiche lorsque l'utilisateur positionne le pointeur de la souris sur le bouton d'envoi dans le pied de page. Send
shareAudio Texte de l'élément de menu dans la fenêtre contextuelle de partage d'un fichier audio Share Audio
shareFailureMessage Message d'erreur affiché lorsque le bouton d'action de partage d'un message est sélectionné, mais que l'API de partage n'est pas disponible dans l'appareil client ou que la demande de partage a été rejetée. Sorry, sharing is not available on this device.
shareFile Texte de l'élément de menu dans la fenêtre contextuelle de partage d'un fichier générique Share File
shareLocation Texte de l'élément de menu pour le partage d'un emplacement dans la fenêtre contextuelle Share Location
shareVisual Texte de l'élément de menu dans la fenêtre contextuelle de partage d'un fichier image ou vidéo Share Image/Video
skillMessage Indicateur de message de compétence pour les lecteurs d'écran. Il est énoncé par les lecteurs d'écran avant les réponses de la compétence. Skill says
speak Infobulle qui s'affiche lorsque l'utilisateur positionne le pointeur de la souris sur le bouton Speak (Parler) dans le pied de page. Speak
typingIndicator Texte d'accessibilité pour l'indicateur de saisie. Il est parlé par les lecteurs d'écran. Waiting for response
upload Infobulle qui s'affiche lorsque l'utilisateur positionne le pointeur de la souris sur le bouton de chargement dans le pied de page. Share popup
uploadFailed Texte d'erreur affiché en cas d'échec d'un chargement. Upload Failed.
uploadFileSizeLimitExceeded Texte d'erreur qui s'affiche lorsque la taille du fichier de chargement dépasse la limite. Upload Failed. File size should not be more than 25MB.
uploadFileSizeZeroByte Texte d'erreur qui s'affiche lorsque la taille du fichier de chargement est de 0 octet. Upload Failed. Files of size zero bytes cannot be uploaded.
uploadUnsupportedFileType Texte d'erreur qui s'affiche lors d'une tentative de chargement d'un type de fichier non pris en charge. Upload Failed. Unsupported file type.
userMessage Indicateur de message d'utilisateur pour les lecteurs d'écran. Il est énoncé par les lecteurs d'écran avant les messages d'utilisateur. I say
utteranceGeneric Description du message de réponse de remplacement utilisé dans l'énoncé. Message from skill.
webViewAccessibilityTitle Titre d'accessibilité par défaut pour la vue Web lue à haute voix par les lecteurs d'écran. In-widget WebView to display links
webViewClose Titre label/tooltip par défaut pour le bouton de fermeture de la vue Web. Done
webViewErrorInfoDismiss Infobulle du bouton Ignorer utilisé pour fermer le lien de secours dans la vue Web. 'Dismiss'
webViewErrorInfoText Texte d'information affiché dans la vue Web lorsqu'il n'est pas possible d'y accéder. Le texte entre {0} et {/0} est réglé au lien initial qui s'ouvre dans un nouvel onglet ou une nouvelle fenêtre. Sorry, we can't open this page in the chat window. Click {0}here{/0} to open it in your browser.
yesText Étiquette du bouton de confirmation Oui. Yes
editFieldErrorMessage Message d'erreur au niveau du champ qui s'affiche lorsque la valeur entrée par l'utilisateur n'est pas valide pour ce champ. La trousse SDK utilise par défaut ce message lorsque la compétence ne fournit pas de message d'erreur de client. Field Input is invalid
editFormErrorMessage Message d'erreur au niveau du formulaire affiché sous l'action de soumission du formulaire pour la validation côté client. Ce message s'affiche lorsqu'au moins un des champs n'est pas valide et qu'il y a plusieurs champs. La trousse SDK utilise par défaut ce message lorsque la compétence ne fournit pas de message d'erreur dans les données utiles du message. Some of the fields need your attention.
noResultText Texte de statut affiché lorsqu'il n'y a aucune correspondance à partir d'une recherche d'utilisateur dans une vue de liste à sélections multiples. No more results

Configurer les options du menu de partage

Par défaut, le menu de partage affiche des options pour les types de fichier suivants :
  • fichiers multimédias visuels (images et vidéos)
  • fichiers audio
  • fichiers généraux tels que documents, PDF et feuilles de calcul
  • emplacement


Le paramètre shareMenuItems vous permet de limiter les éléments qui s'affichent dans le menu de partage. Le paramètre accepte un tableau de chaînes comportant des clés mappées aux éléments du menu de partage : 'visual' pour l'élément Share Image/Video (Partager image/vidéo), 'audio' pour l'élément Share Audio (Partager audio), 'file' pour l'élément Share File (Partager le fichier) et 'location' pour l'élément Share Location (Partager l'emplacement). Vous pouvez utiliser ces clés, non sensibles à la casse, pour spécifier les éléments disponibles dans le menu (['visual', 'location'], par exemple). Tous les éléments du menu sont disponibles lorsque le tableau est vide ou lorsqu'une valeur non valide est transmise.
Note

Vous pouvez désactiver la fonctionnalité Fichier joint en réglant enableAttachment à false.


L'utilisation fréquente de la fonctionnalité Fichier joint nécessite la mise à jour de la politique de sécurité de réseau du site hôte. Les fichiers joints, qui sont chargés dans le stockage d'objets d'Oracle Digitial Assistant à l'aide d'appels HTTP, peuvent être bloqués par les politiques CORS du site. Si le site bloque les chargements, une erreur peut s'afficher dans la console du navigateur indiquant que le client a empêché la demande en raison d'une politique CORS. Pour résoudre ces problèmes, la politique de sécurité du réseau du site hôte doit être mise à jour afin d'autoriser le domaine Oracle Digital Assistant. Les demandes de chargement peuvent ainsi passer. Étant donné que la politique CORS ne s'applique pas à WebSockets, ces restrictions n'affectent pas les conversations entre la trousse SDK et les compétences.
Note

: N'activez pas ce paramètre si la compétence se connecte à une instance ODA de version 20.08 ou s'exécute sur une version antérieure à 20.08. Cette propriété ne s'applique qu'aux connexions à authentification de client activée aux versions 20.12 et supérieures de la plate-forme ODA.

Éléments du menu de partage personnalisé

Vous pouvez personnaliser un élément du menu de partage pour afficher des types de fichier spécifiques. Pour créer ce menu personnalisé, transmettez chaque élément de menu comme objet du tableau 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)
}
L'élément de menu peut être transmis avec ou sans la catégorie string.

Conseil :

Pour prendre en charge les étiquettes dans plusieurs langues, nous recommandons d'utiliser i18n au lieu de la balise label.
L'extrait de code suivant illustre comment transmettre le tableau shareMenuItems dans la variable settings. Vous définissez les étiquettes en les transmettant avec des clés share_, qui sont également illustrées dans cet extrait. Vous pouvez définir l'étiquette d'un caractère générique (*) à l'aide de la clé i18n share_all.
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'
        }
    }
}

Personnaliser les classes CSS

Vous pouvez remplacer les classes CSS du widget par des règles de style personnalisées pour adapter l'aspect et la convivialité du widget.
Classe Composant
oda-chat-launch-button Bouton de lancement du widget de clavardage
oda-chat-button-clear Bouton d'effacement des messages
oda-chat-button-close Bouton de fermeture du widget
oda-chat-button-narration Bouton d'activation/désactivation de la réponse audio de la compétence
oda-chat-button-send Bouton d'envoi de message
oda-chat-button-upload Bouton de chargement de fichier
oda-chat-card Message avec carte
oda-chat-closing Appliquée en tant que classe apparentée à oda-chat-connection-status lorsque le widget se déconnecte du serveur
oda-chat-connected Appliquée en tant que classe apparentée à oda-chat-connection-status lorsque le widget est connecté au serveur
oda-chat-connecting Appliquée en tant que classe apparentée à oda-chat-connection-status lorsque le widget se connecte au serveur
oda-chat-connection-status Statut de connexion. Chaque valeur de connexion possède également sa propre classe, par exemple oda-chat-connected, oda-chat-disconnected ou oda-chat-connecting.
oda-chat-conversation Conteneur de la conversation
oda-chat-disconnected Appliquée en tant que classe apparentée à oda-chat-connection-status lorsque le widget est déconnecté du serveur
oda-chat-footer Pied de page du widget de clavardage
oda-chat-footer-button Classe commune pour tous les boutons de pied de page
oda-chat-header En-tête du widget de clavardage
oda-chat-header-button Classe commune pour tous les boutons d'en-tête
oda-chat-icon-wrapper Encapsuleur de la compétence ou d'une personne affichée avec le message
oda-chat-left Encapsuleur du message de la compétence
oda-chat-logo Logo affiché dans l'en-tête du widget
oda-chat-message Classe d'encapsuleur commune pour tous les messages de clavardage
oda-chat-message-action-location Bouton d'action de demande d'emplacement
oda-chat-message-action-postback Bouton d'action de republication
oda-chat-message-actions Encapsuleur des boutons d'action
oda-chat-message-bubble Bulle du message
oda-chat-message-global-actions Encapsuleur des boutons d'action globaux
oda-chat-message-icon Image de la compétence ou d'une personne affichée avec le message
oda-chat-notification-badge Pastille d'avis pour les messages qui n'ont pas été consultés
oda-chat-rating-star Bouton étoile de notation dans un message de rétroaction
oda-chat-rating-star-icon Icône SVG du bouton d'étoile d'évaluation
oda-chat-right Encapsuleur du message de l'utilisateur
oda-chat-title Titre de l'en-tête du widget
oda-chat-user-input Zone de texte d'entrée d'utilisateur
oda-chat-widget Composant de clavardage développé qui encapsule l'en-tête, la conversation et le pied de page du widget
oda-chat-wrapper Encapsuleur du composant de clavardage

Personnaliser l'heure

Par défaut, l'horodatage qui s'affiche dans l'en-tête lorsque timestampHeaderMode et timestampHeaderFormat sont définis affiche le format en tant que jour de la semaine, du mois, de la date, de l'année et de l'heure des paramètres régionaux (am et pm). Par exemple, Thursday, August 13, 2020, 9:52:22 AM (jeudi 13 août 2020). Vous pouvez configurer cet horodatage en transmettant des options de formatage dans le paramètre timestampFormat. Vous pouvez configurer l'horodatage en transmettant une chaîne de modèle de formatage de jetons, ou en transmettant un objet contenant des options Intl.DateTimeFormat.

Formater la date et l'heure à l'aide de chaînes de modèle

Les chaînes de modèle utilisées pour formater l'horodatage sont constituées de jetons de format. Par exemple, timestampFormat: 'hh:mm:ss a' règle l'horodatage sous la forme 09:30:14 pm.
Note

Ces jetons sont sensibles à la casse. Par exemple, indiquer yyyy au lieu de YYYY empêcherait l'affichage de l'année.
Composant Jeton Sortie
Jour du mois
  • D
  • Do
  • DD
  • 1 2 ... 30 31
  • 1st 2nd ... 30th 31st
  • 1 2 ... 30 31
Jour de la semaine
  • d
  • dd
  • dddd
  • 0 1 ... 5 6
  • Sun Mon ... Fri Sat
  • Dimanche Lundi ... Vendredi samedi
Mois
  • M
  • MM
  • MMM
  • MMMM
  • 1 2 ... 11 12
  • 1 2 ... 11 12
  • Jan Feb ... Nov Dec
  • January February ... Novembre Décembre
Année
  • YY
  • YYYY
  • 70 71 ... 29 30
  • 1,970 1,971 ... 2,029 2,030
Heure
  • H
  • HH
  • h
  • hh
  • 0 1 ... 22 23
  • 0 1 ... 22 23
  • 1 2 ... 11 12
  • 1 2 ... 11 12
Minute
  • m
  • mm
  • 0 1 ... 58 59
  • 0 1 ... 58 59
Seconde
  • s
  • ss
  • 0 1 ... 58 59
  • 0 1 ... 58 59
Fraction de seconde
  • S
  • SS
  • SSS
  • 0 1 ... 8 9
  • 0 1 ... 98 99
  • 0 1 ... 998 999
AM/PM
  • A
  • a
  • AM PM
  • am pm
Fuseau horaire
  • Z
  • ZZ
  • -7:0 -6:0 ... +6:0 +7:0
  • -0700 -0600 ... +0600 +0700li

Formater l'horodatage avec des objets Intl.DateTimeFormat

L'horodatage peut également être formaté à l'aide des options définies pour l'objet Intl.DateTimeFormat. Les propriétés transmises avec l'objet sont les suivantes :
Propriété Valeurs
dateStyle 'full' | 'long' | 'medium' | 'short'
timeStyle 'full' | 'long' | 'medium' | 'short'
weekday
  • 'long' (par exemple, Thursday)
  • 'short' (par exemple, Thu)
  • 'narrow' (par exemple, T)
day
  • 'numeric'
  • '2-digit'
month
  • 'numeric' (par exemple, 2)
  • '2-digit' (par exemple, 02)
  • 'long' (par exemple, March)
  • 'short' (par exemple, Mar)
  • 'narrow' (par exemple, M)
year
  • 'numeric'
  • '2-digit'
era
  • 'long' (par exemple, Anno Domini)
  • 'short' (par exemple, AD)
  • 'narrow' (par exemple, A)
hour
  • 'numeric'
  • '2-digit'
minute
  • 'numeric'
  • '2-digit'
second
  • 'numeric'
  • '2-digit'
timeZoneName
  • 'long' (par exemple, British Summer Time)
  • 'short' (par exemple, GMT+1)
timeZone Fuseau horaire. Toutes les mises en oeuvre doivent reconnaître UTC. La valeur par défaut est le fuseau horaire par défaut de l'exécution. Les mises en oeuvre peuvent également reconnaître le nom des fuseaux horaires de la base de données IANA; par exemple, Asia/Shanghai, Asia/Kolkata, America/New_York.
hour12 Utilisation du système horaire sur 12 heures (ou sur 24 heures). Les valeurs sont true et false.

Personnaliser la jauge de notation des messages de rétroaction

Le message du composant de rétroaction vous permet de recueillir les commentaires des utilisateurs. Si vous utilisez la trousse SDK 21.10, la présentation par défaut du composant de rétroaction est un système de notation en étoile, une rangée horizontale d'étoiles qui sont mises en surbrillance lorsque les utilisateurs survolent et les sélectionnent. Vous pouvez modifier le comportement du composant à l'aide du composant Rétroaction de l'utilisateur, mais vous pouvez personnaliser l'apparence des composants à l'aide des paramètres de la trousse SDK.

Vous pouvez modifier l'icône des boutons de sélection de notation du composant en transmettant l'icône de votre choix en définissant l'icône rating dans le champ icons.

Conseil :

Pour une meilleure expérience utilisateur, utilisez une chaîne SVG solide sans couleur de remplissage, car elle permet une mise en surbrillance reconnaissable sur le pointage.
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
    }
})
La couleur de l'icône dans les deux états, non sélectionnée et pointée/sélectionnée, peut être configurée avec les champs de couleur ratingStar et ratingStarFill dans les paramètres de couleurs respectivement.
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'
    }
})

Conseil :

Vous pouvez personnaliser les invites sorties par le composant User Feedback (Rétroaction d'utilisateur) en modifiant les ensembles de ressources liés à la rétroaction accessibles au moyen de la page Resource Bundle Configuration (Configuration de l'ensemble de ressources) ou en modifiant les clés systemComponent_Feedback_ dans un fichier CSV d'ensemble de ressources exporté.

Envoyer le message initial lorsque l'historique de conversation est vide

Les messages initUserHiddenMessage sont envoyés indépendamment de l'historique de conversation de l'utilisateur; ils sont envoyés la première fois que le widget de clavardage est ouvert pour chaque session. Pour envoyer le message initial lorsque l'historique de conversation est vide, vous devez lier un module d'écoute d'événement à la méthode Bots.on(). Par exemple :
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();

Injection du service de synthèse de la parole

En utilisant le service text-to-speech natif de l'appareil, la synthèse text-to-speech (TTS) de la trousse SDK utilise le service de l'appareil pour permettre aux réponses de la compétence d'être exprimées dès qu'elles sont reçues par l'instance Web SDK. C'est l'approche prête à l'emploi, et bien qu'elle soit fiable, elle présente quelques inconvénients :
  • Vous êtes souvent limité à des voix anormales et génériques qui peuvent miner votre image de marque.
  • L'appareil d'un utilisateur peut ne pas prendre en charge les voix spécifiques au genre.
  • Certains frameworks natifs (Cordova et ReactNative parmi eux) nécessitent des bibliothèques tierces pour les services TTS car leurs vues Web n'exposent pas les API de synthèse vocale natives requises par le SDK Web.
Pour relever ces défis, vous pouvez définir la voix utilisée pour les réponses de la compétence en injectant un service TTS dans l'instance de trousse SDK en lançant la trousse SDK avec l'indicateur Fonction ttService ou en appelant la méthode setTTSService (décrite dans la documentation qui accompagne la trousse SDK). Vous pouvez utiliser un service fourni par Oracle, comme le service de reconnaissance de la parole pour Oracle Cloud Infrastructure (OCI), ou un service fourni par une tierce partie.

Du texte à la parole

  • Indicateur de fonction : enableBotAudioResponse: true (La valeur par défaut est false.)
  • Service TTS par défaut : WebSDK.TTS.oracle
  • Configuration de fonction : ttsVoice

Vous pouvez enrichir l'expérience conversationnelle en permettant à la parole textuelle (TTS) de parler les réponses au fur et à mesure qu'elles atteignent le SDK. La trousse SDK fournit deux types de service TTS prêts à l'emploi : WebSDK.TTS.platform et WebSDK.TTS.oracle. Par défaut, la trousse SDK utilise le service de reconnaissance de la parole pour Oracle Cloud Infrastructure (OCI) pour obtenir des réponses plus réalistes. Ce service offre une expérience de marque facile car il offre plusieurs voix. Toutefois, vous pouvez utiliser le service TTS dépendant de la plate-forme, WebSDK.TTS.platform, basé sur l'API Web Speech. Il utilise les API de synthèse vocale sur l'appareil de l'utilisateur pour parler les réponses.

Vous utilisez le tableau ttsVoice pour configurer la voix pour le TTS. Chaque élément du tableau doit être un objet comportant au moins un champ lang ou name. La trousse SDK recherche la disponibilité de chaque voix dans l'ordre dans lequel elles sont transmises dans le paramètre. Le premier match complet est défini comme la voix. Si aucune correspondance exacte n'est trouvée, la trousse SDK utilise la première correspondance en fonction de la valeur lang uniquement. S'il n'y a toujours pas de correspondance, la trousse SDK utilise la voix par défaut.
const settings = {
    ...,
    enableBotAudioResponse: true,
    ttsVoice: [{
        lang: 'en-US',
        name: 'Samantha'
    }, {
        lang: 'en-US',
        name: 'Alex'
    }, {
        lang: 'en-UK'
    }]
}
Pour personnaliser la façon dont les énoncés sont parlés, le tableau ttsVoice permet de transmettre les propriétés facultatives pitch, rate et volume dans chaque élément. Ces propriétés correspondent aux mêmes champs dans l'interface SpeechSynthesisUtterance.
  • La propriété pitch peut avoir une valeur comprise entre 0 et 2.
  • La propriété rate peut avoir une valeur comprise entre 0,1 et 10.
  • La propriété volume peut avoir une valeur comprise entre 0 et 1.
Par exemple :
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'
    }]
}

Interface du service de synthèse de la parole

Vous devez mettre en oeuvre l'interface SpeechSynthesisService pour l'instance de service TTS que vous allez injecter.
/**
 * 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;
}
Vous devez mettre en oeuvre ou étendre l'interface SpeechSynthesisServiceVoice pour les voix utilisées dans le service de synthèse 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;
}
Note

L'objet SpeechSynthesisServiceEvent comporte deux événements, TTSPlay et TTSEnd :
const SpeechSynthesisServiceEvent = {
    TTSPlay: 'tts:play',
    TTSEnd: 'tts:end'
}
Une fois que votre service TTS est mappé à un objet qui implémente l'API de synthèse vocale, il peut être transmis à la trousse SDK pour injection du service TTS. Le service peut être injecté lorsque cet objet est transmis au champ ttsService lors de l'initialisation, ou il peut être injecté dynamiquement en transmettant l'objet à la méthode setTTSService(service).

Une fois le service TTS injecté, la trousse SDK traite les appels aux méthodes de service pour l'énoncé des messages. Cependant, vous pouvez appeler ces méthodes directement, ou vous pouvez utiliser les méthodes TTS exposées par le SDK pour n'importe quelle exigence. En mode sans tête, par exemple, vous pouvez appeler la méthode Bots.speakTTS(message) pour transmettre un message tel qu'il est reçu de la compétence. La trousse SDK gère à la fois l'analyse du texte pouvant être énoncé à partir du message et la transmission de ce texte au service TTS afin qu'il puisse être énoncé.