Personalización del widget de chat
Puede personalizar diversos aspectos del widget de chat, como su diseño e iconos, colores y texto.
Consejo:
Este artículo le familiariza con las diversas propiedades de personalización.Configuración de Red
scripts/settings.js
.
Nombre de la propiedad | Descripción | ¿Obligatoria? | Valor por defecto |
---|---|---|---|
URI |
URL del servidor de chat de Oracle | Sí | N/D |
channelId |
ID del canal web de Oracle | Sí | N/D |
userId |
Identificador único para el usuario. Si no lo proporciona, Oracle Digital Asssistant genera uno. | No | Valor generado aleatoriamente |
clientAuthEnabled |
Determina si el SDK se conecta a un canal donde esté activada la autenticación del cliente. Tal y como se describe en Configuración de la autenticación de cliente, el usuario lo define en true para conectarse al canal con autenticación activada y utilizar el token de JWT.
|
Sí | false |
Indicadores de función
- Conexiones seguras
- Botones de acción con forma de píldora
- Narración de audio de las respuestas a las aptitudes.
- Compartir anexos
- Desactivar clics en mensajes anteriores (sin enfoque)
- Terminación automática de la entrada de usuario
<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>
Consejo:
A partir de la versión 22.08, el esquema de valores de configuración del widget de chat está disponible en un formato de esquema JSON estándar a través de una CDN (https://static.oracle.com/cdn/oda/22.8.0/settings-schema.json
), que se puede utilizar para crear pantallas de configuración dinámica.
Nombre de la propiedad | Descripción | ¿Obligatoria? | Valor por defecto |
---|---|---|---|
alwaysShowSendButton |
Muestra el botón de envío en el pie de página del chat incluso cuando no hay texto de entrada de usuario. | No | false |
defaultGreetingTimeout |
Timeout por defecto, en segundos, tras el cual se muestra un mensaje de saludo por defecto. | No | 5 |
defaultWaitMessageInterval |
Intervalo por defecto, en segundos, que muestra el mensaje de espera por defecto. | No | 5 |
disablePastActions |
Desactiva los botones de acción de un mensaje de aptitud después de que un usuario haya interactuado con una acción de devolución, ubicación o envío de formulario. Los valores permitidos son all , none o postback . Si se define en all , todos los botones de acción del mensaje se desactivan al interactuar. La configuración de postback solo desactiva las acciones de devolución y ubicación, y la configuración de none mantiene todos los botones activados incluso después de una interacción. El comportamiento activado por esta propiedad es independiente de la configuración de nivel de asistente digital para desactivar la selección de las acciones anteriores. Debe definir los dos por separado.
|
No | all |
displayActionsAsPills |
Muestra botones de acción con forma de píldora. | No | false |
enableAttachment |
Configura el uso compartido de anexos. | No | true |
enableAttachmentSecurity |
Cuando se define en true , las cabeceras adicionales se transfieren a las solicitudes de carga de anexos para garantizar que no se puedan descargar sin transferir un token JWT firmado válido como cabecera de autorización.
No active este valor si la aptitud se conecta a una instancia de ODA de la versión 20.08 o se ejecuta en cualquier versión anterior a la 20.08. Esta propiedad solo se aplica a las conexiones activadas por autenticación de cliente a las versiones 20.12 y superiores de la plataforma ODA. |
No | false |
enableAutocomplete |
Defina esta opción en true para permitir que la aptitud complete automáticamente la solicitud del usuario mediante las solicitudes de usuario idealizadas introducidas como sugerencias de terminación automática en la página Crear intención. La aptitud muestra estas sugerencias cuando el usuario introduce tres o más caracteres. También define las palabras en la entrada de usuario que coinciden con las frases sugeridas en negrita.
|
No | false |
enableBotAudioResponse |
Permite la expresión de las respuestas de una aptitud a medida que se reciben mediante la API de síntesis de voz web. | No | false |
enableClearMessage |
Activa el botón Borrar mensaje en la cabecera del widget de chat. | No | false |
enableDraggableButton |
Permite a los usuarios retirar el botón del widget de chat cuando bloquee el contenido en la página web. Esta característica también funciona para exploradores Safari Android e iOS. | No | false |
enableHeadless |
Permite utilizar el SDK de Oracle Web sin su interfaz de usuario para que pueda desarrollar su propia interfaz de usuario de chat. | No | false |
enableLocalConversationHistory |
Activa la conversación anterior que está asociada a un userId especificado para que se cargue en el explorador cuando se haya inicializado el widget.
|
No | false |
enableLongPolling |
Utilice solicitudes HTTP cuando el websocket no pueda conectarse. | No | false |
enableSecureConnection |
Configura la comunicación segura (https frente a http y wss frente a ws ).
|
No | true |
enableSpeech |
Si se define en true , esta propiedad activa el micrófono para el reconocimiento por voz. Por ejemplo:
|
No | false |
enableSpeechAutoSend |
Cuando se define en true (valor por defecto), la respuesta de voz del usuario se envía automáticamente al servidor de chat (y se muestra como un mensaje enviado en el widget de chat). Si se define en false , la respuesta de voz del usuario se presenta en el campo de texto del mensaje antes de enviarla al servidor de chat para que el usuario pueda modificarla antes de enviarla manualmente o suprimirlo.
|
No | true |
focusOnNewMessage |
Define el enfoque en el campo de entrada del usuario o en el primer botón de acción de un mensaje cuando se recibe un mensaje nuevo.
|
No | input |
multiLangChat |
Activa el widget de chat tanto para detectar el idioma de un usuario como para permitir al usuario seleccionar un idioma preferido en un menú desplegable de la cabecera. El menú se define con un objeto que define el idioma principal y una matriz de dos o más etiquetas de idioma (la matriz supportedLangs , que se describe en Chat multilingüe).
|
No | N/D |
name |
Nombre de la instancia. Proporciona un espacio de nombres a la instancia y se utiliza como prefijo para los nombres de clase e ID de elementos CSS. | No | oda-chat |
openChatOnLoad |
Amplía el widget de chat cuando se carga la página. | No | false |
openLinksInNewWindow |
Sustituye la preferencia de explorador del usuario abriendo enlaces en una nueva ventana. Esta configuración se aplica a todos los enlaces presentes en la conversación, incluidos los botones de acción, los enlaces de reserva para anexos y los enlaces de tarjeta. | No | false |
showConnectionStatus |
Permite mostrar el estado de la conexión en la cabecera del widget de chat. | No | false |
showPrevConvStatus |
Muestra los mensajes de estado al final de los mensajes más antiguos de las conversaciones anteriores. | No | true |
showTypingIndicator |
Muestra una burbuja de chat cuando se espera una respuesta. | No | true |
Funcionalidad
- Imitar una conversación iniciada por la aptitud.
- Integre contenido en la parte superior e inferior de la ventana de chat que se desplaza o que no se mueve (fijada).
- Definir la configuración regional.
- Definir el modo de depuración
- Defina la configuración regional y la voz para la síntesis de voz.
Propiedad | Descripción | ¿Obligatoria? | Valor por defecto |
---|---|---|---|
customHeaderElementId |
Asigna un nombre al ID del elemento <div> que se agrega a la cabecera del widget de chat.
|
No | N/D |
delegate |
Objeto que define un delegado para recibir devoluciones de llamada antes de que se produzcan determinados eventos en una conversación. El objeto delegate permite que el código interactúe con los mensajes de usuario y las respuestas de aptitud antes de que se envíen los mensajes y se muestren las respuestas.
|
No | N/D |
embedBottomScrollId |
ID del elemento que se agrega como contenido desplazable en la parte inferior del chat. Utilice esta propiedad para agregar contenido personalizado en la vista de conversación del widget de chat. | No | N/D |
embedBottomStickyId |
ID del elemento usado para el contenido fijado que aparece en la parte inferior del chat. Utilice esta propiedad para agregar contenido personalizado en la vista de conversación del widget de chat. | No | N/D |
embedded |
Si se define esta opción en true , se activa el modo embebido para el widget de chat. Además de definir esta propiedad, debe asignar un nombre al elemento div que aloje el widget en la propiedad targetElement .
|
No | false |
embeddedVideo |
Si se define en true , se embeben enlaces para los vídeos de YouTube, Daily Motion y Oracle Video Hub para que se puedan reproducir desde el widget de chat.
|
No | false |
embedTopscrollId |
ID del elemento div que se agrega como contenido de desplazamiento en la parte superior del widget de chat.
|
No | N/D |
embedTopStickyId |
ID del elemento div usado para el contenido fijado que aparece en la parte inferior del widget de chat. Utilice esta propiedad para agregar contenido personalizado en la vista de conversación del widget de chat. Por ejemplo, se hace referencia al elemento top-text div en el siguiente fragmento como embedTopStickyId: 'top-text' :
En Tutorial del SDK de Web se describe cómo configurar esta propiedad y definir el desplazamiento y no desplazamiento de los elementos del widget de chat.
|
No | N/D |
enableAgentSneakPreview |
Envía el texto introducido por el usuario junto con el estado de escritura al agente. | No | false |
enableAutocompleteClientCache |
Activa el almacenamiento en caché del cliente para minimizar las llamadas del servidor cuando la función de terminación automática está en uso. | No | false |
enableDefaultClientResponse |
Cuando se define en true , el cliente muestra respuestas por defecto cuando la respuesta de la aptitud se ha retrasado o cuando no hay respuesta de la aptitud.
|
No | false |
enableEndConversation |
Permite al usuario finalizar la conversación y restablecer la sesión de chat. También borra el historial de conversaciones locales, se desconecta del servidor de chat y minimiza el widget | No | true |
enableHeaderActionCollapse |
Contrae las acciones de cabecera en un botón de menú si el recuento de iconos es superior a dos. | No | true |
enableResizableWidget |
Permite al usuario cambiar el tamaño del widget de chat después de ampliarlo. Si el widget se encuentra en el lado derecho de la página web, los usuarios ajustan sus dimensiones arrastrando el borde superior, el borde izquierdo o la esquina superior izquierda. Del mismo modo, si el widget se coloca en el lado izquierdo, los usuarios pueden cambiar el tamaño del borde superior, el borde derecho o la esquina superior derecha. | No | false |
enableSendTypingStatus |
Envía el estado de escritura del usuario al agente activo. | No | false |
enableTabsSync |
Sincroniza los mensajes de conversación en diferentes separadores para un determinado userId y channelId .
|
No | true |
enableVoiceOnlyMode |
Activa el modo de solo voz. La activación del modo de solo voz elimina la necesidad de que los usuarios hagan clic en el botón Mic cada vez que reciben un mensaje del bot. Con este modo activado, el SDK inicia automáticamente el reconocimiento de voz una vez que se ha hablado el TTS (Text-to-Speech) para el mensaje recibido. | No | false |
hotkeys |
Objeto que contiene una lista de teclas de teclado que activan o enfocan elementos mediante la tecla ALT combinada con la tecla de acceso rápido pasada. | No | {...} Por ejemplo:
|
i18n |
Objeto que contiene campos de configuración regional. Cada configuración regional mantiene pares de clave-valor i18n para las cadenas de texto utilizadas en el widget.
|
No | {'en-us':{…}} Por ejemplo:
|
initBotAudioMuted |
Inicializa la expresión del mensaje de aptitud en modo silenciado. Esta función solo se puede activar cuando se define enableBotAudioResponse en true .
|
No | true |
initMessageOptions |
Mientras que initUserHiddenMessage envía el mensaje inicial "oculto" justo después de que el cliente se haya conectado a la aptitud y se haya ampliado el widget de chat, puede utilizar esta opción para enviar mensajes tan pronto como el cliente se haya conectado a la aptitud, independientemente de si el widget está ampliado o no. Este valor acepta un objeto que tiene una propiedad sendAt . La propiedad sendAt puede tener uno de los dos valores: 'init' o 'expand' . Si define 'init' , los mensajes de inicialización se envían tan pronto como se realice la conexión. Si define 'expand' , los mensajes de inicialización se envían solo cuando se amplía el widget. En el siguiente fragmento, el mensaje se define cuando se establece la conexión debido a sendAt: 'init' : Tenga en cuenta que la facturación comienza cuando se envía el mensaje de inicialización, incluso si el widget aún está cerrado (como sería el caso con sendAt: 'init ').
|
N/D | |
initUserHiddenMessage |
Mensaje que se utiliza para iniciar una conversación. Este mensaje puede ser una cadena de texto o una carga útil de mensaje. Por ejemplo: initUserHiddenMessage: 'Hi' . Estos mensajes no dependen del historial del usuario. Este mensaje se envía en cada sesión una vez que el cliente se haya conectado a la aptitud y se haya ampliado el widget de chat. Para enviar el primer mensaje solo cuando el historial de conversaciones está vacío, debe enlazar listeners de evento mediante el método Bots.on() . Por ejemplo, puede hacerlo mediante el enlace de los eventos WIDGET_OPENED y NETWORK , que se describen en los documentos de SDK.
|
No | N/D |
initUserProfile |
Actualiza el perfil de usuario antes del inicio de una conversación. El formato de la carga útil del perfil debe ser { profile: {...} } . Por ejemplo: Esta función actualiza el contexto de usuario después de que el cliente se conecte a la aptitud y el widget de chat se ha ampliado. Como resultado, el perfil de usuario se puede reflejar en el primer mensaje de respuesta para el usuario. Por ejemplo, la aptitud puede saludar al usuario con un mensaje como "¡Bienvenido de nuevo, Juan Díaz! Su último pedido fue un pizza de 'pepperoni' mediana". Estos mensajes se envían después de la conexión del cliente a la aptitud y de la ampliación del widget de chat. Estos mensajes del perfil del usuario se envían después de haber conectado el cliente a la aptitud y de haber ampliado el widget del chat. Se sigue enviando un mensaje de perfil de usuario antes del mensaje "oculto" inicial si también se transfiere initUserHiddenMessage .
Solo puede transferir la propiedad |
No | N/D |
isDebugMode |
Activa el modo de depuración. | No | false |
linkHandler |
Objeto que sustituye la configuración para gestionar los clics en los enlaces que están embebidos en las respuestas de la aptitud. Este objeto gestiona los enlaces de dos maneras: target , que acepta una cadena, y onclick , que acepta una función. Puede definir target o onclick , pero no ambos. Cuando desee que todos los enlaces se abran en una vista web, transfiera linkHandler: { target: 'oda-chat-webview' } .
|
No |
|
locale |
Configuración regional por defecto para las cadenas de texto del widget. La configuración regional transferida durante la inicialización tiene una mayor prioridad que las configuraciones regionales del explorador de los usuarios. Si no hay una coincidencia exacta, el SDK intenta encontrar una coincidencia con el idioma más cercano. Por ejemplo, si la configuración regional es 'da-dk' , pero se proporcionan las traducciones de i18n solo para 'da' , se utiliza la traducción 'da' . Si no hay traducciones para la configuración regional transferida, se buscan las traducciones y se aplican a las configuraciones regionales del explorador. Si no hay traducciones para ninguno de ellos, se utiliza la configuración regional por defecto 'en' para las traducciones.
|
No | en-us |
messageCacheSizeLimit |
Número máximo de mensajes que se guardan en localStorage a la vez.
|
No | 2000 |
reconnectMaxAttempts |
Número de intentos realizados por el widget de chat para volver a conectarse cuando falla la conexión inicial. | No | 5 |
shareMenuItems |
Opciones de menú del menú emergente Compartir. Esta propiedad acepta una matriz con valores de cadena asignados a opciones de menú:
['audio', 'file'] , por ejemplo). Todas las opciones de menú están disponibles si la matriz está vacía, si los elementos de la matriz son incorrectos (['audio', 'visuil'] o si no se ha definido shareMenuItems .
|
No |
|
skillVoices |
Matriz que contiene las voces preferidas que se utilizan para describir respuestas. Cada elemento de la matriz debe ser un objeto con dos campos: lang y name . name es opcional. El primer elemento que coincida con una voz que esté disponible en el sistema se utilizará para la narración. Esta configuración está en desuso.
|
No | System language |
speechLocale |
Configuración regional esperada del habla del usuario que se utiliza para el reconocimiento de voz. El inglés de EE. UU. ('en-US' ) es la configuración regional por defecto. Las demás configuraciones regionales soportadas son: inglés australiano ('en-au' ), inglés del Reino Unido ('en-uk' ), francés ('fr-fr' ), alemán ('de-de' ), italiano ('it-it' ), indio-hindi (hi-in ), indio-inglés (en-in ), portugués brasileño ('pt-br' ) y español ('es-es' ). La configuración regional del habla se puede definir de forma dinámica llamando a la API setSpeechLocale('<locale>') . El reconocimiento de voz no funcionará si se ha transferido una configuración regional no soportada.
|
No | 'en-us' |
storageType |
Mecanismo de almacenamiento web que se utiliza para almacenar el historial de conversaciones para usuarios cuyo userId lo ha transferido la aplicación del host. Los valores soportados son 'localStorage' y 'sessionStorage' . Las conversaciones de los usuarios anónimos siempre se almacenan en sessionStorage y se suprimen automáticamente una vez finalizada la sesión del explorador.
|
No | 'localStorage' |
targetElement |
Asigna un nombre al elemento div en el que el widget de chat se integra en la página web. Se hace referencia al elemento chat-container div en el siguiente fragmento como targetElement: 'chat-container' :
Consulte el tutorial del SDK web para saber cómo agregar y aplicar estilo al elemento div .
|
No | N/D |
theme |
Tema de diseño principal. Hay tres temas disponibles: 'default' , 'redwood-dark' y 'classic' .
|
No | default |
timestampFormat |
Formatea el registro de hora de entrega que acompaña a los mensajes. Acepta valores en un objeto DateTimeFormat options o como cadena de patrón, como se describe en Personalización del registro de horaNota: controla el registro de hora del mensaje, no el registro de hora de la cabecera. . |
No |
|
timestampHeaderFormat |
Personalice el formato de registro de hora en la cabecera del mensaje. Puede utilizar un objeto DateTimeFormat options o una cadena de patrón, como se describe en Personalización del registro de hora.
|
No | N/D |
timestampHeaderMode |
Configura las cabeceras de registro de hora que aparecen encima del primer mensaje del día. 'absolute' (formato por defecto) muestra el registro de hora completo en formato absoluto, 'relative' lo muestra en un formato relativo y 'none' oculta por completo la cabecera de registro de hora.
|
No | absolute |
timestampMode |
Configura el modo de visualización de registro de hora como registros de hora absolutos que aparecen en cada mensaje, o bien como un registro de hora relativo que aparece solo en el último mensaje.
Nota: controla el registro de hora del mensaje, no el registro de hora de la cabecera. |
No | default (para registros de hora absolutos) o relative .
|
ttsService |
Matriz que contiene voces preferidas utilizadas para hablar respuestas a través de texto a voz (TTS). Cada elemento de la matriz debe ser un objeto con al menos uno de los siguientes campos: lang y name . El primer elemento que coincida con una voz que esté disponible en el sistema se utilizará para el TTS.
|
No | oracle |
typingIndicatorTimeout |
Define el número de segundos tras los cuales el indicador de escritura se elimina automáticamente si el widget de chat aún no ha recibido respuesta. | No | 20 |
typingStatusInterval |
Define el intervalo, en segundos, para limitar el estado de escritura que se envía al agente activo. | No | 3 |
webViewConfig |
Personaliza la vista web del widget. | No | { referrerPolicy: 'no-referrer-when-downgrade', closeButtonType: 'icon', size: 'tall' } |
Leer más y leer menos botones para respuestas de aptitudes de varios párrafos
Puede optimizar la experiencia del usuario para mensajes de aptitudes de varios párrafos agregando los botones Leer más y Leer menos.
Descripción de la ilustración readmore.png
Puede agregar el código del lado del cliente para estos botones, que ocultan y muestran párrafos, mediante el objeto delegate
y las funciones personalizadas.
- En
settings.js
, defina un objetodelegate
con una función de devolución de llamadabeforeDisplay
en la declaraciónconst chatSettings
:
Si el mensaje es de tipodelegate: { beforeDisplay: function (message) { var messagePayload = message && message.messagePayload; if (messagePayload.type === 'text') { messagePayload.text = splitParagraph(messagePayload.text); } return message; } }
text
,beforeDisplay
llama a la funciónsplitParagraph
personalizada para dividir el texto por el primer párrafo. - Declare las variables para las funciones de vista personalizadas
splitParagraph
ytoggleParagraph
:var PREFIX_DOTS = 'dots_'; var PREFIX_MORE = 'more_'; var PREFIX_TOGGLE = 'toggle_button';
- Agregue la expresión de la función
splitParagraph
y la funcióntoggleParagraphView
.splitParagraph
es un IIFE (expresión de función invocada inmediatamente) que aísla la variableglobalIDCounter
para que solo la funciónsplitParagraph
pueda acceder a ella. El código identifica un párrafo ("\n\n"
) y divide el texto en consecuencia. A continuación, agrega tres puntos (...) para indicar que hay más texto que mostrar y un botón Leer más para mostrar el texto restante.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'; } }
- Configure y (opcionalmente) aplique estilo a los botones Leer más y Leer menos. CSS incluye un estilo
display:none
para mostrar u ocultar botones según el estado de la visualización de texto largo.- Si no desea aplicar estilo a los botones, agregue el siguiente código:
<style> .more { display: none; } </style>
- Si quieres darle estilo a los botones, puedes hacer algo como esto:
<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 no desea aplicar estilo a los botones, agregue el siguiente código:
Diseño
- Definir la posición del widget en la página web.
- Definir las dimensiones, los colores y el estilo de fuente del widget de chat.
- Definir el relleno de los mensajes en el widget.
- Definir la posición del icono de insignia de notificación con respecto al botón de bot.
- Definir la posición inicial de la conversación en el 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>
Propiedad | Descripción | ¿Obligatoria? | Valor por Defecto |
---|---|---|---|
actionsLayout |
Establece la dirección de diseño para las acciones locales. Cuando se define como horizontal , estos botones se presentan horizontalmente y se ajustan si el contenido se desborda.
|
No | vertical |
badgePosition |
Posición del icono de insignia con respecto al botón de icono. | No | {"top": "0", "right": "0"} |
cardActionsLayout |
Establece la dirección de diseño para las acciones de tarjeta. Cuando se define como horizontal , estos botones se presentan horizontalmente y se ajustan si el contenido.
|
No | vertical |
colors |
Colores utilizados en el widget de chat. | No | {"branding": "#1B8FD2", "text": "#212121", "textLight": "#737373"} |
conversationBeginPosition |
Posición inicial de la conversación en el widget. Si se define en top , los primeros mensajes aparecen en la parte superior del widget. Si se define en bottom , la conversación se inicia en la parte inferior.
|
No | bottom |
font |
Fuente utilizada en el widget de chat. | No | 16px "Oracle Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue |
fontFamily |
Familia de fuentes utilizada para todo el texto del widget de chat. Esta preferencia de configuración sobre la configuración font .
|
No | "Oracle Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue" |
fontSize |
Tamaño de fuente que se utilizará para el texto de cabecera, burbuja y pie de página en el widget. Este valor tiene prioridad sobre la configuración font .
|
No | 16px |
globalActionsLayout |
Define la dirección de diseño para las acciones globales. Si se establece "horizontal", los botones se colocan horizontalmente y se ajustan si el contenido se desborda. | No | vertical |
height |
Altura de un ancho de chat según la definición de uno de los valores de tipo de dato <longitud>. | No | 70vh |
messagePadding |
Relleno de los mensajes en el widget de chat. | No | 15px |
position |
Ubicación del widget de chat en la ventana del explorador. Esto se debería transferir como objeto JSON. | No | {bottom: '20px', right: '20px'} |
width |
Ancho del widget del chat según la definición en uno de los valores de tipo de dato <longitud>. | No | 30vw |
Iconos de botón de cabecera personalizada



colors.headerButtonFill
en la configuración inicial.
La personalización de color puede no funcionar para todos los SVG, ya que pueden tener varios colores o tener su propio trazo y colores de relleno.
Icono | Función | Indicador de función | Personalización |
---|---|---|---|
Borrar Mensaje | Borra los mensajes actuales y antiguos de la conversación. | enableClearMessage: true |
'<image URL | SVG string>' |
Respuesta de audio | Conmuta el audio de las respuestas de aptitud a medida que se reciben. Este botón de conmutación tiene dos estados, con la expresión activada, en el que se hablan las respuestas, y con la expresión desactivada, en el que no se hablan las respuestas. | enableBotAudioResponse: true |
|
Cierre | Contrae el widget y muestra el botón de inicio ![]() |
Ninguno: este icono siempre está activado en el widget de chat. No se muestra en el modo embebido. | closeIcon : '<image URL | SVG string>' |
Colores personalizados
- Puede transferir la configuración
colors
:colors: { "branding": "#e00", "text": "#545454" },
- O puede utilizar variables CSS definidas en el envoltorio de chat (
.oda-chat-wrapper
):.oda-chat-wrapper { --color-branding: '#e00'; --color-text: '#545454'; } }
Consejo:
Se recomienda cambiar los colores utilizando variables CSS.Variable CSS | Clave | Descripción |
---|---|---|
--color-actions-background |
actionsBackground |
Color de fondo de los botones de acción |
--color-actions-background-hover |
actionsBackgroundFocus |
Color de fondo de los botones de acción cuando están enfocados. |
--color-actions-background-focus |
actionsBackgroundHover |
Color de fondo de los botones de acción al pasar el cursor |
--color-actions-border |
actionsBorder |
Color del borde de los botones de acción |
--color-actions-text |
actionsText |
Color de texto de los botones de acción |
--color-actions-text |
actionsTextFocus |
Color de texto de los botones de acción al enfocar |
--color-actions-text-focus |
actionsTextHover |
Color de texto de los botones de acción al pasar el cursor |
--color-user-message-background |
botMessageBackground |
Color del fondo de la burbuja del mensaje de respuesta de la aptitud |
--color-bot-text |
botText |
Color del texto de un mensaje enviado por la aptitud |
--color-branding |
branding |
Color principal de la marca del widget. Este color se utiliza como fondo de cabecera y como color al pasar el cursor en los botones de pie de página. |
--color-card-background |
cardBackground |
Color de fondo que se utiliza para una tarjeta. |
--color-conversation-background |
conversationBackground |
Color utilizado para el fondo del panel de conversación. |
--color-danger-actions-background |
dangerActionsBackground |
Color de fondo del botón de acción de peligro |
--color-danger-actions-background-focus |
dangerActionsBackgroundFocus |
Color de fondo del botón de acción de peligro en el enfoque |
--color-danger-actions-background-hover |
dangerActionsBackgroundHover |
Color de fondo del botón de acción de peligro al pasar el cursor |
--color-danger-actions-border |
dangerActionsBorder |
Color de borde de botón de acción de peligro |
--color-danger-actions-text |
dangerActionsText |
Color de texto de botón de acción de peligro |
--color-danger-actions-text-focus |
dangerActionsTextFocus |
Color de texto del botón de acción de peligro al enfocar |
--color-danger-actions-text-hover |
dangerActionsTextHover |
Color de texto del botón de acción de peligro al pasar el cursor |
--color-danger-form-actions-background |
dangerFormActionsBackground |
Color de fondo de las acciones de peligro en los mensajes de tabla, formulario, formulario de tabla y formulario de edición |
--color-danger-form-actions-background-focus |
dangerFormActionsBackgroundFocus |
Color de fondo de las acciones de peligro en el foco de los mensajes de tabla, formulario, formulario de tabla y formulario de edición |
--color-danger-form-actions-background-hover |
dangerFormActionsBackgroundHover |
Color de fondo de las acciones de peligro al pasar el mouse en los mensajes de tabla, formulario, formulario de tabla y edición de formulario |
--color-danger-form-actions-border |
dangerFormActionsBorder |
Color de borde de las acciones de peligro en los mensajes de tabla, formulario, formulario de tabla y formulario de edición |
--color-danger-form-actions-text |
dangerFormActionsText |
Color de texto de las acciones de peligro en los mensajes de tabla, formulario, formulario de tabla y formulario de edición |
--color-danger-form-actions-text-focus |
dangerFormActionsTextFocus |
Color de texto de las acciones de peligro en el foco en los mensajes de tabla, formulario, formulario de tabla y formulario de edición |
--color-danger-form-actions-text-hover |
dangerFormActionsTextHover |
Color de texto de las acciones de peligro al pasar el mouse en los mensajes de tabla, formulario, formulario de tabla y formulario de edición |
--color-error-border |
errorBorder |
Color de borde de una burbuja de mensaje de error. El color se utiliza como color de borde del mensaje de error de nivel de formulario que se muestra en los mensajes de edición de formulario. |
--color-error-message-background |
errorMessageBackground |
Color de fondo de una burbuja de mensaje de error. El color se utiliza como color de fondo del mensaje de error de nivel de formulario que se muestra en los mensajes de edición de formulario. |
--color-error-title |
errorTitle |
Color de título del contenido del mensaje de error. El color se utiliza como color de texto de error del mensaje de error de nivel de formulario que se muestra en los mensajes de edición de formulario. |
--color-footer-background |
footerBackground |
Color utilizado para el fondo del pie de página. |
--color-footer-button-fill |
footerButtonFill |
Color de relleno de un icono SVG que se utiliza en los botones situados en el pie de página del chat. |
--color-form-actions-background |
formActionsBackground |
El color de fondo de las acciones de la forma |
--color-form-actions-background-focus |
formActionsBackgroundFocus |
Color de fondo de las acciones de formulario en el enfoque |
--color-form-actions-background-hover |
formActionsBackgroundHover |
Color de fondo de las acciones de formulario al pasar el mouse |
--color-form-actions-border |
formActionsBorder |
Color de borde de acciones de formulario |
--color-form-actions-text |
formActionsText |
Color de texto de las acciones de formulario |
--color-form-actions-text-focus |
formActionsTextFocus |
Color de texto de las acciones de formulario en el enfoque |
--color-form-actions-text-hover |
formActionsTextHover |
Color de texto de las acciones de formulario al pasar el mouse |
--color-form-background |
formBackground |
Color de fondo de los formularios |
--color-form-error |
formError |
El color de relleno SVG del icono en los mensajes de error de nivel de campo y de formulario que se muestran en los mensajes de edición de formulario. El color se utiliza como color de borde del campo de entrada tras un error en los mensajes de edición de formulario. |
--color-form-error-text |
formErrorText |
Color de texto de un mensaje de error de nivel de campo que se muestra en los mensajes de edición de formulario |
--color-form-header-background |
formHeaderBackground |
El color de fondo de los títulos de las formas |
--color-form-header-text |
formHeaderText |
Color del texto de los títulos de formularios |
--color-form-input-background |
formInputBackground |
Color de fondo de los campos de entrada en los mensajes de edición de formulario |
--color-form-input-border |
formInputBorder |
Color de borde de los campos de entrada en los mensajes de edición de formulario |
--color-form-input-border-focus |
formInputBorderFocus |
Color de borde de los campos de entrada en el foco en los mensajes de edición de formulario |
--color-form-input-text |
formInputText |
Color de texto de los campos de entrada en los mensajes de edición de formulario |
--color-form-label |
formLabel |
El color de las etiquetas del formulario |
--color-form-text |
formText |
El color del texto de los formularios |
--color-global-actions-background |
globalActionsBackground |
Color de fondo de los botones de acción global |
--color-global-actions-background-focus |
globalActionsBackgroundFocus |
Color de fondo de los botones de acción global cuando están enfocados. |
--color-global-actions-background-hover |
globalActionsBackgroundHover |
Color de fondo al pasar el cursor sobre los botones de acción global. |
--color-global-actions-border |
globalActionsBorder |
Color de borde de los botones de acción global |
--color-global-actions-text |
globalActionsText |
Color de texto de los botones de acción global |
--color-global-actions-text-focus |
globalActionsTextFocus |
Color del texto en los botones de acción global cuando están enfocados. |
--color-global-actions-text-hover |
globalActionsTextHover |
Color del texto en los botones de acción global cuando los usuarios pasan el cursor sobre ellos. |
--color-header-background |
headerBackground |
Color de fondo de la cabecera del widget de chat |
--color-header-button-fill |
headerButtonFill |
Color de relleno de los iconos SVG que se utilizan para los botones en la cabecera de chat |
--color-header-text |
headerText |
Color del título de la cabecera del chat |
--color-input-background |
inputBackground |
Color de fondo del campo de entrada de mensaje en el pie de página del chat |
--color-input-text |
inputText |
Color de texto de entrada de mensaje en el pie de página del chat |
--color-links |
links |
Color de los enlaces embebidos en los mensajes de aptitud |
--color-error-border |
N/D | Color de borde de una burbuja de mensaje de error |
--color-error-message-background |
N/D | Color de fondo de una burbuja de mensaje de error |
--color-error-text |
N/D | Color de descripción del contenido de un mensaje de error |
--color-error-title |
N/D | Color de título del contenido de un mensaje de error |
--color-footer-button-background-hover |
N/D | Color de fondo de los botones del pie de página al pasar el cursor |
--color-footer-button-fill-hover |
N/D | Color de relleno del pie de página de cabecera al pasar el mouse |
--color-header-button-background-hover |
N/D | Color de fondo de los botones de la cabecera al pasar el cursor |
--color-header-button-fill-hover |
N/D | Color de relleno de los botones de cabecera al pasar el mouse |
--color-input-border |
N/D | Color de borde del campo de entrada |
--color-user-links |
N/D | Color de los enlaces que están incrustados en los mensajes de usuario. |
--color-popup-background |
N/D | El color de fondo de las peticiones de datos y las ventanas emergentes |
--color-popup-button-background |
N/D | Color de fondo de los botones emergentes |
--color-popup-button-text |
N/D | Color de texto de los botones emergentes |
--color-popup-horizontal-rule |
N/D | Color de regla horizontal para separador para acción de menú de chat de varios idiomas |
--color-popup-item-background-hover |
N/D | El color de fondo al pasar el mouse sobre los elementos de la lista emergente |
--color-popup-text |
N/D | Color de texto e icono de las peticiones de datos y las ventanas emergentes |
--color-table-background |
N/D | Color de fondo de las tablas |
--color-table-header-background |
N/D | Color de fondo de las cabeceras de tabla |
--color-table-separator |
N/D | Color de separador de las filas de la tabla |
--color-table-text |
N/D | Color de texto de las tablas |
--color-notification-badge-background |
notificationBadgeBackground |
Color de fondo para el globo de notificaciones del mensaje |
--color-notification-badge-text |
notificationBadgeText |
Color del texto para el recuento de mensajes en el globo de notificaciones |
--color-primary-actions-background |
primaryActionsBackground |
Color de fondo del botón de acción principal |
--color-primary-actions-background-focus |
primaryActionsBackgroundFocus |
Color de fondo del botón de acción principal en el enfoque |
--color-primary-actions-background-hover |
primaryActionsBackgroundHover |
Color de fondo del botón de acción principal al pasar el cursor |
--color-primary-actions-border |
primaryActionsBorder |
Color de borde de botón de acción principal |
--color-primary-actions-text |
primaryActionsText |
Color de texto de botón de acción principal |
--color-primary-actions-text-focus |
primaryActionsTextFocus |
Color de texto del botón de acción principal al enfocar |
--color-primary-actions-text-hover |
primaryActionsTextHover |
Color de texto del botón de acción principal al pasar el cursor |
--color-primary-form-actions-background |
primaryFormActionsBackground |
Color de fondo de las acciones principales en los mensajes de tabla, formulario, formulario de tabla y edición de formulario |
--color-primary-form-actions-background-focus |
primaryFormActionsBackgroundFocus |
Color de fondo de las acciones principales enfocadas en los mensajes de tabla, formulario, formulario de tabla y edición de formulario |
--color-primary-form-actions-background-hover |
primaryFormActionsBackgroundHover |
Color de fondo de las acciones principales al pasar el mouse en los mensajes de tabla, formulario, formulario de tabla y edición de formulario |
--color-primary-form-actions-border |
primaryFormActionsBorder |
Color de borde de las acciones principales en los mensajes de tabla, formulario, formulario de tabla y edición de formulario |
--color-primary-form-actions-text |
primaryFormActionsText |
Color de texto de las acciones principales en los mensajes de tabla, formulario, formulario de tabla y edición de formulario |
--color-primary-form-actions-text-focus |
primaryFormActionsTextFocus |
Color de fondo de las acciones principales enfocadas en los mensajes de tabla, formulario, formulario de tabla y edición de formulario |
--color-primary-form-actions-text-hover |
primaryFormActionsTextHover |
Color de fondo de las acciones principales al pasar el mouse en los mensajes de tabla, formulario, formulario de tabla y edición de formulario |
--color-rating-star |
ratingStar |
Color que se aplica a las estrellas de calificación en un mensaje de comentarios cuando los usuarios pasan el mouse sobre ellas o las seleccionan. Si no se especifica ningún color, se utiliza en su lugar el color branding .
|
N/D | recognitionViewBackground |
Color de fondo de la vista en la que se muestra el texto reconocido cuando los usuarios activan el modo de voz. Si no define este color, se utiliza en su lugar el color definido para headerBackground .
|
N/D | recognitionViewButtonFill |
El color de relleno SVG para el modo de voz-texto se alterna cuando los usuarios cambian al modo de voz. |
--color-recognition-view-text |
recognitionViewText |
Color que se utiliza para el texto reconocido de la entrada de voz del usuario. Si no se define este color, se utiliza en su lugar el color definido para text .
|
N/D | shareMenuText |
Color utilizado para las opciones del menú Compartir. Este color sustituye el valor definido para la clave de texto, si se transfiere. |
--color-table-actions-background-focus |
tableActionsBackgroundFocus |
Color de fondo de las acciones de la tabla en el enfoque |
--color-table-actions-text-focus |
tableActionsTextFocus |
Color de texto de las acciones de la tabla en el enfoque |
--color-table-actions-text-hover |
tableActionsTextHover |
Color de texto de las acciones de la tabla al pasar el mouse |
--color-text |
text |
Color de texto de los mensajes del widget de chat. |
-color-text-light |
textLight |
Color del texto secundario en los mensajes, como las descripciones de tarjeta en el widget de chat. |
--color-timestamp |
timestamp |
Color del registro de hora relativo. |
--color-typing-indicator |
typingIndicator |
Color de relleno de fondo que se utiliza para el indicador de escritura. |
N/D | userMessageBackgound |
Color de fondo de la burbuja que se utiliza para los mensajes de usuario. |
--color-user-text |
userText |
Color del texto de un mensaje enviado por el usuario. |
--color-visualizer |
visualizer |
Color que se utiliza para las barras del gráfico del visualizador. Si no se define este color, se utiliza en su lugar el color definido para branding .
|
--color-visualizer-container-background |
visualizerContainerBackground |
Color de fondo del contenedor del visualizador de voz que se muestra cuando los usuarios cambian al modo de voz. Si no se define este color, se utiliza en su lugar el color definido para userMessageBackgound .
|
Puede definir una imagen para
conversationBackground
, headerBackground
y footerBackground
. Estos campos pueden aceptar cualquier parámetro que se pueda transferir a la propiedad en segundo planode CSS. Por ejemplo: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")'},
Iconos personalizados
Puede personalizar los iconos, incluidos los del icono de aptitud, el icono del logotipo de chat y los iconos del avatar para la aptitud y el usuario.
Consejo:
Las cadenas SVG se cargan más rápidamente que los activos de imagen. También le permiten incluir animación en la imagen y cambiar su color. El diseño definido para la propiedadtheme
se aplica a las cadenas SVG para los botones de anexo, envío y micrófono, pero no para los demás activos de imagen.
icons
para agrupar todos los iconos personalizados en un solo campo. Los iconos anteriores a la versión 21.10 siguen soportados, pero los valores transferidos con el objeto icons
tienen prioridad. Todos los campos del objeto icons
soportan rutas de acceso de recursos de imagen y cadenas SVG raw.const settings = {
// ...,
icons: {
rating: '<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24"><path d="M15.994 3.006a5.7 5.7 0 00-3.795 1.707L12 4.916l-.199-.202a5.676 5.676 0 00-8.128 0c-2.231 2.275-2.231 5.953 0 8.228L12 21.428l8.326-8.486A5.873 5.873 0 0022 8.828a5.873 5.873 0 00-1.675-4.115A5.693 5.693 0 0016.262 3z"/></svg>'
}
};
Propiedad (versión 21.10) | Propiedad (versiones anteriores) | Descripción | ¿Es compatible la cadena SVG? |
---|---|---|---|
avatarAgent |
agentAvatar |
Para las habilidades integradas con agentes en directo, este icono se muestra junto con los mensajes del agente en directo. avatarBot (o agentAvatar ) aparece si esta propiedad no está definida.
|
Sí |
avatarbot |
botIcon |
Icono que aparece junto al mensaje de respuesta de la aptitud. Este icono de aptitud solo se muestra si se proporciona este icono. De lo contrario, no se muestra ningún icono. | Sí |
avatarUser |
personIcon |
Icono que aparece junto a los mensajes de usuario. Este icono no se muestra por defecto: solo se muestra si se define. | Sí |
clearHistory |
clearMessageIcon |
Icono de botón Borrar mensaje que se encuentra en la cabecera del widget | Sí |
close |
N/D | Icono que se muestra para el botón de cierre en banners de mensajes de error, vistas previas de imágenes ampliadas y el widget WebView. | Sí |
collapse |
closeIcon |
Icono del botón, situado en la cabecera de la vista de chat, que minimiza la vista de chat. | Sí |
download |
downloadIcon |
Icono utilizado para el botón de descarga de anexo que aparece en cada mensaje de anexo enviado por la aptitud. | download : sí
|
error |
errorIcon |
Dirección URL de la imagen utilizada para el icono de error. |
|
expandImage |
expandImageIcon |
El icono utilizado para el control de ampliación de imagen que aparece en cada mensaje de anexo de imagen enviado por la aptitud. | expandImage : sí
|
fileAudio |
audioIcon |
Icono de anexo de audio, que se muestra cuando no se puede acceder a la URL de origen de anexo. |
|
fileGeneric |
fileIcon |
icono de anexo de archivo. |
|
fileImage |
imageIcon |
Icono de anexo de imagen, que se muestra cuando no se puede acceder al origen de anexo. |
|
fileVideo |
videoIcon |
Icono de anexo de vídeo, que se muestra cuando no se puede acceder a la URL de origen de anexo. |
|
keyboard |
keyboardIcon |
Icono del teclado, que se muestra en el botón que cambia del modo de voz al modo de teclado. | Sí |
launch |
botButtonIcon |
Botón de bot de aptitud, que se muestra al minimizar el widget de chat. |
|
logo |
logoIcon |
Icono de logotipo de chat que se muestra en la cabecera del widget de chat |
|
mic |
micIcon |
Icono del botón Mic en el pie de página del widget de chat que aparece cuando | Sí |
rating |
N/D | Icono que se muestra para los botones de acción de comentarios en el componente de calificaciones. Para obtener la mejor experiencia de usuario para la acción de pasar el mouse, pase una cadena de iconos SVG rellena. | rating : sí
|
send |
sendIcon |
Icono de botón de envío de mensaje | Sí |
shareMenu |
attachmentIcon |
Icono de carga de anexo | Sí |
shareMenuAudio |
N/D | Icono de la opción de menú de audio en la ventana emergente del menú compartido. | Sí |
shareMenuFile |
N/D | Icono de la opción de menú Archivo en la ventana emergente del menú Compartir. | Sí |
shareMenuLocation |
N/D | Icono del botón del menú compartir en la ventana emergente del menú compartir. | Sí |
shareMenuVisual |
N/D | El icono de la opción de menú de imagen/vídeo en la ventana emergente del menú compartido | Sí |
ttsOff |
audioResponseOffIcon |
Icono para el botón conmutador cuando las respuestas de audio están desactivadas. | Sí |
ttsOn |
audioResponseOnIcon |
Icono para el botón conmutador cuando las respuestas de audio están activadas. | Sí |
typingIndicator |
chatBubbleIcon |
Icono animado en el panel de conversación que indica que se está enviando una respuesta desde la aptitud. | Sí |
chatBubbleIcon
).
Nombre de la propiedad | Descripción | ¿Obligatoria? | Valor por Defecto |
---|---|---|---|
chatBubbleIconHeight |
Altura del icono de carga de la burbuja de chat. | No | 42px |
chatBubbleIconWidth |
Ancho del icono de carga de la burbuja de chat. | No | 56px |
Cadenas Personalizadas
en-us
. Si no lo desea, se mostrarán las traducciones en-us
para los valores que faltan."i18n": {
"fr": {
"chatTitle": "Soutien"
},
"en-us": {
"chatTitle": "Support"
},
"es": {
"chatTitle": "Apoyo"
},
"zh-cn": {
"chatTitle": "支持"
}
}
Si se proporcionan cadenas personalizadas para cualquier configuración regional que no sea en
, se deben especificar todas las claves para esa configuración regional. De lo contrario, se muestran las traducciones en
para los valores que faltan.<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';
}
Clave | Descripción | Valor por Defecto |
---|---|---|
agent |
Texto utilizado para el agente | 'Agent' |
agentMessage |
Indicador de mensaje de aptitud para lectores de pantalla. Lo leen los lectores de pantalla antes que las respuestas de la aptitud. El texto (`{0}` ) se sustituye por el nombre del agente.
|
`'{0} says'` |
attachment_audio |
Texto que se utiliza para la expresión TTS de un archivo adjunto de audio. | 'Audio attachment' |
attachment_file |
Texto que se utiliza para la expresión TTS de un anexo de archivo. | 'File attachment' |
attachment_image |
Texto que se utiliza para la expresión TTS de un anexo de imagen. | 'Image attachment' |
attachment_video |
Texto que se utiliza para la expresión TTS de un anexo de vídeo. | 'Video attachment' |
attachmentAudioFallback |
Mensaje de reserva que se muestra en lugar de un anexo de audio si el cliente no puede representar el audio. El texto entre {0} y {/0} se define en un enlace para descargar el archivo.
|
Your browser does not support embedded audio. However you can {0}download it{/0}. |
attachmentVideoFallback |
Mensaje de reserva que se muestra en lugar de un anexo de vídeo si el cliente no puede representar el vídeo. El texto entre {0} y {/0} se define en un enlace para descargar el archivo.
|
Your browser does not support embedded video. However you can {0}download it{/0} .
|
audioResponseOn |
Pista que aparece cuando el usuario pasa el puntero sobre el botón"desactivado" de una expresión de audio en la cabecera. | Turn audio response on |
avatarAgent |
Texto alternativo utilizado para el icono de agente que se muestra junto a los mensajes de agente. | Agent icon |
avatarBot |
Texto alternativo utilizado para el icono de aptitud que se muestra junto a los mensajes de aptitud. | Bot icon |
avatarUser |
Texto alternativo utilizado para el icono de usuario que se muestra junto a los mensajes de usuario. | User icon |
card |
Identificador de la tarjeta. | 'Card {0}' . Puede localizar la cadena colocando el marcador de posición ordinal ({0} ) antes o después de la palabra. Continuaremos admitiendo la cadena 'Card' utilizada en versiones anteriores que no incluye el marcador de posición ordinal. Para esta cadena, el ordinal se coloca después de la palabra. Si desea silenciar la expresión, transfiera una cadena vacía (card: '' ).
|
cardImagePlaceholder |
Texto del marcador de posición que se muestra mientras se recupera y carga la imagen de la tarjeta. | Loading image |
cardImagePlaceholder |
Texto del marcador de posición que se muestra mientras se recupera y carga la imagen de la tarjeta. | Loading image |
cardNavNext |
Etiqueta del botón de navegación de la tarjeta para mostrar la siguiente tarjeta en un diseño horizontal. | Next card |
cardNavPrevious |
Etiqueta del botón de navegación de la tarjeta para mostrar la tarjeta anterior en un diseño horizontal. | Previous card |
chatSubtitle |
Define el subtítulo de la vista de chat, que aparece debajo del título en la cabecera de la vista de chat. Si el indicador de subtítulo está definido y (o ambos) indicadores showConnectionStatus y showTypingIndicator están definidos en true, se muestra el subtítulo en lugar del estado de conexión o el indicador de escritura.
|
N/D |
chatTitle |
Título del widget de chat que se muestra en la cabecera. | Ask |
clear |
Pista que aparece cuando el usuario pasa el cursor sobre el botón Borrar mensajes de la cabecera. | Clear |
close |
Pista que aparece cuando el usuario pasa el cursor por encima del botón Cerrar widget en la cabecera. | Close |
closing |
Texto de estado que se muestra mientras se cierra la conexión entre el widget de chat y el servidor. | Closing |
connected |
Texto de estado que se muestra mientras se establece la conexión entre el widget de chat y el servidor. | Connected |
connecting |
Texto de estado que se muestra cuando el widget de chat se conecta al servidor de chat. | Connecting |
connectionFailureMessage |
Mensaje de fallo que se muestra cuando el widget no se puede conectar a la aptitud. | Sorry, the assistant is unavailable right now. If the issue persists, contact your help desk. |
connectionRetryLabel |
La etiqueta del botón de reintento de conexión. | Try Again |
defaultGreetingMessage |
Respuesta de saludo de cliente por defecto que se muestra cuando la respuesta de aptitud no se ha recibido en el número de segundos definido por defaultGreetingTimeout. .
|
Hey, Nice to meet you! Allow me a moment to get back to you. |
defaultSorryMessage |
Respuesta de cliente por defecto cuando la respuesta de aptitud no se ha recibido el número de segundos definido por typingIndicatorTimeout .
|
Unfortunately, I am not able to get you the right content. Please try again. |
defaultWaitMessage |
La respuesta por defecto que se muestra en el intervalo en el que no se ha recibido una respuesta de aptitud real. Este intervalo se define, en segundos, por defaultWaitMessageInterval
|
I'm still working on your request. Thank you for your patience! |
disconnected |
Texto de estado que se muestra cuando se ha cerrado la conexión entre el widget de chat y el servidor. | Disconnected |
download |
Texto de accesibilidad para el botón de descarga que aparece en cada mensaje de anexo enviado por la aptitud. | Download |
endConversation |
Pista que aparece al pasar el mouse sobre el botón Finalizar encabezado de conversación. | End Conversation |
endConversationConfirmMessage |
Mensaje de confirmación que se muestra cuando un usuario hace clic en el botón Finalizar conversación. | Are you sure you want to end the conversation? |
endConversationDescription |
Mensaje de descripción que se muestra junto con el mensaje de confirmación en el campo de fin de conversación. | This will also clear your conversation history. |
errorSpeechInvalidUrl |
Mensaje de error que se muestra cuando la URL del servidor de voz no está definida. | ODA URL for connection is not set. Please pass 'URI' parameter during SDK initialization. |
errorSpeechMultipleConnection |
Mensaje de error que se muestra cuando se intentan varias conexiones de voz en un intervalo corto. | Another voice recognition is ongoing. Can't start a new one.' |
errorSpeechTooMuchTimeout |
Mensaje de error que se muestra cuando un usuario proporciona un mensaje de voz que es demasiado largo para ser reconocido. | Too much voice input to recognize. Can not generate recognized text. |
errorSpeechUnsupportedLocale |
Mensaje de error que se muestra cuando se intenta realizar una grabación y se ha configurado una configuración regional no soportada para el reconocimiento de voz. | The set speech locale is not supported. Cannot start recording. |
imageViewerClose |
Texto de accesibilidad para el botón que cierra la imagen ampliada. | Close image viewer |
imageViewOpen |
Texto de accesibilidad para el botón que amplía la imagen. | Open image viewer |
inputPlaceholder |
Texto del marcador de posición que aparece en el campo de entrada del usuario. | Type a message |
itemIterator |
Identificador de elemento en una lista de elementos en un mensaje Table , Form o Table-Form . El texto ({0} ) se sustituye por el índice de elementos.
|
Item {0} |
language_<languageTag> |
Etiqueta del idioma representado por languageTag . Por ejemplo, English para en en la lista desplegable de selección de idioma que está disponible al configurar chat multilingüe. |
|
Language Label |
language_detect |
Etiqueta para la opción de detección automática en el menú desplegable de selección de idioma. | Detect Language |
languageSelectDropdown |
Pista que aparece cuando los usuarios pasan el mouse sobre el botón de selección de idioma en la cabecera. | Select chat language |
linkField |
Texto de expresión de sustitución para un campo de enlace en un mensaje Table , Form o Table-Form . El marcador de posición ({0} ) se sustituye por el valor linkLabel del campo.
|
Click on the highlighted text to open Link for {0} |
noSpeechTimeout |
Texto de estado que se muestra cuando el servidor de chat no puede reconocer la voz. | Could not detect the voice, no message sent. |
noText |
La etiqueta del botón de confirmación No. | No |
openMap |
Etiqueta del botón de acción que se utiliza para abrir una asignación de ubicación. | Open Map |
previousChats |
Texto de estado que se muestra al final de los mensajes más antiguos. | Previous conversations |
ratingStar |
Texto de pista que se muestra para cada estrella de calificación en un mensaje de comentarios. El marcador de posición `{0}` se sustituye por el número de estrellas que el usuario ha seleccionado.
|
Rate {0} star |
recognitionTextPlaceholder |
Cuando se activa el modo de voz, es el texto del marcador de posición que se muestra en el campo de texto de reconocimiento. | Speak your message |
relTimeDay |
El registro de hora relativo que aparece cada día desde que se ha recibido el mensaje anterior. {0} se sustituye por el número de días transcurridos.
|
{0}d ago |
relTimeHr |
El registro de hora relativo que se muestra cada hora durante las primeras 24 horas posteriores a la recepción del mensaje anterior. {0} se sustituye por el número de horas transcurridas.
|
{0}hr ago |
relTimeMin |
El registro de hora relativo que aparece cada minuto desde que se ha recibido el último mensaje. {0} se sustituye por el número de minutos transcurridos.
|
{0}min ago |
relTimeMoment |
Registro de hora relativo que se muestra diez segundos después de que se haya recibido el mensaje y antes de que transcurran 60 segundos desde que se haya recibido el último mensaje. | A few seconds ago |
relTimeMon |
Registro de hora relativo que aparece cada mes desde que se ha recibido el mensaje anterior. {0} se sustituye por el número de meses transcurridos.
|
{0}mth ago |
relTimeNow |
Registro de hora relativo que se muestra para un mensaje nuevo. | Now |
relTimeYr |
El registro de hora relativo que aparece cada año desde que se ha recibido el mensaje anterior. {0} se sustituye por el número de años transcurridos.
|
{0}yr ago |
requestLocation |
Texto que se muestra mientras se solicita la ubicación del usuario. | Requesting location |
requestLocationDeniedPermission
|
Mensaje de error que se muestra cuando se deniega el permiso para acceder a la ubicación. | Location permission denied. Please allow access to share your location, or else type in your location. |
requestLocationDeniedTimeout |
Mensaje de error que se muestra cuando no se resuelve la solicitud de ubicación debido a un timeout. | Taking too long to get your current location. Please try again, or else type in your location. |
requestLocationDeniedUnavailable |
Mensaje de error que se muestra cuando se deniega la solicitud de ubicación porque la ubicación actual del dispositivo de cliente no está disponible. | Your current location is unavailable. Please try again, or else type in your location. |
requestLocationString |
Texto de error que se muestra cuando el usuario deniega la solicitud de ubicación. | Cannot access your location. Please allow access to proceed further. |
retryMessage |
Texto que se muestra cuando el mensaje de usuario no se ha enviado al servidor. | Try again |
send |
La pista aparece cuando el usuario pasa el cursor por encima del botón de envío en el pie de página. | Send |
shareAudio |
Texto de la opción de menú en la ventana emergente Compartir para compartir un archivo de audio | Share Audio |
shareFailureMessage |
Mensaje de error que se muestra cuando se hace clic en el botón de compartir acción en un mensaje, pero la API para compartir no está disponible en el dispositivo de cliente o se ha rechazado la solicitud de compartir. | Sorry, sharing is not available on this device. |
shareFile |
Texto de la opción de menú en la ventana emergente Compartir para compartir un archivo genérico | Share File |
shareLocation |
Texto de la opción de menú para compartir una ubicación en la ventana emergente | Share Location |
shareVisual |
Texto de la opción de menú en la ventana emergente Compartir para compartir un archivo de imagen o de vídeo | Share Image/Video |
skillMessage |
Indicador de mensaje de aptitud para lectores de pantalla. Lo leen los lectores de pantalla antes que las respuestas de la aptitud. | Skill says |
speak |
La pista aparece cuando el usuario pasa el cursor por encima del botón Hablar en el pie de página. | Speak |
typingIndicator |
Texto de accesibilidad para el indicador de escritura. Es hablado por los lectores de pantalla. | Waiting for response |
upload |
La pista aparece cuando el usuario pasa el cursor por encima del botón Cargar en el pie de página. | Share popup |
uploadFailed |
Texto de error que se muestra cuando se produce un fallo durante una carga. | Upload Failed. |
uploadFileSizeLimitExceeded |
Texto de error que se muestra cuando el tamaño del archivo de carga supera el límite. | Upload Failed. File size should not be more than 25MB. |
uploadFileSizeZeroByte |
Texto de error que se muestra cuando el tamaño del archivo de carga es de 0 bytes. | Upload Failed. Files of size zero bytes cannot be uploaded. |
uploadUnsupportedFileType |
Texto de error que se muestra cuando se intenta realizar una carga para un tipo de archivo no soportado. | Upload Failed. Unsupported file type. |
userMessage |
Indicador de mensaje de usuario para lectores de pantalla. Lo hablan los lectores de pantalla antes que los mensajes de usuario. | I say |
utteranceGeneric |
Descripción de la devolución de llamada del mensaje de respuesta utilizado en la expresión. | Message from skill. |
webViewAccessibilityTitle |
Título de accesibilidad por defecto para la vista web que se lee en voz alta por lectores de pantalla. | In-widget WebView to display links |
webViewClose |
Título label/tooltip por defecto para el botón de cierre de la vista web.
|
Done |
webViewErrorInfoDismiss |
Pista del botón para descartar que se utiliza para cerrar el enlace de reserva dentro de la vista web. | 'Dismiss' |
webViewErrorInfoText |
Texto informativo que se muestra en la vista web cuando no se puede abrir el enlace en el que se haya hecho clic. El texto entre {0} y {/0} se define en el enlace original que se abre en un nuevo separador o ventana.
|
Sorry, we can't open this page in the chat window. Click {0}here{/0} to open it in your browser. |
yesText |
Etiqueta para el botón de confirmación Yes (Sí). | Yes |
editFieldErrorMessage |
Mensaje de error de nivel de campo que se muestra cuando el valor introducido por el usuario no es válido para ese campo. El SDK toma por defecto este mensaje cuando la aptitud no proporciona un mensaje de error del cliente. | Field Input is invalid |
editFormErrorMessage |
Mensaje de error de nivel de formulario que se muestra debajo de la acción de envío del formulario para la validación del cliente. Este mensaje se muestra cuando al menos uno de los campos no es válido y hay más de un campo. El SDK toma por defecto este mensaje cuando la aptitud no proporciona un mensaje de error en la carga útil del mensaje. | Some of the fields need your attention. |
noResultText |
Texto de estado que se muestra cuando no hay coincidencias de una búsqueda de usuario en la vista de lista de selección múltiple. | No more results |
Configuración de opciones del menú Compartir
- archivos de medios visuales (imágenes y vídeos)
- archivos de audio
- archivos generales, como documentos, archivos PDF y hojas de cálculo
- Ubicación
La configuración
shareMenuItems
permite restringir las opciones que se muestran en el menú Compartir. La configuración acepta una matriz de cadenas con claves asignadas a las opciones del menú Compartir: 'visual'
para la opción Compartir imagen/vídeo, 'audio'
para la opción Compartir audio, 'file'
para la opción Compartir archivo y 'location'
para la opción Compartir ubicación. Puede utilizar estas claves, que no son sensibles a mayúsculas/minúsculas, para especificar qué opciones están disponibles en el menú (['visual', 'location']
, por ejemplo). Todas las opciones de menú están disponibles cuando la matriz está vacía o cuando se transfiere un valor no válido.
Puede desactivar la funcionalidad de anexo definiendo
enableAttachment
en false
.
No active este valor si la aptitud se conecta a una instancia de ODA de la versión 20.08 o se ejecuta en cualquier versión anterior a la 20.08. Esta propiedad solo se aplica a las conexiones activadas por autenticación de cliente a las versiones 20.12 y superiores de la plataforma ODA.
Opciones de menú de uso compartido personalizadas
shareMenuItems
: {
type: string, // Space separated list of file formats, pass '*' to allow all supported file types
label: string, // OPTIONAL, label for the share menu item, should preferably be configured through i18n strings
icon?: string, // OPTIONAL, Icon image source path or SVG source string, the file icon is displayed as fallback
maxSize?: number // OPTIONAL, Maximum file size allowed for upload in KiloBytes, the maximum and fallback value is 25 MB (25600 KB)
}
La opción de menú se puede transferir con o sin la categoría string
.
Consejo:
Para soportar etiquetas en varios idiomas, se recomienda utilizar i18n en lugar de la etiquetalabel
.
shareMenuItems
en la variable settings
. Las etiquetas se definen transfiriéndolas con claves share_
, que también se muestran en este fragmento. Puede definir la etiqueta para un comodín (*
) mediante la clave share_all
i18n.const settings = {
shareMenuItems: [ {
type: 'odf',
label: 'Upload ODF',
}, {
type: 'pdf'
}, {
type: 'jpg png jpeg',
icon: 'https://image-source-site/imageicon'
}, {
type: 'doc docx xls',
maxSize: 4096
}],
i18n: {
en: {
share_pdf: 'Upload PDF',
share_jpg_png_jpeg: 'Upload Image',
share_doc_docx_xls: 'Upload document'
}
}
}
Personalización de clases CSS
Clase | Componente |
---|---|
oda-chat-launch-button
|
Botón de iniciador del widget de chat |
oda-chat-button-clear
|
Botón Borrar mensajes |
oda-chat-button-close
|
Botón Cerrar widget |
oda-chat-button-narration
|
Botón de alternancia de respuesta de audio de la aptitud |
oda-chat-button-send
|
Botón de envío de mensaje |
oda-chat-button-upload
|
Botón Cargar archivo |
oda-chat-card
|
Mensaje de la tarjeta |
oda-chat-closing
|
Se aplica como hermano a oda-chat-connection-status cuando el widget está desconectando del servidor
|
oda-chat-connected
|
Se aplica como hermano a oda-chat-connection-status cuando el widget está conectado al servidor
|
oda-chat-connecting
|
Se aplica como hermano a oda-chat-connection-status cuando el widget está conectando al servidor
|
oda-chat-connection-status
|
Estado de conexión. Cada valor de conexión tiene también su propia clase, como oda-chat-connected , oda-chat-disconnected u oda-chat-connecting .
|
oda-chat-conversation
|
Contenedor para la conversación |
oda-chat-disconnected
|
Se aplica como hermano a oda-chat-connection-status cuando el widget está desconectado del servidor
|
oda-chat-footer
|
Pie de página del widget de chat |
oda-chat-footer-button
|
Clase común para todos los botones del pie de página |
oda-chat-header
|
Cabecera del widget de chat |
oda-chat-header-button
|
Clase común para todos los botones de cabecera |
oda-chat-icon-wrapper
|
Envoltorio para la aptitud o para una persona que se muestra junto con el mensaje. |
oda-chat-left
|
Envoltorio para el mensaje de aptitud |
oda-chat-logo
|
Logotipo en la cabecera del widget |
oda-chat-message
|
Clase de envoltorio común para todos los mensajes de chat |
oda-chat-message-action-location
|
Botón de acción de solicitud de ubicación |
oda-chat-message-action-postback
|
Botón de acción de devolución. |
oda-chat-message-actions
|
Envoltorio de botones de acción |
oda-chat-message-bubble
|
burbuja del mensaje |
oda-chat-message-global-actions
|
Envoltorio de botones de acciones globales |
oda-chat-message-icon
|
Imagen para la aptitud o para una persona que se muestra junto con el mensaje. |
oda-chat-notification-badge
|
Insignia de notificación para los mensajes que no se han visto. |
oda-chat-rating-star
|
Botón de estrella de calificación en un mensaje de comentarios |
oda-chat-rating-star-icon
|
Icono SVG para el botón de estrella de calificación |
oda-chat-right
|
Envoltorio para el mensaje de usuario |
oda-chat-title
|
Título de la cabecera del widget |
oda-chat-user-input
|
Área de texto de entrada del usuario |
oda-chat-widget
|
Componente de chat ampliado, que encapsula la cabecera, conversación y el pie de página del widget. |
oda-chat-wrapper
|
Envoltorio para todo el componente de chat |
Personalización del registro de hora
Por defecto, el registro de hora que aparece en la cabecera cuando se definen timestampHeaderMode
y timestampHeaderFormat
muestra el formato como el día de la semana, el mes, la fecha, el año y la hora (a.m. y p.m.) de la configuración regional. Por ejemplo, Jueves, 13 de agosto, 2020, 9:52:22 AM. Puede configurar este registro de hora transfiriendo opciones de formato en la configuración timestampFormat
. Puede formatear el registro de hora transfiriendo una cadena de patrón de tokens de formato o un objeto que contenga opciones Intl.DateTimeFormat
.
Formateado de fecha y hora con cadenas de patrón
timestampFormat: 'hh:mm:ss a'
, se define el registro de hora como 09:30:14 pm.
Estos tokens son sensibles a mayúsculas/minúsculas, por lo que, por ejemplo, la transferencia de
yyyy
en lugar de YYYY
impediría que se muestre el año.
Componente | Elemento | Salida |
---|---|---|
Día del mes |
|
|
Día de la semana |
|
|
Mes |
|
|
Año |
|
|
Hora |
|
|
minuto |
|
|
segundo |
|
|
Segundo fraccionario |
|
|
AM/PM |
|
|
Zona Horaria |
|
|
Formateo del registro de hora con objetos Intl.DateTimeFormat
Propiedad | Valores |
---|---|
dateStyle |
'full' | 'long' | 'medium' | 'short' |
timeStyle |
'full' | 'long' | 'medium' | 'short' |
weekday |
|
day |
|
month |
|
year |
|
era |
|
hour |
|
minute |
|
second |
|
timeZoneName |
|
timeZone |
Zona horaria. Todas las implantaciones deben reconocer UTC . El valor por defecto es la zona horaria por defecto del tiempo de ejecución. Las implantaciones también pueden reconocer los nombres de zona horaria de la base de datos de zona horaria IANA, como Asia/Shanghai , Asia/Kolkata , America/New_York .
|
hour12 |
Indica si se debe utilizar el formato de 12 horas (en lugar del formato de 24 horas). Los valores son true y false .
|
Personalizar el indicador de calificación de mensajes de comentarios
El mensaje de componente de comentarios permite recopilar comentarios de los usuarios. Si utiliza el SDK 21.10, la presentación por defecto del componente de comentarios es un sistema de clasificación por estrellas, una fila horizontal de estrellas que se resaltan cuando los usuarios pasan el mouse sobre ellas y las seleccionan. Puede cambiar el comportamiento del componente mediante el componente Comentarios del usuario, pero puede personalizar la apariencia de los componentes mediante la configuración del SDK.
rating
en el campo icons
.
Consejo:
Para una mejor experiencia de usuario, utilice una cadena SVG sólida sin color de relleno, ya que permite un resaltado reconocible al pasar el mouse.new WebSDK({
URI: '<Server URI>',
//...,
icons: {
rating: '<svg height="24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M15.994 3.006a5.7 5.7 0 00-3.795 1.707L12 4.916l-.199-.202a5.676 5.676 0 00-8.128 0c-2.231 2.275-2.231 5.953 0 8.228L12 21.428l8.326-8.486A5.873 5.873 0 0022 8.828a5.873 5.873 0 00-1.675-4.115A5.693 5.693 0 0016.262 3z"/></svg>' // A heart icon
}
})
El color del icono en los dos estados, sin seleccionar y con el mouse/seleccionado, se puede configurar con los campos de color ratingStar
y ratingStarFill
en la configuración de colores, respectivamente.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'
}
})
Consejo:
Puede personalizar la salida de las peticiones de datos mediante el componente Comentarios del usuario editando los grupos de recursos relacionados con los comentarios a los que se accede a través de la página Configuración de grupo de recursos o editando las clavessystemComponent_Feedback_
en un archivo CSV de grupo de recursos exportado.
Envío del mensaje inicial cuando el historial de conversaciones está vacío
initUserHiddenMessage
se envían independientemente del historial de conversaciones del usuario; se envían la primera vez que se abre el widget de chat para cada sesión. Para enviar el mensaje inicial cuando el historial de conversaciones está vacío, debe enlazar un listener de evento al método Bots.on()
. Por ejemplo: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();
Inyección de servicio de síntesis de voz
- A menudo estás limitado a voces antinaturales que suenan genéricas que pueden socavar tu marca.
- Es posible que el dispositivo de un usuario no admita voces específicas de género.
- Algunos marcos nativos (Cordova y ReactNative entre ellos) requieren bibliotecas de terceros para los servicios TTS porque sus vistas web no exponen las API nativas de síntesis de voz que requiere el SDK web.
ttService
o llamando al método setTTSService
(que se describe en la documentación que acompaña al SDK). Puede utilizar un servicio proporcionado por Oracle, como el servicio de voz de Oracle Cloud Infrastructure (OCI), o uno proporcionado por un tercero.
Texto a voz
- Indicador de función:
enableBotAudioResponse: true
(el valor por defecto esfalse
). - Servicio TTS predeterminado:
WebSDK.TTS.oracle
- Configuración de función:
ttsVoice
Puede enriquecer la experiencia conversacional permitiendo que el texto a voz (TTS) hable las respuestas a medida que llegan al SDK. El SDK proporciona dos tipos de servicio TTS listos para usar: WebSDK.TTS.platform
y WebSDK.TTS.oracle
. Por defecto, el SDK utiliza el servicio de voz de Oracle Cloud Infrastructure (OCI) para las respuestas habladas en un tono más naturalista. Este servicio proporciona una experiencia de marca fácil porque ofrece varias voces. Sin embargo, puede utilizar el servicio TTS dependiente de la plataforma, WebSDK.TTS.platform
, que se basa en la API de Web Speech. Utiliza las API de síntesis de voz en el dispositivo del usuario para expresar las respuestas.
ttsVoice
para configurar la voz para el TTS. Cada elemento de la matriz debe ser un objeto que tenga al menos un campo lang
o un campo name
. El SDK busca la disponibilidad de cada voz en el orden en que se transfieren en la configuración. La primera coincidencia completa se establece como la voz. Si no se encuentra ninguna coincidencia exacta, el SDK utiliza la primera coincidencia en función solo del valor lang
. Si aún no hay ninguna coincidencia, el SDK utiliza la voz por defecto.const settings = {
...,
enableBotAudioResponse: true,
ttsVoice: [{
lang: 'en-US',
name: 'Samantha'
}, {
lang: 'en-US',
name: 'Alex'
}, {
lang: 'en-UK'
}]
}
Para adaptar la forma en que se hablan las expresiones, la matriz ttsVoice
permite transferir propiedades pitch
, rate
y volume
opcionales en cada elemento. Estas propiedades corresponden a los mismos campos de la interfaz SpeechSynthesisUtterance.
- La propiedad
pitch
puede tener un valor entre 0 y 2. - La propiedad
rate
puede tener un valor entre 0,1 y 10. - La propiedad
volume
puede tener un valor entre 0 y 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'
}]
}
Interfaz de servicio de síntesis de voz
SpeechSynthesisService
para la instancia de servicio de TTS que va a inyectar./**
* 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;
}
El objeto
SpeechSynthesisServiceEvent
tiene dos eventos, TTSPlay
y TTSEnd
:const SpeechSynthesisServiceEvent = {
TTSPlay: 'tts:play',
TTSEnd: 'tts:end'
}
setTTSService(service)
.
Una vez que se ha inyectado el servicio TTS, el SDK maneja las llamadas a los métodos de servicio para emitir los mensajes. Sin embargo, puede llamar a estos métodos directamente o puede utilizar los métodos de TTS expuestos por el SDK para cualquier requisito. En el modo sin cabecera, por ejemplo, puede llamar al método Bots.speakTTS(message)
para transferir un mensaje a medida que se recibe de la aptitud. El SDK maneja tanto el análisis del texto que se puede pronunciar desde el mensaje como la transferencia de este texto al servicio TTS para que se pueda pronunciar.