Personnalisation du widget de discussion
Vous pouvez personnaliser différents aspects du widget de discussion, tels que la présentation et les icônes, les couleurs et le texte.
Conseil :
Cet article vous permet de vous familiariser avec les différentes propriétés de personnalisation.Configuration réseau
scripts/settings.js
.
Nom de la propriété | Description | Requis ? | Valeur par défaut |
---|---|---|---|
URI |
URL du serveur de discussion Oracle | Oui | N/A |
channelId |
ID du canal Oracle Web | Oui | N/A |
userId |
Identificateur unique de l'utilisateur. Si vous ne le fournissez pas, Oracle Digital Assistant en génère un. | Non | Valeur générée de façon aléatoire |
clientAuthEnabled |
Détermine si le kit SDK se connecte à un canal sur lequel l'authentification client a été activée. Comme décrit dans Configuration de l'authentification client, définissez cette propriété sur true pour la connexion au canal avec l'authentification activée et l'utilisation du jeton JWT.
|
Oui | false |
Indicateurs de fonctionnalité
- Connexions sécurisées
- les boutons d'action en forme d'ellipse,
- la lecture vocale des réponses de la brique,
- le partage de pièce jointe,
- la désactivation des clics sur les messages précédents (hors cible),
- Compléter automatiquement l'entrée utilisateur
<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 :
A partir de la version 22.08, le schéma de paramètres de configuration du widget de discussion est disponible au format de schéma JSON standard via un réseau CDN (https://static.oracle.com/cdn/oda/22.8.0/settings-schema.json
), qui peut être utilisé pour créer des écrans de configuration dynamique.
Nom de la propriété | Description | Requis ? | Valeur par défaut |
---|---|---|---|
alwaysShowSendButton |
Affiche le bouton d'envoi dans le pied de page de la discussion, même s'il n'y a pas de texte de saisie utilisateur. | Non | false |
defaultGreetingTimeout |
Délai d'expiration par défaut, en secondes, après lequel un message d'accueil par défaut s'affiche. | Non | 5 |
defaultWaitMessageInterval |
Intervalle par défaut, en secondes, affiché par le message d'attente par défaut. | Non | 5 |
disablePastActions |
Désactive les boutons d'action dans un message de brique après qu'un utilisateur a interagi avec une action de postback, d'emplacement ou de soumission de formulaire. Valeurs autorisées : all , none ou postback . Lorsque cette option est définie sur all , tous les boutons d'action du message sont désactivés lors de l'interaction. La définition de postback désactive uniquement les actions de postback et d'emplacement, et la définition de none maintient tous les boutons activés même après une interaction. Le comportement activé par cette propriété ne dépend pas de la configuration au niveau de l'assistant numérique pour désactiver la sélection d'actions antérieures. Vous devez les définir séparément.
|
Non | all |
displayActionsAsPills |
Affiche les boutons d'action en forme d'ellipse. | Non | false |
enableAttachment |
Configure le partage des pièces jointes. | Non | true |
enableAttachmentSecurity |
Lorsque cette propriété est définie sur true , des en-têtes supplémentaires sont transmis aux demandes de téléchargement de pièce jointe afin de faire en sorte qu'elles ne puissent pas être téléchargées sans transmettre un jeton JWT signé valide en tant qu'en-tête d'autorisation.
N'activez pas ce paramètre si la brique se connecte à une instance ODA de version 20.08 ou est exécutée sur une version antérieure à la version 20.08. Cette propriété s'applique uniquement aux connexions avec authentification client à la version 20.12 ou supérieure de la plate-forme ODA. |
Non | false |
enableAutocomplete |
Définissez cette propriété sur true pour permettre à la brique de remplir automatiquement la demande utilisateur à l'aide des demandes utilisateur idéales saisies en tant que suggestions d'écriture automatique sur la page Créer une intention. La brique génère ces suggestions lorsque l'utilisateur saisit trois caractères ou plus. Elle déclenche également les mots dans l'entrée utilisateur qui correspondent aux expressions suggérées en gras.
|
Non | false |
enableBotAudioResponse |
Active la formulation des réponses d'une brique telles 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 discussion. | Non | false |
enableDraggableButton |
Permet aux utilisateurs de sortir le bouton de widget de discussion lorsqu'il bloque le contenu sur la page Web. Cette fonctionnalité s'applique également aux navigateurs Android et iOS Safari. | Non | false |
enableHeadless |
Permet d'utiliser le kit SDK Oracle Web sans son interface utilisateur afin de développer votre propre interface utilisateur de discussion. | Non | false |
enableLocalConversationHistory |
Permet à la conversation précédente associée à un élément userId donné d'être chargée dans le navigateur lorsque le widget a été initialisé.
|
Non | false |
enableLongPolling |
Utilise des demandes HTTP en cas d'échec de la connexion de socket Web. | Non | false |
enableSecureConnection |
Configure la communication sécurisée (https au lieu de http et wss au lieu de ws ).
|
Non | true |
enableSpeech |
Lorsque cette propriété est définie sur true , elle active le microphone pour la reconnaissance vocale. Par exemple :
|
Non | false |
enableSpeechAutoSend |
Lorsque la valeur est définie sur true (par défaut), la réponse vocale de l'utilisateur est automatiquement envoyée au serveur de discussion (et est affichée sous la forme d'un message envoyé dans le widget de discussion). Lorsque la valeur est définie sur 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 discussion. L'utilisateur peut ainsi la modifier avant de l'envoyer manuellement ou la supprimer.
|
Non | true |
focusOnNewMessage |
Définit le focus sur le champ de saisie utilisateur ou sur le premier bouton d'action de message lorsqu'un nouveau message est reçu.
|
Non | input |
multiLangChat |
Permet au widget de discussion de détecter la langue de l'utilisateur et de laisser l'utilisateur sélectionner sa langue préférée dans un menu déroulant de l'en-tête. Vous définissez le menu avec un objet qui établit la langue principale, et un tableau de deux balises de langue ou plus (tableau supportedLangs , décrit dans Discussion multilingue).
|
Non | N/A |
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 discussion lors du chargement de la page. | Non | false |
openLinksInNewWindow |
Remplace la préférence de navigateur de l'utilisateur en ouvrant des 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 basculement pour les pièces jointes et les liens de carte. | Non | false |
showConnectionStatus |
Active l'affichage du statut de connexion dans l'en-tête de widget de discussion. | Non | false |
showPrevConvStatus |
Affiche les messages de statut à la fin des anciens messages des conversations précédentes. | Non | true |
showTypingIndicator |
Affiche une bulle de discussion lorsqu'une réponse est en attente. | Non | true |
Fonctionnalité :
- imiter une conversation lancée par une brique,
- imbriquer du contenu défilant ou fixe (persistant) dans les parties supérieure et inférieure de la fenêtre de discussion,
- Définissez l'environnement local.
- définir le mode de débogage,
- définir l'environnement local et la voix de la synthèse vocale.
Propriété | Description | Requis ? | Valeur par défaut |
---|---|---|---|
customHeaderElementId |
Nomme l'ID de l'élément <div> ajouté à l'en-tête du widget de discussion.
|
Non | N/A |
delegate |
Objet qui définit un délégué pour recevoir les callbacks avant que certains événements ne surviennent dans une conversation. L'objet delegate permet au code d'interagir avec les messages utilisateur et les réponses de brique avant l'envoi des messages et l'affichage des réponses.
|
Non | N/A |
embedBottomScrollId |
ID de l'élément ajouté comme contenu défilant en bas de la discussion. Utilisez cette propriété pour ajouter du contenu personnalisé dans la vue de conversation du widget de discussion. | Non | N/A |
embedBottomStickyId |
ID de l'élément utilisé pour le contenu persistant qui apparaît en bas de la discussion. Utilisez cette propriété pour ajouter du contenu personnalisé dans la vue de conversation du widget de discussion. | Non | N/A |
embedded |
Lorsque vous définissez cette propriété sur true , vous activez le mode imbriqué pour le widget de discussion. En plus de définir cette propriété, vous devez nommer l'élément div qui héberge le widget dans la propriété targetElement .
|
Non | false |
embeddedVideo |
La définition de cette option sur true intègre des liens pour les vidéos YouTube, Daily Motion et Oracle Video Hub afin qu'ils puissent être lus à partir du widget de discussion.
|
Non | false |
embedTopscrollId |
ID de l'élément div ajouté en tant que contenu défilant en haut du widget de discussion.
|
Non | N/A |
embedTopStickyId |
ID de l'élément div utilisé pour le contenu persistant qui apparaît en haut du widget de discussion. Utilisez cette propriété pour ajouter du contenu personnalisé dans la vue de conversation du widget de discussion. Par exemple, l'élément top-text div dans le fragment de code suivant est référencé en tant que embedTopStickyId: 'top-text' :
Le tutoriel de kit SDK Web explique comment configurer cette propriété et définir les options de défilement et de non-défilement pour les éléments du widget de discussion.
|
Non | N/A |
enableAgentSneakPreview |
Envoie le texte saisi par l'utilisateur ainsi que le statut de saisie à l'agent. | Non | false |
enableAutocompleteClientCache |
Active la mise en cache côté client pour réduire le nombre d'appels serveur lorsque la fonction d'écriture automatique est en cours d'utilisation. | Non | false |
enableDefaultClientResponse |
Lorsque la valeur est définie sur true , le client affiche les réponses par défaut lorsque la réponse de la brique a été retardée ou lorsqu'il n'y a aucune réponse de la brique.
|
Non | false |
enableEndConversation |
Permet à l'utilisateur de mettre fin à la conversation et de réinitialiser la session de discussion. Il efface également l'historique local des conversations, se déconnecte du serveur de discussion et réduit 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 discussion 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 manière, 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 physique. | 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 vocal seul élimine la nécessité pour les utilisateurs de cliquer sur le bouton micro à chaque fois qu'ils reçoivent un message de bot. Lorsque ce mode est 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 au point des éléments à l'aide de la touche ALT combinée à la touche de raccourci transmise. | Non | {...} Par exemple :
|
i18n |
Objet contenant des champs d'environnement local. Chaque environnement local gère les paires clé-valeur i18n pour les chaînes de texte utilisées dans le widget.
|
Non | {'en-us':{…}} Par exemple :
|
initBotAudioMuted |
Initialise la variation du message de brique en mode mis en sourdine. Cette fonctionnalité ne peut être activée que lorsque vous définissez enableBotAudioResponse sur true .
|
Non | true |
initMessageOptions |
Même si initUserHiddenMessage n'envoie le message "masqué" initial qu'une fois que le client est connecté à la brique et que le widget de discussion a été développé, vous pouvez utiliser ce paramètre pour envoyer les messages dès que le client est connecté à la brique, que le widget soit développé ou non. Ce paramètre accepte un objet avec une propriété sendAt . La propriété sendAt peut prendre l'une des deux valeurs suivantes : 'init' ou 'expand' . Si vous définissez 'init' , les messages d'initialisation sont envoyés dès que la connexion est établie. Si vous définissez 'expand' , les messages d'initialisation sont envoyés uniquement lorsque le widget est développé. Dans le fragment de code suivant, le message est défini lorsque la connexion est établie en raison de la présence de sendAt: 'init' : Gardez à l'esprit que la facturation commence lorsque le message d'initialisation a été envoyé, même si le widget est toujours fermé (comme avec sendAt: 'init' ).
|
N/A | |
initUserHiddenMessage |
Message utilisé pour lancer une conversation. Il peut s'agir d'une chaîne de texte ou d'une charge utile 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 brique et que le widget de discussion a été développé. Pour envoyer le premier message uniquement lorsque l'historique de conversation est vide, vous devez lier des processus d'écoute d'événement à l'aide de la méthode Bots.on() . Par exemple, vous pouvez effectuer cette opération en liant les événements WIDGET_OPENED et NETWORK , qui sont décrits dans les documents relatifs au kit SDK.
|
Non | N/A |
initUserProfile |
Met à jour le profil utilisateur avant le début d'une conversation. Le format de la charge utile du profil doit être { profile: {...} } . Par exemple : Cette fonction met à jour le contexte utilisateur une fois que le client est connecté à la brique et que le widget de discussion a été développé. Par conséquent, le profil utilisateur peut être reflété dans le premier message de réponse à l'utilisateur. Par exemple, la brique peut accueillir l'utilisateur avec un message tel que "Bienvenue, John Smith ! Votre dernière commande était une pizza moyenne aux pepperoni." Ces messages sont envoyés après que le client s'est connecté à la brique et que le widget de discussion est développé. Ces messages du profil utilisateur sont envoyés après que le client a été connecté à la brique et que le widget de discussion est développé. Un message de profil utilisateur est toujours envoyé avant le message "masqué" initial si initUserHiddenMessage est également transmis.
Vous pouvez uniquement transmettre la propriété |
Non | N/A |
isDebugMode |
Active le mode de débogage. | Non | false |
linkHandler |
Objet qui remplace la configuration pour gérer les clics sur les liens imbriqués dans les réponses de la brique. Cet objet gère les liens de deux manières : target accepte une chaîne et onclick accepte une fonction. Vous pouvez définir target ou onclick , mais pas les deux. Pour que tous les liens soient ouverts dans la vue Web, transmettez linkHandler: { target: 'oda-chat-webview' } .
|
Non |
|
locale |
Environnement local par défaut pour les chaînes de texte du widget. L'environnement local transmis pendant l'initialisation prime par rapport aux environnements locaux du navigateur des utilisateurs. S'il n'existe pas de correspondance exacte, le kit SDK tente de mettre en correspondance la langue la plus proche. Par exemple, si l'environnement local est 'da-dk' , mais que les traductions i18n sont fournies uniquement pour 'da' , la traduction 'da' est utilisée. En l'absence de traductions pour des environnements locaux transmis, des traductions sont recherchées et appliquées pour les environnements locaux du navigateur. En l'absence de traductions, l'environnement local par défaut, 'en' , est utilisé pour les traductions.
|
Non | en-us |
messageCacheSizeLimit |
Nombre maximal de messages pouvant être enregistrés simultanément dans localStorage .
|
Non | 2000 |
reconnectMaxAttempts |
Nombre de tentatives effectuées par le widget de discussion pour se reconnecter lorsque la connexion initiale échoue. | Non | 5 |
shareMenuItems |
Eléments du menu instantané de partage. Cette propriété accepte un tableau avec des valeurs de chaîne mises en correspondance avec les éléments de menu :
['audio', 'file'] , par exemple). Tous les éléments de menu sont disponibles lorsque le tableau est vide, que les éléments du tableau sont incorrects (['audio', 'visuil'] ) ou que shareMenuItems n'a pas été défini.
|
Non |
|
skillVoices |
Tableau contenant les voix préférées utilisées pour la narration des réponses. Chaque élément du tableau doit être un objet avec deux champs : lang et name . Le champ name est facultatif. Le premier élément correspondant à une voix disponible dans le système est utilisé pour la narration. Ce paramètre est obsolète.
|
Non | System language |
speechLocale |
Environnement local attendu des messages vocaux de l'utilisateur et employé pour la reconnaissance vocale. L'environnement local par défaut est Anglais-Etats-Unis ('en-US' ). Les autres environnements locaux pris en charge sont l'anglais australien ('en-au' ), l'anglais britannique ('en-uk' ), le français ('fr-fr' ), l'allemand ('de-de' ), l'italien ('it-it' ), l'indi-hindi (hi-in ), l'indi-anglais (en-in ), le portugais brésilien ('pt-br' ) et l'espagnol ('es-es' ). L'environnement local vocal peut être défini de façon dynamique en appelant l'API setSpeechLocale('<locale>') . La reconnaissance vocale ne fonctionne pas si un environnement local non pris en charge a été transmis.
|
Non | 'en-us' |
storageType |
Mécanisme de stockage Web utilisé afin de stocker l'historique des conversations pour les utilisateurs dont la valeur userId est transmise 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 supprimées automatiquement à la fin de la session de navigateur.
|
Non | 'localStorage' |
targetElement |
Nomme l'élément div où le widget de discussion est imbriqué dans la page Web. L'élément chat-container div dans le fragment de code suivant est référencé en tant que targetElement: 'chat-container' :
Extrayez le tutoriel de kit SDK Web pour savoir comment ajouter l'élément div et le personnaliser.
|
Non | N/A |
theme |
Thème de mise en page principal. Trois thèmes sont disponibles : 'default' , 'redwood-dark' et 'classic' .
|
Non | default |
timestampFormat |
Formate l'horodatage de distribution qui accompagne les messages. Accepte les valeurs d'un objet DateTimeFormat options ou d'une chaîne de modèle comme décrit dans Personnalisation de l'horodatageRemarque : contrôle l'horodatage du message, et non l'horodatage de l'en-tête. . |
Non |
|
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 Personnalisation de l'horodatage.
|
Non | N/A |
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 au 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 de l'horodatage : soit un horodatage absolu qui apparaît sur chaque message, soit un horodatage relatif qui apparaît uniquement sur le dernier message.
Remarque : 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 parler des réponses via la synthèse vocale (TTS). Chaque élément du tableau doit être un objet avec au moins l'un des champs suivants : lang et name . Le premier élément correspondant à une voix disponible dans le système est utilisé pour le TTS.
|
Non | oracle |
typingIndicatorTimeout |
Définit le nombre de secondes au-delà duquel l'indicateur de saisie est automatiquement enlevé si le widget de discussion n'a pas encore reçu la réponse. | Non | 20 |
typingStatusInterval |
Définit l'intervalle, en secondes, pour limiter le statut de saisie envoyé à l'agent physique. | Non | 3 |
webViewConfig |
Personnalise la vue Web dans le widget. | Non | { referrerPolicy: 'no-referrer-when-downgrade', closeButtonType: 'icon', size: 'tall' } |
Boutons Read More et Read Less pour les réponses de compétence multi-paragraphes
Vous pouvez optimiser l'expérience utilisateur pour les messages de brique à plusieurs paragraphes en ajoutant les boutons Lire plus et Lire moins.
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.
- Dans
settings.js
, définissez un objetdelegate
avec une fonction de rappelbeforeDisplay
dans la déclarationconst chatSettings
:
Si le message est de typedelegate: { beforeDisplay: function (message) { var messagePayload = message && message.messagePayload; if (messagePayload.type === 'text') { messagePayload.text = splitParagraph(messagePayload.text); } return message; } }
text
,beforeDisplay
appelle la fonctionsplitParagraph
personnalisée pour fractionner le texte par le premier paragraphe. - Déclarez les variables pour les fonctions de vue
splitParagraph
ettoggleParagraph
personnalisées :var PREFIX_DOTS = 'dots_'; var PREFIX_MORE = 'more_'; var PREFIX_TOGGLE = 'toggle_button';
- Ajoutez l'expression de fonction
splitParagraph
et la fonctiontoggleParagraphView
.splitParagraph
est une IIFE (expression de fonction appelée immédiatement) qui isole la variableglobalIDCounter
de sorte qu'elle ne soit accessible que par la fonctionsplitParagraph
. 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'; } }
- Configurez et (en option) définissez 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 de texte long.- Si vous ne souhaitez pas appliquer de style aux boutons, ajoutez le code suivant :
<style> .more { display: none; } </style>
- Si vous souhaitez définir le style des boutons, vous pouvez effectuer les opérations suivantes :
<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>
- Si vous ne souhaitez pas appliquer de style aux boutons, ajoutez le code suivant :
Mise en page
- définir la position du widget dans la page Web,
- définir les dimensions, les couleurs et le style de police du widget de discussion,
- définir le remplissage des messages dans le widget,
- définir la position de l'icône de badge de notification par rapport au bouton de bot,
- définir la position de début de la conversation dans le widget.
<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 | Requis ? | Valeur par défaut |
---|---|---|---|
actionsLayout |
Définit le sens de mise en page des actions locales. Lorsque vous définissez ce paramètre sur horizontal , ces boutons sont disposés horizontalement et seront renvoyés à la ligne si le contenu déborde.
|
Non | vertical |
badgePosition |
Position de l'icône de badge par rapport au bouton d'icône. | Non | {"top": "0", "right": "0"} |
cardActionsLayout |
Définit le sens de disposition des actions de carte. Lorsque vous définissez ce paramètre sur horizontal , ces boutons sont présentés horizontalement et seront renvoyés à la ligne si le contenu est affiché.
|
Non | vertical |
colors |
Couleurs utilisées dans le widget de discussion. | Non | {"branding": "#1B8FD2", "text": "#212121", "textLight": "#737373"} |
conversationBeginPosition |
Position de début de la conversation dans le widget. Si la valeur est top , les premiers messages apparaissent en haut du widget. Si la valeur est bottom , la conversation commence en bas.
|
Non | bottom |
font |
Police utilisée dans le widget de discussion. | Non | 16px "Oracle Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue |
fontFamily |
Famille de polices utilisée pour tout le texte du widget de discussion. Ce paramètre est prioritaire sur la configuration font .
|
Non | "Oracle Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue" |
fontSize |
Taille de police à utiliser pour le texte d'en-tête, de bulle et de pied de page dans le widget. Ce paramètre est prioritaire sur la configuration font .
|
Non | 16px |
globalActionsLayout |
Définit le sens de disposition des actions globales. Si ce paramètre est défini sur "horizontal", les boutons sont posés horizontalement et s'encapsulent si le contenu déborde. | Non | vertical |
height |
Dimension de la largeur d'une discussion tel que définie par l'une des valeurs du type de données <length>. | Non | 70vh |
messagePadding |
Remplissage autour des messages dans le widget de discussion. | Non | 15px |
position |
Positionnement du widget de discussion dans la fenêtre du navigateur. Cette option doit être transmise en tant qu'objet JSON. | Non | {bottom: '20px', right: '20px'} |
width |
Largeur du widget de discussion telle que définie sur l'une des valeurs de type de données <length>. | Non | 30vw |
Icônes de bouton d'en-tête personnalisé



colors.headerButtonFill
dans les paramètres initiaux.
La personnalisation de la couleur peut ne pas fonctionner pour tous les éléments SVG, car ils peuvent être multicolores, ou posséder leurs propres couleurs de trait et de remplissage.
Icône : | Fonction | Indicateur de fonctionnalité | Personnalisation |
---|---|---|---|
Supprimer le message | Efface les messages en cours et anciens de la conversation. | enableClearMessage: true |
'<image URL | SVG string>' |
Réponse audio | Active/désactive l'audio des réponses de brique lorsqu'elles sont reçues. S'agissant d'un bouton à bascule, il possède deux états : activé, dans lequel les réponses sont prononcées, et désactivé, dans lequel elles ne le sont pas. | enableBotAudioResponse: true |
|
Fermer | Réduit le widget et affiche le bouton de lancement ![]() |
Aucun : cette icône est toujours activée dans le widget de discussion. Elle n'est pas affichée en mode imbriqué. | closeIcon : '<image URL | SVG string>' |
Couleurs personnalisées
- Vous pouvez transmettre la configuration
colors
:colors: { "branding": "#e00", "text": "#545454" },
- Vous pouvez également utiliser des variables CSS définies dans le wrapper de discussion (
.oda-chat-wrapper
) :.oda-chat-wrapper { --color-branding: '#e00'; --color-text: '#545454'; } }
Conseil :
Nous vous 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 lorsque le focus est sur eux. |
--color-actions-background-focus |
actionsBackgroundHover |
Couleur d'arrière-plan des boutons d'action lorsque le curseur est positionné sur eux |
--color-actions-border |
actionsBorder |
Couleur de 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 lorsque le focus est sur eux |
--color-actions-text-focus |
actionsTextHover |
Couleur du texte des boutons d'action lorsque le curseur est positionné sur eux |
--color-user-message-background |
botMessageBackground |
Couleur de l'arrière-plan de la bulle du message de réponse de la brique |
--color-bot-text |
botText |
Couleur du texte d'un message envoyé par la brique |
--color-branding |
branding |
Couleur principale de la marque du widget. Cette couleur est utilisée en tant qu'arrière-plan d'en-tête et que couleur de pointage du curseur sur 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 panneau 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 au survol |
--color-danger-actions-border |
dangerActionsBorder |
Couleur de bordure du bouton d'action en cas de danger |
--color-danger-actions-text |
dangerActionsText |
Couleur du texte du bouton d'action en cas de danger |
--color-danger-actions-text-focus |
dangerActionsTextFocus |
Couleur du texte du bouton d'action en cas de danger sur le focus |
--color-danger-actions-text-hover |
dangerActionsTextHover |
Couleur du texte du bouton d'action en cas de danger au 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 du texte des actions de danger dans les messages Table, Form, Table-Form et Edit-Form |
--color-danger-form-actions-text-focus |
dangerFormActionsTextFocus |
Couleur du 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 du 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 de niveau formulaire qui s'affiche dans les messages Modifier le formulaire. |
--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 de niveau formulaire qui s'affiche dans les messages Modifier le formulaire. |
--color-error-title |
errorTitle |
Couleur de 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 s'affiche dans les messages Modifier le formulaire. |
--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 de la discussion. |
--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 au survol |
--color-form-actions-border |
formActionsBorder |
Couleur de bordure des actions de formulaire |
--color-form-actions-text |
formActionsText |
Couleur du texte des actions de formulaire |
--color-form-actions-text-focus |
formActionsTextFocus |
Couleur du texte des actions de formulaire sur le focus |
--color-form-actions-text-hover |
formActionsTextHover |
Couleur du texte des actions de formulaire lors du survol |
--color-form-background |
formBackground |
Couleur d'arrière-plan des formulaires |
--color-form-error |
formError |
Couleur de remplissage SVG de l'icône dans les messages d'erreur de niveau champ et formulaire qui s'affichent dans les messages Edit-Form. La couleur est utilisée comme couleur de bordure du champ de saisie en cas d'erreur dans les messages Edit-Form. |
--color-form-error-text |
formErrorText |
Couleur du texte d'un message d'erreur de niveau champ affiché dans les messages Edit-Form |
--color-form-header-background |
formHeaderBackground |
Couleur d'arrière-plan des titres de formulaire |
--color-form-header-text |
formHeaderText |
Couleur du texte des titres de formulaire |
--color-form-input-background |
formInputBackground |
Couleur d'arrière-plan des champs d'entrée dans les messages de modification de formulaire |
--color-form-input-border |
formInputBorder |
Couleur de bordure des champs d'entrée dans les messages de modification de formulaire |
--color-form-input-border-focus |
formInputBorderFocus |
Couleur de bordure des champs d'entrée sur le focus dans les messages Edit-Form |
--color-form-input-text |
formInputText |
Couleur du texte des champs d'entrée dans les messages de modification de formulaire |
--color-form-label |
formLabel |
Couleur des libellés de formulaire |
--color-form-text |
formText |
Couleur du texte des formulaires |
--color-global-actions-background |
globalActionsBackground |
Couleur d'arrière-plan des boutons d'action globale |
--color-global-actions-background-focus |
globalActionsBackgroundFocus |
Couleur d'arrière-plan des boutons d'action globale lorsque le focus est sur eux. |
--color-global-actions-background-hover |
globalActionsBackgroundHover |
Couleur d'arrière-plan des boutons d'action globale lorsque le curseur est positionné sur eux. |
--color-global-actions-border |
globalActionsBorder |
Couleur de bordure des boutons d'action globale |
--color-global-actions-text |
globalActionsText |
Couleur du texte des boutons d'action globale |
--color-global-actions-text-focus |
globalActionsTextFocus |
Couleur du texte des boutons d'action globale lorsque le focus est sur eux. |
--color-global-actions-text-hover |
globalActionsTextHover |
Couleur du texte des boutons d'action globale lorsque le curseur est positionné sur eux. |
--color-header-background |
headerBackground |
Couleur d'arrière-plan de l'en-tête du widget de discussion |
--color-header-button-fill |
headerButtonFill |
Couleur de remplissage des icônes SVG utilisées pour les boutons de l'en-tête de discussion |
--color-header-text |
headerText |
Couleur du titre de l'en-tête de discussion |
--color-input-background |
inputBackground |
Couleur d'arrière-plan du champ d'entrée de message dans le pied de page de la discussion |
--color-input-text |
inputText |
Couleur du texte d'entrée de message dans le pied de page de la discussion |
--color-links |
links |
Couleur des liens intégrés dans les messages de brique |
--color-error-border |
N/A | Couleur de bordure d'une bulle de message d'erreur |
--color-error-message-background |
N/A | Couleur d'arrière-plan d'une bulle de message d'erreur |
--color-error-text |
N/A | Couleur de description du contenu d'un message d'erreur |
--color-error-title |
N/A | Couleur du titre d'un contenu de message d'erreur |
--color-footer-button-background-hover |
N/A | Couleur d'arrière-plan des boutons du pied de page lorsque le curseur est positionné sur eux |
--color-footer-button-fill-hover |
N/A | Couleur de remplissage du pied de page d'en-tête lors du survol |
--color-header-button-background-hover |
N/A | Couleur d'arrière-plan des boutons d'en-tête lorsque le curseur est positionné sur eux |
--color-header-button-fill-hover |
N/A | Couleur de remplissage des boutons d'en-tête lors du survol |
--color-input-border |
N/A | Couleur de bordure du champ de saisie |
--color-user-links |
N/A | Couleur des liens intégrés dans les messages utilisateur. |
--color-popup-background |
N/A | Couleur d'arrière-plan des invites et des fenêtres contextuelles |
--color-popup-button-background |
N/A | Couleur d'arrière-plan des boutons contextuels |
--color-popup-button-text |
N/A | Couleur du texte des boutons contextuels |
--color-popup-horizontal-rule |
N/A | Couleur de règle d'horizon pour le séparateur pour l'action de menu de discussion multilang |
--color-popup-item-background-hover |
N/A | Couleur d'arrière-plan lors du pointage de la souris sur les éléments de liste instantanée |
--color-popup-text |
N/A | Couleur du texte et de l'icône des invites et des fenêtres instantanées |
--color-table-background |
N/A | Couleur d'arrière-plan des tableaux |
--color-table-header-background |
N/A | Couleur d'arrière-plan des en-têtes de table |
--color-table-separator |
N/A | Couleur de séparation des lignes de tableau |
--color-table-text |
N/A | Couleur du texte des tableaux |
--color-notification-badge-background |
notificationBadgeBackground |
Couleur d'arrière-plan du badge de notification de message |
--color-notification-badge-text |
notificationBadgeText |
Couleur du texte du nombre de messages dans le badge de notification |
--color-primary-actions-background |
primaryActionsBackground |
Couleur d'arrière-plan du bouton d'action principale |
--color-primary-actions-background-focus |
primaryActionsBackgroundFocus |
Couleur d'arrière-plan du bouton d'action principal sur le focus |
--color-primary-actions-background-hover |
primaryActionsBackgroundHover |
Couleur d'arrière-plan du bouton d'action principal au survol |
--color-primary-actions-border |
primaryActionsBorder |
Couleur de bordure 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 sur le focus |
--color-primary-actions-text-hover |
primaryActionsTextHover |
Couleur du texte du bouton d'action principal au survol |
--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 sur le focus 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 du 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 sur le focus 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 retour lorsque les utilisateurs survolent ou les sélectionnent. Si vous n'indiquez pas de couleur, c'est la couleur branding qui est utilisée.
|
N/A | recognitionViewBackground |
Couleur d'arrière-plan de la vue dans laquelle le texte reconnu est affiché lorsque les utilisateurs activent le mode vocal. Si vous ne définissez pas cette couleur, c'est celle définie pour headerBackground qui est utilisée.
|
N/A | recognitionViewButtonFill |
Couleur de remplissage SVG pour la bascule entre mode vocal et 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, c'est celle définie pour text qui est utilisée.
|
N/A | shareMenuText |
Couleur utilisée pour les options de 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 du tableau sur le focus |
--color-table-actions-text-focus |
tableActionsTextFocus |
Couleur du texte des actions du tableau sur le focus |
--color-table-actions-text-hover |
tableActionsTextHover |
Couleur du texte des actions du tableau lors du survol |
--color-text |
text |
Couleur du texte des messages dans le widget de discussion. |
-color-text-light |
textLight |
Couleur du texte secondaire dans les messages, par exemple, les descriptions de carte dans le widget de discussion. |
--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 saisie. |
N/A | userMessageBackgound |
Couleur d'arrière-plan de la bulle utilisée pour les messages utilisateur. |
--color-user-text |
userText |
Couleur du texte d'un message envoyé par l'utilisateur. |
--color-visualizer |
visualizer |
Couleur utilisée pour les barres du graphique du visualiseur. Si vous ne définissez pas cette couleur, c'est celle définie pour branding qui est utilisée.
|
--color-visualizer-container-background |
visualizerContainerBackground |
Couleur d'arrière-plan du conteneur du visualiseur vocal qui apparaît lorsque les utilisateurs basculent en mode vocal. Si vous ne définissez pas cette couleur, c'est celle définie pour userMessageBackgound qui est utilisée.
|
Vous pouvez définir une image pour
conversationBackground
, headerBackground
et footerBackground
. Ces champs peuvent accepter tout paramètre pouvant être transmis à la propriété background d'arrière-plan 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 l'icône de brique, l'icône de logo de discussion et les icônes d'avatar de l'utilisateur et de la brique.
Conseil :
Les chaînes SVG sont chargées plus rapidement que les ressources d'image. Elles vous permettent également d'animer l'image et d'en modifier la couleur. La mise en page définie pour la propriététheme
est appliquée aux chaînes SVG pour les boutons de pièce jointe, d'envoi et de microphone, mais pas pour les autres ressources d'image.
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
sont prioritaires. 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>'
}
};
Propriété (version 21.10) | Propriété (versions précédentes) | Description | Compatible chaîne SVG ? |
---|---|---|---|
avatarAgent |
agentAvatar |
Pour les briques avec agents physiques intégrés, cette icône apparaît avec les messages de l'agent physique. avatarBot (ou agentAvatar ) s'affiche si cette propriété n'est pas définie.
|
Oui |
avatarbot |
botIcon |
Icône affichée avec le message de réponse de la brique. Cette icône de brique apparaît uniquement si vous la fournissez. Sinon, aucune icône n'est affichée. | Oui |
avatarUser |
personIcon |
Icône affichée avec les messages utilisateur. Cette icône n'apparaît pas par défaut, mais uniquement si vous la définissez. | Oui |
clearHistory |
clearMessageIcon |
Icône du bouton d'effacement de message située dans l'en-tête du widget | Oui |
close |
N/A | Icône affichée pour le bouton Fermer dans les bannières de message d'erreur, les aperçus d'image développés et le widget WebView. | Oui |
collapse |
closeIcon |
Icône du bouton située dans l'en-tête de la vue de discussion, qui réduit la vue de discussion. | Oui |
download |
downloadIcon |
Icône utilisée pour le bouton de téléchargement de pièce jointe qui apparaît sur chaque message de pièce jointe envoyé par la brique. | download - Oui
|
error |
errorIcon |
URL de l'image utilisée pour l'icône d'erreur. |
|
expandImage |
expandImageIcon |
Icône utilisée pour le contrôle de développement d'image qui apparaît sur chaque message de pièce jointe d'image envoyé par la brique. | expandImage - Oui
|
fileAudio |
audioIcon |
Icône de la pièce jointe audio affichée lorsque l'URL de la source de pièce jointe est inaccessible. |
|
fileGeneric |
fileIcon |
Icône de fichier joint. |
|
fileImage |
imageIcon |
Icône d'image jointe, qui apparaît lorsque la source de la pièce jointe est inaccessible. |
|
fileVideo |
videoIcon |
Icône de pièce jointe vidéo, qui est affichée lorsque l'URL source de la pièce jointe est inaccessible. |
|
keyboard |
keyboardIcon |
Icône de clavier, affichée sous forme de bouton permettant de passer du mode vocal au mode clavier. | Oui |
launch |
botButtonIcon |
Bouton du bot de brique, affiché lorsque le widget de discussion est réduit. |
|
logo |
logoIcon |
Icône de logo de discussion, affichée dans l'en-tête du widget de discussion. |
|
mic |
micIcon |
Icône de bouton micro dans le pied de page du widget de discussion qui apparaît lorsque | Oui |
rating |
N/A | Icône affichée pour les boutons d'action de retour dans le composant d'évaluation. Pour une expérience utilisateur optimale pour l'action de pointage, 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 téléchargement de pièce jointe vers le serveur | Oui |
shareMenuAudio |
N/A | Icône de l'élément de menu audio dans la fenêtre instantanée de menu de partage. | Oui |
shareMenuFile |
N/A | Icône de l'élément de menu Fichier dans la fenêtre instantanée du menu Partage. | Oui |
shareMenuLocation |
N/A | Icône du bouton de menu Partager dans la fenêtre instantanée du menu Partager. | Oui |
shareMenuVisual |
N/A | Icône de l'élément de menu image/vidéo dans la fenêtre instantanée du menu de partage | Oui |
ttsOff |
audioResponseOffIcon |
Icône du bouton à bascule lorsque les réponses audio sont désactivées. | Oui |
ttsOn |
audioResponseOnIcon |
Icône du bouton à bascule lorsque les réponses audio sont activées. | Oui |
typingIndicator |
chatBubbleIcon |
Icône animée dans le volet de conversation qui indique qu'une réponse est envoyée à partir de la brique. | Oui |
chatBubbleIcon
).
Nom de la propriété | Description | Requis ? | Valeur par défaut |
---|---|---|---|
chatBubbleIconHeight |
Hauteur de l'icône de bulle de discussion en cours de chargement. | Non | 42px |
chatBubbleIconWidth |
Largeur de l'icône de bulle de discussion en cours de chargement. | Non | 56px |
Champs personnalisés
en-us
. Sinon, 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 un environnement linguistique autre que en
, toutes les clés doivent être spécifiées pour cet environnement linguistique. 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 brique pour les lecteurs d'écran. Il est prononcé par les lecteurs d'écran avant la réponse de la brique. Le texte (`{0}` ) est remplacé par le nom de l'agent.
|
`'{0} says'` |
attachment_audio |
Texte utilisé pour la variation TTS d'une pièce jointe audio. | 'Audio attachment' |
attachment_file |
Texte utilisé pour la variation TTS d'un fichier joint. | 'File attachment' |
attachment_image |
Texte utilisé pour la variation TTS d'une pièce jointe d'image. | 'Image attachment' |
attachment_video |
Texte utilisé pour la variation TTS d'une pièce jointe vidéo. | 'Video attachment' |
attachmentAudioFallback |
Message de basculement affiché à la place d'une pièce jointe audio si le client ne peut pas faire entendre l'audio. Le texte entre {0} et {/0} est défini comme lien pour télécharger le fichier.
|
Your browser does not support embedded audio. However you can {0}download it{/0}. |
attachmentVideoFallback |
Message de basculement affiché à la place d'une pièce jointe vidéo si le client ne peut pas afficher la vidéo. Le texte entre {0} et {/0} est défini comme lien pour télécharger le fichier.
|
Your browser does not support embedded video. However you can {0}download it{/0} .
|
audioResponseOn |
Info-bulle affichée lorsque l'utilisateur positionne le curseur de la souris sur le bouton "off" de variation audio dans un en-tête. | Turn audio response on |
avatarAgent |
Texte alternatif utilisé pour l'icône de l'agent qui s'affiche en regard des messages de l'agent. | Agent icon |
avatarBot |
Texte alternatif utilisé pour l'icône de brique affichée en regard des messages de brique. | Bot icon |
avatarUser |
Texte alternatif utilisé pour l'icône utilisateur affichée en regard des messages utilisateur. | User icon |
card |
Identificateur de la carte. | 'Card {0}' . Vous pouvez localiser la chaîne en plaçant l'espace réservé 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 l'espace réservé ordinal. Pour cette chaîne, le caractère ordinal est placé après le mot. Pour mettre en sourdine la variation, transmettez une chaîne vide (card: '' ).
|
cardImagePlaceholder |
Texte d'espace réservé affiché lorsque l'image de carte est extraite et chargée. | Loading image |
cardImagePlaceholder |
Texte d'espace réservé affiché lorsque l'image de carte est extraite et chargée. | Loading image |
cardNavNext |
Libellé du bouton de navigation de carte permettant d'afficher la carte suivante dans une mise en page horizontale. | Next card |
cardNavPrevious |
Libellé du bouton de navigation de carte permettant d'afficher la carte précédente dans une mise en page horizontale. | Previous card |
chatSubtitle |
Définit le sous-titre de la vue de discussion, affiché sous le titre dans l'en-tête de la vue de discussion. Si l'indicateur de sous-titre est défini et que les indicateurs showConnectionStatus et/ou showTypingIndicator sont définis sur true, le sous-titre apparaît à la place du statut de connexion ou de l'indicateur de saisie.
|
N/A |
chatTitle |
Titre du widget de discussion affiché dans l'en-tête. | Ask |
clear |
Info-bulle affichée lorsque l'utilisateur positionne le curseur de la souris sur le bouton Effacer les messages dans l'en-tête. | Clear |
close |
Info-bulle affichée lorsque l'utilisateur positionne le curseur de la souris sur le bouton de fermeture du widget dans l'en-tête. | Close |
closing |
Texte de statut affiché lorsque la connexion entre le widget de discussion et le serveur est en cours de fermeture. | Closing |
connected |
Texte de statut affiché lorsque la connexion entre le widget de discussion et le serveur est établie. | Connected |
connecting |
Texte de statut affiché lorsque le widget de discussion se connecte au serveur de discussion. | Connecting |
connectionFailureMessage |
Message d'échec affiché lorsque le widget ne peut pas se connecter à la brique. | Sorry, the assistant is unavailable right now. If the issue persists, contact your help desk. |
connectionRetryLabel |
Intitulé du bouton Réessayer la connexion. | Try Again |
defaultGreetingMessage |
Réponse d'accueil client par défaut affichée lorsque la réponse de brique 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 client par défaut lorsque la réponse de brique n'a pas été reçue, 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 où aucune réponse de brique réelle n'a é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 affiché lorsque la connexion entre le widget de discussion et le serveur est fermée. | Disconnected |
download |
Texte d'accessibilité du bouton de téléchargement qui apparaît sur chaque message de pièce jointe envoyé par la brique. | Download |
endConversation |
Info-bulle qui apparaît lorsque vous passez le pointeur 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 Terminer la 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 connexions vocales sont tentées sur un intervalle court. | Another voice recognition is ongoing. Can't start a new one.' |
errorSpeechTooMuchTimeout |
Message d'erreur affiché lorsqu'un utilisateur enregistre un message vocal trop long pour être reconnu. | Too much voice input to recognize. Can not generate recognized text. |
errorSpeechUnsupportedLocale |
Message d'erreur affiché lorsqu'un enregistrement est tenté et qu'un environnement local 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 d'espace réservé qui apparaît dans le champ de saisie utilisateur. | Type a message |
itemIterator |
Identificateur d'élément dans une liste d'éléments dans un message Table , Form ou Table-Form . Le texte ({0} ) est remplacé par l'index des éléments.
|
Item {0} |
language_<languageTag> |
Libellé 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 une discussion multilingue. |
|
Language Label |
language_detect |
Libellé de l'option de détection automatique dans le menu déroulant de sélection de la langue. | Detect Language |
languageSelectDropdown |
Info-bulle qui apparaît lorsque les utilisateurs survolent le bouton de sélection de la langue dans l'en-tête. | Select chat language |
linkField |
Texte de variation de remplacement pour un champ de lien dans un message Table , Form ou Table-Form . L'espace réservé ({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 discussion ne parvient pas à reconnaître la voix. | Could not detect the voice, no message sent. |
noText |
Intitulé du bouton Pas de confirmation. | No |
openMap |
Libellé du bouton d'action utilisé pour ouvrir une carte de localisation. | Open Map |
previousChats |
Texte de statut qui apparaît à la fin des anciens messages. | Previous conversations |
ratingStar |
Texte d'info-bulle affiché pour chaque étoile d'évaluation dans un message de retour. L'espace réservé `{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 d'espace réservé affiché dans le champ de texte de reconnaissance. | Speak your message |
relTimeDay |
Horodatage relatif affiché tous les jours 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 affiché toutes les heures dans les premières 24 heures après la réception du message précédent. {0} est remplacé par le nombre d'heures écoulées.
|
{0}hr ago |
relTimeMin |
Horodatage relatif affiché toutes les minutes depuis la réception du dernier message. {0} est remplacé par le nombre de minutes écoulées.
|
{0}min ago |
relTimeMoment |
Horodatage relatif affiché dix secondes après la réception du message et dans un délai de 60 secondes après la réception du dernier message. | A few seconds ago |
relTimeMon |
Horodatage relatif affiché tous les 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 affiché pour un nouveau message. | Now |
relTimeYr |
Horodatage relatif affiché toutes les années depuis 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é lorsque la localisation de l'utilisateur est demandée. | Requesting location |
requestLocationDeniedPermission
|
Message d'erreur affiché lorsque l'autorisation d'accès à la localisation 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 de localisation n'est pas résolue en raison d'une expiration. | 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 de localisation est refusée car la localisation en cours 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 affiché lorsque l'utilisateur refuse la demande de localisation. | Cannot access your location. Please allow access to proceed further. |
retryMessage |
Texte affiché lorsque le message utilisateur n'a pas été envoyé au serveur. | Try again |
send |
Info-bulle affichée lorsque l'utilisateur positionne le curseur 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 instantanée de partage d'un fichier audio | Share Audio |
shareFailureMessage |
Message d'erreur affiché lorsque l'utilisateur clique sur le bouton d'action de partage d'un message, mais que l'API de partage n'est pas disponible sur 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 instantanée de partage d'un fichier générique | Share File |
shareLocation |
Texte de l'élément de menu permettant de partager une localisation dans la fenêtre instantanée | Share Location |
shareVisual |
Texte de l'élément de menu dans la fenêtre instantanée de partage d'une image ou d'un fichier vidéo | Share Image/Video |
skillMessage |
Indicateur de message de brique pour les lecteurs d'écran. Il est prononcé par les lecteurs d'écran avant la réponse de la brique. | Skill says |
speak |
Info-bulle affichée lorsque l'utilisateur positionne le curseur de la souris sur le bouton de parole 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 |
Info-bulle affichée lorsque l'utilisateur positionne le curseur de la souris sur le bouton de téléchargement vers le serveur dans le pied de page. | Share popup |
uploadFailed |
Texte d'erreur affiché lorsqu'un téléchargement vers le serveur échoue. | Upload Failed. |
uploadFileSizeLimitExceeded |
Texte d'erreur affiché lorsque la taille du fichier de téléchargement vers le serveur dépasse la limite. | Upload Failed. File size should not be more than 25MB. |
uploadFileSizeZeroByte |
Texte d'erreur affiché lorsque la taille du fichier de téléchargement est de 0 octet. | Upload Failed. Files of size zero bytes cannot be uploaded. |
uploadUnsupportedFileType |
Texte d'erreur affiché lorsqu'un téléchargement vers le serveur est tenté pour un type de fichier non pris en charge. | Upload Failed. Unsupported file type. |
userMessage |
Indicateur de message utilisateur pour les lecteurs d'écran. Il est prononcé par les lecteurs d'écran avant l'envoi du message par l'utilisateur. | I say |
utteranceGeneric |
Description de basculement du message de réponse utilisé dans la variation. | Message from skill. |
webViewAccessibilityTitle |
Titre d'accessibilité par défaut pour la vue Web, lu à voix haute 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 |
Info-bulle du bouton de rejet utilisé pour fermer le lien de restauration dans la vue Web. | 'Dismiss' |
webViewErrorInfoText |
Texte d'information affiché dans la vue Web lorsque le lien sélectionné ne peut pas y être ouvert. Le texte entre {0} et {/0} est défini sur le lien d'origine 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 |
Libellé du bouton de confirmation Oui. | Yes |
editFieldErrorMessage |
Message d'erreur de niveau champ qui s'affiche lorsque la valeur saisie par l'utilisateur n'est pas valide pour ce champ. Le kit SDK utilise par défaut ce message lorsque la brique ne fournit pas de message d'erreur client. | Field Input is invalid |
editFormErrorMessage |
Message d'erreur de niveau formulaire affiché sous l'action d'envoi 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 existe plusieurs champs. Le kit SDK prend par défaut la valeur de ce message lorsque la brique ne fournit pas de message d'erreur dans la charge utile de message. | Some of the fields need your attention. |
noResultText |
Texte de statut affiché lorsqu'il n'y a aucune correspondance dans une recherche d'utilisateur dans la vue de liste à sélection multiple. | No more results |
Configuration des options du menu de partage
- Fichiers multimédias visuels (images et vidéos)
- Fichiers audio
- Fichiers généraux tels que des documents, des fichiers PDF et des feuilles de calcul
- emplacement
Le paramètre
shareMenuItems
permet de limiter les éléments affichés dans le menu de partage. Le paramètre accepte un tableau de chaînes avec des clés mises en correspondance avec les éléments du menu de partage : 'visual'
pour l'élément Partager l'image/la vidéo, 'audio'
pour l'élément Partager l'audio, 'file'
pour l'élément Partager le fichier et 'location'
pour l'élément Partager la localisation. Vous pouvez utiliser ces clés, qui ne distinguent pas les majuscules des minuscules, pour indiquer 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.
Vous pouvez désactiver la fonctionnalité de pièce jointe en définissant
enableAttachment
sur false
.
N'activez pas ce paramètre si la brique se connecte à une instance ODA de version 20.08 ou si elle est exécutée sur une version antérieure à la version 20.08. Cette propriété s'applique uniquement aux connexions avec authentification client à la version 20.12 ou supérieure de la plate-forme ODA.
Options de menu de partage personnalisées
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'option de menu peut être transmise avec ou sans la catégorie string
.
Conseil :
Pour prendre en charge les libellés dans plusieurs langues, nous vous recommandons d'utiliser i18n au lieu de la baliselabel
.
shareMenuItems
dans la variable settings
. Vous définissez les libellés en les transmettant avec des clés share_
, qui sont également illustrées dans ce fragment de code. Vous pouvez définir le libellé sur 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'
}
}
}
Personnalisation des classes CSS
Classe | Composant |
---|---|
oda-chat-launch-button
|
Bouton de lancement du widget de discussion |
oda-chat-button-clear
|
Bouton d'effacement des messages |
oda-chat-button-close
|
Bouton de fermeture du widget |
oda-chat-button-narration
|
Bouton à bascule de réponse audio de la brique |
oda-chat-button-send
|
Bouton d'envoi de message |
oda-chat-button-upload
|
Bouton de téléchargement du fichier vers le serveur |
oda-chat-card
|
Message de carte |
oda-chat-closing
|
Appliqué en tant que semblable à oda-chat-connection-status lorsque le widget se déconnecte du serveur
|
oda-chat-connected
|
Appliqué en tant que semblable à oda-chat-connection-status lorsque le widget est connecté au serveur
|
oda-chat-connecting
|
Appliqué en tant que semblable à oda-chat-connection-status lorsque le widget se connecte au serveur
|
oda-chat-connection-status
|
Statut de la connexion. Chaque valeur de connexion possède sa propre classe, comme oda-chat-connected , oda-chat-disconnected ou oda-chat-connecting .
|
oda-chat-conversation
|
Conteneur de la conversation |
oda-chat-disconnected
|
Appliqué en tant que semblable à oda-chat-connection-status lorsque le widget est déconnecté du serveur
|
oda-chat-footer
|
Pied de page du widget de discussion |
oda-chat-footer-button
|
Classe commune pour tous les boutons de pied de page |
oda-chat-header
|
En-tête du widget de discussion |
oda-chat-header-button
|
Classe commune pour tous les boutons d'en-tête |
oda-chat-icon-wrapper
|
Wrapper pour la brique ou pour une personne affiché avec le message. |
oda-chat-left
|
Wrapper du message de brique |
oda-chat-logo
|
Logo dans l'en-tête du widget |
oda-chat-message
|
Classe de wrapper commune pour tous les messages de discussion |
oda-chat-message-action-location
|
Bouton d'action de demande de localisation |
oda-chat-message-action-postback
|
Bouton d'action de postback |
oda-chat-message-actions
|
Wrapper des boutons d'action |
oda-chat-message-bubble
|
Bulle du message |
oda-chat-message-global-actions
|
Wrapper des boutons d'action global |
oda-chat-message-icon
|
Image pour la brique ou pour une personne affichée avec le message. |
oda-chat-notification-badge
|
Badge de notification pour les messages non lus. |
oda-chat-rating-star
|
Bouton d'étoile de notation dans un message de retour |
oda-chat-rating-star-icon
|
Icône SVG du bouton d'étoile d'évaluation |
oda-chat-right
|
Wrapper du message utilisateur |
oda-chat-title
|
Titre dans l'en-tête du widget |
oda-chat-user-input
|
Zone de texte de saisie utilisateur |
oda-chat-widget
|
Composant de discussion développé, qui encapsule l'en-tête, la conversation et le pied de page du widget. |
oda-chat-wrapper
|
Wrapper de la totalité du composant de discussion |
Personnalisation de l'horodatage
Par défaut, l'horodatage qui apparaît dans l'en-tête lorsque timestampHeaderMode
et timestampHeaderFormat
sont définis affiche le format jour de la semaine, mois, date, année et heure de l'environnement local. Par exemple : Thursday, August 13, 2020, 9:52:22 AM. Vous pouvez configurer cet horodatage en transmettant les options de formatage dans le paramètre timestampFormat
. Vous pouvez formater l'horodatage en transmettant une chaîne de modèle de jeton de formatage ou en transmettant un objet contenant les options Intl.DateTimeFormat
.
Formatage de la date et de l'heure avec des chaînes de modèle
timestampFormat: 'hh:mm:ss a'
définit l'horodatage sur 09:30:14 pm.
Ces jetons distinguent les majuscules des minuscules. Par exemple, la transmission de
yyyy
au lieu de YYYY
empêcherait l'affichage de l'année.
Composant | Sème | Sortie |
---|---|---|
Jour du mois |
|
|
Jour de la semaine |
|
|
Mois |
|
|
Année |
|
|
Heure |
|
|
Minutes |
|
|
Seconde |
|
|
Fraction de seconde |
|
|
AM/PM |
|
|
fuseau horaire |
|
|
Formatage de l'horodatage avec les objets Intl.DateTimeFormat
Propriété | Valeurs |
---|---|
dateStyle |
'full' | 'long' | 'medium' | 'short' |
timeStyle |
'full' | 'long' | 'medium' | 'short' |
weekday |
|
day |
|
month |
|
year |
|
era |
|
hour |
|
minute |
|
second |
|
timeZoneName |
|
timeZone |
Le fuseau horaire. Toutes les implémentations doivent reconnaître le temps UTC . La valeur par défaut est le fuseau horaire par défaut de l'exécution. Les implémentations peuvent également reconnaître les noms de fuseau horaire de la base de données de fuseau horaire IANA, tels que Asia/Shanghai , Asia/Kolkata , America/New_York .
|
hour12 |
Indique si un format d'heure sur 12 heures doit être utilisé (par opposition au format sur 24 heures). Les valeurs sont true et false .
|
Personnaliser la jauge d'évaluation des messages de retour
Le message du composant de retour vous permet de collecter les commentaires des utilisateurs. Si vous utilisez le SDK 21.10, la présentation par défaut du composant de retour est un système d'évaluation par étoiles, une ligne 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 Commentaires utilisateur, mais vous pouvez personnaliser l'apparence des composants à l'aide des paramètres de kit SDK.
rating
dans le champ icons
.
Conseil :
Pour une expérience utilisateur optimale, utilisez une chaîne SVG pleine sans couleur de remplissage, car elle permet une mise en surbrillance reconnaissable sur le pointeur de la souris.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é et survolé/sélectionné, peut être configurée avec les champs de couleur ratingStar
et ratingStarFill
dans le paramètre 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 la sortie des invites par le composant Retour d'utilisateur en modifiant les groupes de ressources liés au retour accessibles via la page Configuration du groupe de ressources ou en modifiant les cléssystemComponent_Feedback_
dans un fichier CSV de groupe de ressources exporté.
Envoi du message initial lorsque l'historique de conversation est vide
initUserHiddenMessage
sont envoyés indépendamment de l'historique de conversation de l'utilisateur, la première fois que le widget de discussion est ouvert pour chaque session. Pour envoyer le message initial lorsque l'historique de conversation est vide, vous devez lier un processus 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 de service de synthèse vocale
- Vous êtes souvent limité à des voix non naturelles 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.
ttService
ou en appelant la méthode setTTSService
(décrite dans la documentation qui accompagne le kit SDK). Vous pouvez utiliser un service fourni par Oracle, tel qu'Oracle Cloud Infrastructure (OCI) Speech, ou un service fourni par un tiers.
Text-to-Speech
- Indicateur de fonctionnalité :
enableBotAudioResponse: true
(la valeur par défaut estfalse
.) - Service TTS par défaut :
WebSDK.TTS.oracle
- Configuration des fonctionnalités :
ttsVoice
Vous pouvez enrichir l'expérience conversationnelle en permettant à la synthèse vocale (TTS) de parler les réponses lorsqu'elles atteignent le SDK. Le kit SDK fournit deux types de service TTS prêts à l'emploi : WebSDK.TTS.platform
et WebSDK.TTS.oracle
. Par défaut, le kit SDK utilise le service Speech d'Oracle Cloud Infrastructure (OCI) pour les réponses prononcées de manière plus naturelle. 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
, qui est basé sur l'API Web Speech. Il utilise les API de synthèse vocale sur l'appareil de l'utilisateur pour prononcer les réponses.
ttsVoice
pour configurer la voix du TTS. Chaque élément du tableau doit être un objet comportant au moins un champ lang
ou un champ name
. Le 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, le kit SDK utilise la première correspondance en fonction de la valeur lang
uniquement. S'il n'y a toujours aucune correspondance, le 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 variations sont parlées, le tableau ttsVoice
permet de transmettre des 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.
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 vocale
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;
}
/**
* 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;
}
L'objet
SpeechSynthesisServiceEvent
comporte deux événements, TTSPlay
et TTSEnd
:const SpeechSynthesisServiceEvent = {
TTSPlay: 'tts:play',
TTSEnd: 'tts:end'
}
setTTSService(service)
.
Une fois le service TTS injecté, le kit SDK gère les appels aux méthodes de service pour la transmission des messages. Toutefois, vous pouvez appeler ces méthodes directement, ou vous pouvez utiliser les méthodes TTS exposées par le SDK pour toutes les exigences. En mode sans interface utilisateur, par exemple, vous pouvez appeler la méthode Bots.speakTTS(message)
pour transmettre un message tel qu'il est reçu de la brique. Le kit SDK gère à la fois l'analyse du texte pouvant faire l'objet d'une variation à partir du message et la transmission de ce texte au service TTS afin qu'il puisse être prononcé.