Personalizar o Widget de Chat
É possível personalizar vários aspectos do widget de chat, como seu layout e ícones, cores e texto.
Dica:
Este artigo ajuda você a se familiarizar com as diversas propriedades de personalização.Configuração de Rede
scripts/settings.js
.
Nome da Propriedade | Descrição | 0brigatório? | Valor Padrão |
---|---|---|---|
URI |
O URL do Oracle Chat Server | Sim | N/A |
channelId |
O ID do Canal Oracle Web | Sim | N/A |
userId |
Um identificador exclusivo do usuário. Caso ele não seja fornecido, o Oracle Digital Assistant gerará um. | Número | Um valor gerado aleatoriamente |
clientAuthEnabled |
Determina se o SDK se conecta a um canal no qual a autenticação do cliente foi ativada. Conforme descrito em Configurar Autenticação do Cliente, defina essa propriedade como true para se conectar ao canal com autenticação ativada e usar o token JWT.
|
Sim | false |
Flags de Recurso
- Conexões seguras
- botões de ação com formato de pílula
- Narração em áudio de respostas da habilidade.
- Compartilhamento de anexos
- Desativação de cliques em mensagens anteriores (fora do foco)
- Preenchimento automaticamente de entrada do usuário
<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>
Dica:
A partir da Versão 22.08, o esquema de definições de configuração do widget de chat está disponível em um formato de esquema JSON padrão por meio de uma CDN (https://static.oracle.com/cdn/oda/22.8.0/settings-schema.json
), que pode ser usado para criar telas de configuração dinâmica.
Nome da Propriedade | Descrição | 0brigatório? | Valor Padrão |
---|---|---|---|
alwaysShowSendButton |
Exibe o botão enviar no rodapé do bate-papo mesmo quando não há texto de entrada do usuário. | Número | false |
defaultGreetingTimeout |
O timeout padrão, em segundos, após o qual uma mensagem de saudação padrão é exibida. | Número | 5 |
defaultWaitMessageInterval |
O intervalo padrão, em segundos, que a mensagem de espera padrão exibe. | Número | 5 |
disablePastActions |
Desativa os botões de ação em uma mensagem de habilidade depois que um usuário interagiu com uma ação de envio de postback, local ou formulário. Os valores permitidos são all , none ou postback . Quando definido como all , todos os botões de ação da mensagem são desativados na interação. A definição de postback só desativa as ações de postback e localização, e a definição de none mantém todos os botões ativados mesmo após uma interação. O comportamento ativado por essa propriedade é independente da configuração no nível do assistente digital para desativar a seleção de ações anteriores. É necessário definir os dois valores separadamente.
|
No | all |
displayActionsAsPills |
Exibe botões de ação em formato de pílula. | No | false |
enableAttachment |
Configura o compartilhamento de anexos. | No | true |
enableAttachmentSecurity |
Quando definido como true , cabeçalhos extras são transmitidos às solicitações de upload de anexo para garantir que eles não possam ser baixados sem transmitir um token JWT assinado válido como cabeçalho de autorização.
Não ative essa definição se a habilidade estabelecer conexão com uma instância do ODA Versão 20.08 ou for executada em qualquer versão anterior à 20.08. Esta propriedade só se aplica a conexões ativadas por autenticação do cliente com as Versões 20.12 e superior da plataforma ODA. |
No | false |
enableAutocomplete |
Defina como true para permitir que a habilidade preencha automaticamente a solicitação do usuário usando as solicitações de usuário idealizadas inseridas como Preenchimento Automático de Sugestões na página Criar Intenção. A habilidade gera essas sugestões quando o usuário digita três ou mais caracteres. Ela também define as palavras na entrada do usuário que correspondem às frases sugeridas em negrito.
|
No | false |
enableBotAudioResponse |
Ativa a declaração das respostas de uma habilidade à medida que elas são recebidas usando a API de síntese de fala da Web. | No | false |
enableClearMessage |
Habilita o botão de limpeza de mensagem no cabeçalho do widget de chat. | No | false |
enableDraggableButton |
Permite que os usuários arrastem do caminho o botão do widget de chat quando ele está bloqueando o conteúdo na página web. Esse recurso também funciona para navegadores Android e iOS Safari. | No | false |
enableHeadless |
Permite que você use o Oracle Web SDK sem sua interface de usuário para que possa desenvolver sua própria interface de usuário de chat. | No | false |
enableLocalConversationHistory |
Permite que a conversa anterior associada a um determinado userId seja carregada no browser quando o widget for inicializado.
|
No | false |
enableLongPolling |
Use solicitações HTTP quando o websocket falhar ao estabelecer conexão. | No | false |
enableSecureConnection |
Configura a comunicação segura (https v. http e wss v. ws ).
|
No | true |
enableSpeech |
Quando definida como true , esta propriedade ativa o microfone para reconhecimento de voz. Por exemplo :
|
No | false |
enableSpeechAutoSend |
Quando é definida como true (o padrão), a resposta de fala do usuário é automaticamente enviada ao servidor de chat (e é exibida como uma mensagem enviada no widget de chat). Quando definida como false , a resposta de fala do usuário é renderizada no campo de texto da mensagem antes de ser enviada ao servidor de chat para que o usuário possa modificá-la antes de enviá-la manualmente ou excluir a mensagem.
|
No | true |
focusOnNewMessage |
Define o foco no campo de entrada do usuário ou no primeiro botão de ação em uma mensagem quando uma nova mensagem é recebida.
|
No | input |
multiLangChat |
Permite que o widget de chat detecte o idioma de um usuário e permita que o usuário selecione um idioma preferencial em um menu drop-down no cabeçalho. Você define o menu com um objeto que define o idioma principal e um array de duas ou mais tags de idioma (o array supportedLangs , descrito em Chat Multilíngue).
|
No | N/A |
name |
O nome da instância. Fornece um namespace para a instância e é usado como prefixo para os nomes de classe CSS e IDs de elemento. | No | oda-chat |
openChatOnLoad |
Expande o widget de chat quando a página é carregada. | No | false |
openLinksInNewWindow |
Substitui a preferência do browser do usuário abrindo links em uma nova janela. Essa definição se aplica a todos os links presentes na conversa, incluindo botões de ação, links de fallback para anexos e links de cartões. | No | false |
showConnectionStatus |
Permite que o status da conexão seja exibido no cabeçalho do widget de chat. | Número | false |
showPrevConvStatus |
Exibe mensagens de status no fim das mensagens mais antigas das conversas anteriores. | Número | true |
showTypingIndicator |
Exibe uma bolha de chat ao aguardar uma resposta. | Número | true |
Funcionalidade
- Imitar uma conversa iniciada pela habilidade.
- Incorporar conteúdo à parte superior e inferior da janela de chat que rola ou fica parada (fixa).
- Definir a configuração regional.
- Definir o modo de depuração.
- Definir a configuração regional e a voz para a síntese de fala.
Propriedade | Descrição | 0brigatório? | Valor Padrão |
---|---|---|---|
customHeaderElementId |
Nomeia o ID do elemento <div> adicionado ao cabeçalho do widget de chat.
|
Número | N/A |
delegate |
Um objeto que define um delegado para receber callbacks antes que determinados eventos ocorram em uma conversa. O objeto delegate permite que o código interaja com mensagens do usuário e respostas da habilidade antes que as mensagens sejam enviadas e as respostas sejam exibidas.
|
Número | N/A |
embedBottomScrollId |
O ID do elemento que é adicionado como o conteúdo de rolagem na parte inferior do chat. Use esta propriedade para adicionar conteúdo personalizado na exibição de conversa do widget de chat. | Número | N/A |
embedBottomStickyId |
O ID do elemento usado para o conteúdo fixo que aparece na parte inferior do chat. Use esta propriedade para adicionar conteúdo personalizado na exibição de conversa do widget de chat. | Número | N/A |
embedded |
A definição dessa opção como true ativa o modo embedded para o widget de chat. Além de definir essa propriedade, você precisa nomear o elemento div que armazena o widget na propriedade targetElement .
|
Número | false |
embeddedVideo |
Definir isso como true incorpora links para vídeos YouTube, Daily Motion e Oracle Video Hub para que possam ser reproduzidos no widget de chat.
|
Número | false |
embedTopscrollId |
O ID do elemento div que é adicionado como um conteúdo de rolagem na parte superior do widget de chat.
|
Número | N/A |
embedTopStickyId |
O ID do elemento div que é usado para o conteúdo fixo que aparece na parte superior do widget de chat. Use esta propriedade para adicionar conteúdo personalizado na exibição de conversa do widget de chat. Por exemplo, o elemento top-text div no seguinte trecho de código é referenciado como embedTopStickyId: 'top-text' :
O tutorial do Web SDK descreve como configurar esta propriedade e definir rolagem e não rolagem para elementos do widget de chat.
|
Número | N/A |
enableAgentSneakPreview |
Envia o texto inserido pelo usuário juntamente com o status de digitação para o agente. | Número | false |
enableAutocompleteClientCache |
Permite o armazenamento no cache do cliente para minimizar chamadas do servidor quando o recurso de preenchimento automático estiver em uso. | Número | false |
enableDefaultClientResponse |
Quando definido como true , o cliente exibe respostas padrão quando a resposta da habilidade foi atrasada ou quando não há resposta da habilidade.
|
Número | false |
enableEndConversation |
Permite que o usuário encerre a conversa e redefina a sessão de chat. Ele também limpa o histórico de conversas locais, desconecta do servidor de chat e minimiza o widget | Número | true |
enableHeaderActionCollapse |
Recolhe as ações do cabeçalho em um botão de menu se a contagem de ícones for maior que dois. | Número | true |
enableResizableWidget |
Permite que o usuário redimensione o widget de chat depois de expandi-lo. Se o widget estiver localizado no lado direito da página da Web, os usuários ajustarão suas dimensões arrastando a borda superior, a borda esquerda ou o canto superior esquerdo. Da mesma forma, se o widget for colocado no lado esquerdo, os usuários redimensionarão a borda superior, a borda direita ou o canto superior direito. | Número | false |
enableSendTypingStatus |
Envia o status de digitação do usuário para o agente ativo. | Número | false |
enableTabsSync |
Sincroniza mensagens de conversa entre guias diferentes para um determinado userId e channelId .
|
Número | true |
enableVoiceOnlyMode |
Ativa o modo somente voz. A ativação do modo somente voz elimina a necessidade de os usuários clicarem no botão do microfone toda vez que receberem uma mensagem de bot. Com esse modo ativado, o SDK inicia automaticamente o reconhecimento de voz assim que o TTS (Text-to-Speech) da mensagem recebida for falado. | Número | false |
hotkeys |
Um objeto que contém uma lista de teclas de teclado que ativam, ou focam, elementos usando a tecla ALT combinada com a tecla de atalho aprovada. | Número | {...} Por exemplo:
|
i18n |
Um objeto que contém campos de configuração regional. Cada configuração regional mantém pares de chave/valor i18n para as strings de texto usadas no widget.
|
Número | {'en-us':{…}} Por exemplo :
|
initBotAudioMuted |
Inicializa a declaração da mensagem da habilidade no modo silencioso. Esse recurso só pode ser ativado quando você define enableBotAudioResponse como true .
|
Número | true |
initMessageOptions |
Enquanto initUserHiddenMessage envia a mensagem "oculta" inicial somente depois que o cliente estabeleceu conexão com a habilidade e o widget de chat foi expandido, você poderá usar essa definição para enviar mensagens assim que o cliente tiver estabelecido conexão com a habilidade, independentemente de o widget estar ou não expandido. Essa definição aceita um objeto que tem uma propriedade sendAt . A propriedade sendAt pode ter um dos dois valores: 'init' ou 'expand' . Se você definir 'init' , as mensagens de inicialização serão enviadas assim que a conexão for estabelecida. Se você definir 'expand' , as mensagens de inicialização só serão enviadas quando o widget for expandido. No seguinte trecho de código, a mensagem é definida quando a conexão é estabelecida por causa de sendAt: 'init' : Lembre-se de que o faturamento começa quando a mensagem de inicialização foi enviada, mesmo que o widget ainda esteja fechado (como seria o caso com sendAt: 'init ').
|
N/A | |
initUserHiddenMessage |
Uma mensagem que é usada para iniciar uma conversa. Esta mensagem pode ser uma string de texto ou um payload de mensagem. Por exemplo: initUserHiddenMessage: 'Hi' . Essas mensagens não são dependentes do histórico do usuário. Essa mensagem é enviada em cada sessão depois que o cliente estabeleceu conexão com a habilidade e o widget de chat foi expandido. Para enviar a primeira mensagem somente quando o histórico de conversas estiver vazio, vincule os listeners de eventos usando o método Bots.on() . Por exemplo, você pode fazer isso vinculando os eventos WIDGET_OPENED e NETWORK , que são descritos nos documentos do SDK.
|
Número | N/A |
initUserProfile |
Atualiza o perfil do usuário antes do início de uma conversa. O formato do payload do perfil deve ser { profile: {...} } . Por exemplo : Esta função atualiza o contexto do usuário depois que o cliente é conectado à habilidade e o widget de chat foi expandido. Como resultado, o perfil do usuário pode ser refletido na primeira mensagem de resposta para o usuário. Por exemplo, a habilidade pode saudar o usuário com uma mensagem como "Bem-vindo de volta, John Smith! Seu último pedido foi uma pizza de pepperoni média". Essas mensagens são enviadas depois que o cliente se conecta à habilidade e o widget de chat é expandido. Estas mensagens do perfil de usuário são enviadas depois que o cliente se conectou à habilidade e o widget de chat é expandido. Uma mensagem de perfil do usuário ainda será enviada antes da mensagem "oculta" inicial se initUserHiddenMessage também for informado.
Você só pode informar a propriedade |
Número | N/A |
isDebugMode |
Ativa o modo de depuração. | No | false |
linkHandler |
Um objeto que substitui a configuração para tratar os cliques nos links incorporados nas respostas da habilidade. Há duas maneiras de este objeto tratar links: target , que aceita uma string e onclick , que aceita uma função. Você pode definir target ou onclick , mas não ambos. Quando quiser que todos os links sejam abertos em uma WebView, informe linkHandler: { target: 'oda-chat-webview' } .
|
No |
|
locale |
A configuração regional padrão para as strings de texto do widget. A configuração regional informada durante a inicialização tem uma preferência maior sobre as configurações regionais do browser dos usuários. Se não houver uma correspondência exata, o SDK tentará fazer a correspondência com o idioma mais próximo. Por exemplo, se a configuração regional for 'da-dk' , mas as traduções de i18n só forem fornecidas para 'da' , a tradução de 'da' será usada. Na ausência de traduções de configurações regionais informadas, as traduções serão pesquisadas e aplicadas às configurações regionais do browser. Na ausência de traduções para qualquer uma delas, a configuração regional padrão, 'en' será usada para traduções.
|
No | en-us |
messageCacheSizeLimit |
O número máximo de mensagens que são salvas em localStorage de cada vez.
|
No | 2000 |
reconnectMaxAttempts |
O número de tentativas feitas pelo widget de chat para reconectar quando a conexão inicial falha. | No | 5 |
shareMenuItems |
Os itens de menu no menu pop-up de compartilhamento. Esta propriedade aceita um array com valores de string mapeados para itens de menu:
['audio', 'file'] , por exemplo). Todos os itens de menu estão disponíveis quando o array está vazio, quando os itens no array estão incorretos (['audio', 'visuil'] ou quando a propriedade shareMenuItems não é definida.
|
No |
|
skillVoices |
Um array contendo as vozes preferenciais usadas para narrar respostas. Cada item no array deve ser um objeto com dois campos: lang e name . name é opcional. O primeiro item que corresponder a uma voz disponível no sistema será usado para a narração. Esta configuração está obsoleta.
|
No | System language |
speechLocale |
A configuração regional esperada de fala do usuário que é usada para reconhecimento de voz. Inglês dos EUA ('en-US' ) é a configuração regional padrão. As outras configurações regionais suportadas são: Inglês australiano ('en-au' ), Inglês britânico ('en-uk' ), Francês ('fr-fr' ), Alemão ('de-de' ), Italiano ('it-it' ), Hindi indiano (hi-in ), Inglês indiano (en-in ), Português do Brasil ('pt-br' ) e Espanhol ('es-es' ). A configuração regional de fala pode ser definida dinamicamente chamando a API setSpeechLocale('<locale>') . O reconhecimento de voz não funcionará se uma configuração regional não suportada tiver sido informada.
|
No | 'en-us' |
storageType |
O mecanismo de armazenamento na Web que é usado para armazenar o histórico de conversas de usuários cujo userId é informado pelo aplicativo host. Os valores suportados são 'localStorage' e 'sessionStorage' . As conversas de usuários anônimos são sempre armazenadas em sessionStorage e são excluídas automaticamente após o término da sessão do browser.
|
No | 'localStorage' |
targetElement |
Nomeia o elemento div em que o widget de chat é incorporado na página Web. O elemento chat-container div no seguinte trecho de código é referenciado como targetElement: 'chat-container' :
Confira o tutorial do Web SDK para descobrir como adicionar e estilizar o elemento div .
|
No | N/A |
theme |
O tema do layout principal. Três temas estão disponíveis: 'default' , 'redwood-dark' e 'classic' .
|
No | default |
timestampFormat |
Formata o timestamp de entrega que acompanha mensagens. Aceita valores em um objeto options de DateTimeFormat ou como uma string de padrão conforme descrito em Personalizar o TimestampObservação: Isso controla o timestamp da mensagem, não o timestamp do cabeçalho. . |
No |
|
timestampHeaderFormat |
Personalize o formato de timestamp no cabeçalho da mensagem. Você pode usar um objeto options DateTimeFormat ou uma string de padrão conforme descrito em Personalizar o Timestamp.
|
No | N/A |
timestampHeaderMode |
Configura os cabeçalhos de timestamp que aparecem acima da primeira mensagem do dia. 'absolute' (o formato padrão) exibe o timestamp completo em formato absoluto, 'relative' o exibe em um formato relativo e 'none' oculta totalmente o cabeçalho de timestamp.
|
No | absolute |
timestampMode |
Configura o modo de exibição de timestamp como timestamps absolutos que aparecem em cada mensagem ou como timestamp relativo que só aparece na mensagem mais recente.
Observação: Isso controla o timestamp da mensagem, não o timestamp do cabeçalho. |
No | default (para timestamps absolutos) ou relative .
|
ttsService |
Um array contendo vozes preferenciais usadas para respostas de fala por meio de texto para fala (TTS). Cada item no array deve ser um objeto com pelo menos um dos seguintes campos: lang e name . O primeiro item que corresponder a uma voz disponível no sistema será usado para o TTS.
|
No | oracle |
typingIndicatorTimeout |
Define o número de segundos após o qual o indicador de digitação será removido automaticamente se o widget de chat ainda não tiver recebido a resposta. | No | 20 |
typingStatusInterval |
Define o intervalo, em segundos, para limitar o status de digitação que é enviado ao agente ativo. | No | 3 |
webViewConfig |
Personaliza a WebView in-widget. | No | { referrerPolicy: 'no-referrer-when-downgrade', closeButtonType: 'icon', size: 'tall' } |
Botões Ler Mais e Ler Menos para Respostas de Habilidades de Vários Parágrafos
Você pode otimizar a experiência do usuário para mensagens de habilidade de vários parágrafos adicionando os botões Read More e Read Less.
Descrição da ilustração readmore.png
Você pode adicionar o código do lado do cliente para esses botões, que ocultam e mostram parágrafos, usando o objeto delegate
e as funções personalizadas.
- No
settings.js
, defina um objetodelegate
com uma função de callbackbeforeDisplay
na declaraçãoconst chatSettings
:
Se a mensagem for do tipodelegate: { beforeDisplay: function (message) { var messagePayload = message && message.messagePayload; if (messagePayload.type === 'text') { messagePayload.text = splitParagraph(messagePayload.text); } return message; } }
text
,beforeDisplay
chamará a funçãosplitParagraph
personalizada para dividir o texto pelo primeiro parágrafo. - Declare as variáveis para as funções de view personalizadas
splitParagraph
etoggleParagraph
:var PREFIX_DOTS = 'dots_'; var PREFIX_MORE = 'more_'; var PREFIX_TOGGLE = 'toggle_button';
- Adicione a expressão da função
splitParagraph
e a funçãotoggleParagraphView
.splitParagraph
é um IIFE (Expressão de Função Chamada Imediatamente) que isola a variávelglobalIDCounter
para que ela só possa ser acessada pela funçãosplitParagraph
. O código identifica um parágrafo ("\n\n"
) e divide o texto de acordo. Em seguida, adiciona três pontos (...) para indicar que há mais texto a ser exibido e um botão Ler Mais para exibir o 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 e (opcionalmente) estilize os botões Ler Mais e Ler Menos. O CSS inclui um estilo
display:none
para mostrar ou ocultar botões de acordo com o estado da exibição de texto longo.- Se você não quiser estilizar os botões, adicione o seguinte código:
<style> .more { display: none; } </style>
- Se você quiser estilizar os botões, pode fazer algo assim:
<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>
- Se você não quiser estilizar os botões, adicione o seguinte código:
Layout
- Definir a posição do widget dentro da página Web.
- Definir as dimensões, as cores e o estilo da fonte do widget de chat.
- Definir o preenchimento das mensagens dentro do widget.
- Definir a posição do ícone da placa de notificação em relação ao botão do bot.
- Definir a posição inicial para a conversa dentro do 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>
Propriedade | Descrição | 0brigatório? | Valor Padrão |
---|---|---|---|
actionsLayout |
Define a direção do layout das ações locais. Quando você define isso como horizontal , esses botões são dispostos horizontalmente e serão encapsulados se o conteúdo transbordar.
|
No | vertical |
badgePosition |
A posição do ícone de placa com relação ao botão do ícone. | No | {"top": "0", "right": "0"} |
cardActionsLayout |
Define a direção do layout das ações do cartão. Quando você define isso como horizontal , esses botões são dispostos horizontalmente e serão colocados se o conteúdo.
|
No | vertical |
colors |
As cores usadas no widget de chat. | No | {"branding": "#1B8FD2", "text": "#212121", "textLight": "#737373"} |
conversationBeginPosition |
A posição inicial da conversa no widget. Se definida como top , as primeiras mensagens serão exibidas na parte superior do widget. Se definida como bottom , a conversa começará na parte inferior.
|
No | bottom |
font |
A fonte usada no widget de chat. | No | 16px "Oracle Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue |
fontFamily |
A família de fontes usada para todo o texto no widget de chat. Essa precedência de definição sobre a configuração font .
|
No | "Oracle Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue" |
fontSize |
O tamanho da fonte a ser usado para o texto do cabeçalho, da bolha e do rodapé no widget. Essa definição tem precedência sobre a configuração font .
|
No | 16px |
globalActionsLayout |
Define a direção do layout para as ações globais. Se definido "horizontal", os botões são colocados horizontalmente e serão quebrados se o conteúdo transbordar. | No | vertical |
height |
A altura de uma largura de chat conforme definida por um dos valores de tipo de dados <length> . | No | 70vh |
messagePadding |
O preenchimento de mensagens no widget de chat. | No | 15px |
position |
O posicionamento do widget de chat na janela do browser. Deve ser especificado como um objeto JSON. | No | {bottom: '20px', right: '20px'} |
width |
A largura do widget de chat conforme definido como um dos valores de tipo de dados <length>. | No | 30vw |
Ícones de Botões de Cabeçalho Personalizado



colors.headerButtonFill
nas definições iniciais.
A personalização de cores pode não funcionar para todos os SVGs, pois eles podem ser multicoloridos ou ter suas próprias cores de traçado e preenchimento.
Ícone | Função | Flag de Recurso | Personalização |
---|---|---|---|
Limpar Mensagem | Limpa as mensagens atuais e mais antigas na conversa. | enableClearMessage: true |
'<image URL | SVG string>' |
Resposta de áudio | Alterna o áudio das respostas da habilidade à medida que elas são recebidas. Como este é um botão de alternância, ele tem dois estados, declaração ativada, em que as respostas são faladas, e declaração desativada, em que as respostas não são faladas. | enableBotAudioResponse: true |
|
Fechamento | Contrai o widget e exibe o botão Iniciar ![]() |
Nenhum: Este ícone é sempre ativado no widget de chat. Ele não é exibido no modo incorporado. | closeIcon : '<image URL | SVG string>' |
Cores Personalizadas
- Você pode informar a configuração
colors
:colors: { "branding": "#e00", "text": "#545454" },
- Ou você pode usar variáveis CSS definidas no wrapper de chat (
.oda-chat-wrapper
):.oda-chat-wrapper { --color-branding: '#e00'; --color-text: '#545454'; } }
Dica:
Recomendamos alterar cores usando variáveis CSS.Variável CSS | Chave | Descrição |
---|---|---|
--color-actions-background |
actionsBackground |
A cor de fundo dos botões de ação |
--color-actions-background-hover |
actionsBackgroundFocus |
A cor de fundo dos botões de ação quando eles estão em foco. |
--color-actions-background-focus |
actionsBackgroundHover |
A cor de fundo dos botões de ação ao passar o mouse sobre eles |
--color-actions-border |
actionsBorder |
A cor da borda dos botões de ação |
--color-actions-text |
actionsText |
A cor do texto dos botões de ação |
--color-actions-text |
actionsTextFocus |
A cor do texto dos botões de ação em foco |
--color-actions-text-focus |
actionsTextHover |
A cor do texto dos botões de ação ao passar o mouse sobre eles |
--color-user-message-background |
botMessageBackground |
A cor do segundo plano da bolha de mensagem de resposta da habilidade |
--color-bot-text |
botText |
A cor do texto em uma mensagem enviada pela habilidade |
--color-branding |
branding |
A cor principal da marca do widget. Essa cor é usada como segundo plano do cabeçalho e como a cor de focalização nos botões do rodapé. |
--color-card-background |
cardBackground |
A cor de fundo usada para um cartão. |
--color-conversation-background |
conversationBackground |
A cor usada para o segundo plano do painel de conversa. |
--color-danger-actions-background |
dangerActionsBackground |
A cor de fundo do botão de ação de perigo |
--color-danger-actions-background-focus |
dangerActionsBackgroundFocus |
A cor de fundo do botão de ação de perigo no foco |
--color-danger-actions-background-hover |
dangerActionsBackgroundHover |
A cor de fundo do botão de ação de perigo ao passar o mouse sobre ele |
--color-danger-actions-border |
dangerActionsBorder |
A cor da borda do botão de ação de perigo |
--color-danger-actions-text |
dangerActionsText |
A cor do texto do botão de ação de perigo |
--color-danger-actions-text-focus |
dangerActionsTextFocus |
A cor do texto do botão de ação de perigo em foco |
--color-danger-actions-text-hover |
dangerActionsTextHover |
A cor do texto do botão de ação de perigo ao passar o mouse sobre ele |
--color-danger-form-actions-background |
dangerFormActionsBackground |
A cor de fundo das ações de perigo nas mensagens Tabela, Formulário, Tabela-Form e Editar-Form |
--color-danger-form-actions-background-focus |
dangerFormActionsBackgroundFocus |
A cor de fundo das ações de perigo em foco nas mensagens Tabela, Formulário, Formulário de Tabela e Editar Formulário |
--color-danger-form-actions-background-hover |
dangerFormActionsBackgroundHover |
A cor de fundo das ações de perigo ao passar o mouse nas mensagens Tabela, Formulário, Tabela-Formulário e Editar-Formulário |
--color-danger-form-actions-border |
dangerFormActionsBorder |
A cor da borda das ações de perigo nas mensagens Tabela, Formulário, Tabela-Form e Editar-Form |
--color-danger-form-actions-text |
dangerFormActionsText |
A cor do texto das ações de perigo nas mensagens Tabela, Formulário, Tabela-Form e Editar-Form |
--color-danger-form-actions-text-focus |
dangerFormActionsTextFocus |
A cor do texto das ações de perigo em foco nas mensagens Tabela, Form, Table-Form e Edit-Form |
--color-danger-form-actions-text-hover |
dangerFormActionsTextHover |
A cor do texto das ações de perigo ao passar o mouse nas mensagens Tabela, Form, Table-Form e Edit-Form |
--color-error-border |
errorBorder |
A cor da borda de uma bolha de mensagem de erro. A cor é usada como a cor da borda da mensagem de erro no nível do formulário que é exibida nas mensagens Editar-Formulário. |
--color-error-message-background |
errorMessageBackground |
A cor de fundo de uma bolha de mensagem de erro. A cor é usada como a cor de fundo da mensagem de erro no nível do formulário que é exibida nas mensagens Editar-Formulário. |
--color-error-title |
errorTitle |
A cor do título do conteúdo da mensagem de erro. A cor é usada como cor do texto de erro da mensagem de erro no nível do formulário que é exibida nas mensagens Editar-Formulário. |
--color-footer-background |
footerBackground |
A cor usada para o segundo plano do rodapé. |
--color-footer-button-fill |
footerButtonFill |
A cor de preenchimento de um ícone SVG usado nos botões localizados no rodapé do chat. |
--color-form-actions-background |
formActionsBackground |
A cor de fundo das ações do formulário |
--color-form-actions-background-focus |
formActionsBackgroundFocus |
A cor de fundo das ações do formulário no foco |
--color-form-actions-background-hover |
formActionsBackgroundHover |
A cor de fundo das ações do formulário ao passar o mouse |
--color-form-actions-border |
formActionsBorder |
A cor da borda das ações do formulário |
--color-form-actions-text |
formActionsText |
A cor do texto das ações do formulário |
--color-form-actions-text-focus |
formActionsTextFocus |
A cor do texto das ações do formulário no foco |
--color-form-actions-text-hover |
formActionsTextHover |
A cor do texto das ações do formulário ao passar o mouse |
--color-form-background |
formBackground |
A cor de fundo dos formulários |
--color-form-error |
formError |
A cor de preenchimento SVG do ícone nas mensagens de erro no nível do campo e no nível do formulário que são exibidas nas mensagens Editar-Formulário. A cor é usada como a cor da borda do campo de entrada em caso de erro nas mensagens do Formulário de Edição. |
--color-form-error-text |
formErrorText |
A cor do texto de uma mensagem de erro no nível do campo que é exibida nas mensagens do Formulário de Edição |
--color-form-header-background |
formHeaderBackground |
A cor de fundo dos títulos de forma |
--color-form-header-text |
formHeaderText |
A cor do texto dos títulos dos formulários |
--color-form-input-background |
formInputBackground |
A cor de fundo dos campos de entrada nas mensagens de Formulário de Edição |
--color-form-input-border |
formInputBorder |
A cor da borda dos campos de entrada nas mensagens de Formato de Edição |
--color-form-input-border-focus |
formInputBorderFocus |
A cor da borda dos campos de entrada em foco nas mensagens do Formulário de Edição |
--color-form-input-text |
formInputText |
A cor do texto dos campos de entrada nas mensagens de Formato de Edição |
--color-form-label |
formLabel |
A cor dos rótulos do formulário |
--color-form-text |
formText |
A cor do texto dos formulários |
--color-global-actions-background |
globalActionsBackground |
A cor de fundo dos botões de ação global |
--color-global-actions-background-focus |
globalActionsBackgroundFocus |
A cor de fundo dos botões de ação global quando eles estão em foco. |
--color-global-actions-background-hover |
globalActionsBackgroundHover |
A cor de fundo ao passar o mouse sobre os botões de ação global. |
--color-global-actions-border |
globalActionsBorder |
A cor da borda dos botões de ação global |
--color-global-actions-text |
globalActionsText |
A cor do texto dos botões de ação global |
--color-global-actions-text-focus |
globalActionsTextFocus |
A cor do texto nos botões de ação global quando eles estão em foco. |
--color-global-actions-text-hover |
globalActionsTextHover |
A cor do texto nos botões de ação global quando os usuários passam o mouse sobre eles. |
--color-header-background |
headerBackground |
A cor de fundo do cabeçalho do widget de chat |
--color-header-button-fill |
headerButtonFill |
A cor de preenchimento dos ícones SVG usados para os botões no cabeçalho do chat |
--color-header-text |
headerText |
A cor do título do cabeçalho do chat |
--color-input-background |
inputBackground |
A cor de fundo do campo de entrada da mensagem no rodapé do chat |
--color-input-text |
inputText |
A cor do texto de entrada da mensagem no rodapé do chat |
--color-links |
links |
A cor dos links que estão incorporados nas mensagens da habilidade |
--color-error-border |
N/A | A cor da borda de uma bolha de mensagem de erro |
--color-error-message-background |
N/A | A cor de fundo de uma bolha de mensagem de erro |
--color-error-text |
N/A | A cor da descrição de um conteúdo da mensagem de erro |
--color-error-title |
N/A | A cor do título de um conteúdo da mensagem de erro |
--color-footer-button-background-hover |
N/A | A cor de fundo dos botões de rodapé ao passar o mouse sobre eles |
--color-footer-button-fill-hover |
N/A | A cor de preenchimento do rodapé do cabeçalho ao passar o mouse |
--color-header-button-background-hover |
N/A | A cor de fundo dos botões do cabeçalho ao passar o mouse sobre eles. |
--color-header-button-fill-hover |
N/A | A cor de preenchimento dos botões do cabeçalho ao passar o mouse |
--color-input-border |
N/A | A cor da borda do campo de entrada |
--color-user-links |
N/A | A cor dos links que são incorporados nas mensagens do usuário. |
--color-popup-background |
N/A | A cor do fundo dos prompts e pop-ups |
--color-popup-button-background |
N/A | A cor de fundo dos botões pop-up |
--color-popup-button-text |
N/A | A cor do texto dos botões pop-up |
--color-popup-horizontal-rule |
N/A | A cor da regra horizontal para a ação do menu de chat multilíngue do separador |
--color-popup-item-background-hover |
N/A | A cor do plano de fundo ao passar o mouse sobre os itens da lista pop-up |
--color-popup-text |
N/A | O texto e a cor do ícone de prompts e pop-ups |
--color-table-background |
N/A | A cor de fundo das tabelas |
--color-table-header-background |
N/A | A cor de fundo dos cabeçalhos da tabela |
--color-table-separator |
N/A | A cor separadora das linhas da tabela |
--color-table-text |
N/A | A cor do texto das tabelas |
--color-notification-badge-background |
notificationBadgeBackground |
A cor de fundo da placa de notificação da mensagem |
--color-notification-badge-text |
notificationBadgeText |
A cor do texto da contagem de mensagens na placa de notificação |
--color-primary-actions-background |
primaryActionsBackground |
A cor de fundo do botão de ação principal |
--color-primary-actions-background-focus |
primaryActionsBackgroundFocus |
A cor de fundo do botão de ação principal no foco |
--color-primary-actions-background-hover |
primaryActionsBackgroundHover |
A cor de fundo do botão de ação principal ao passar o mouse sobre ele |
--color-primary-actions-border |
primaryActionsBorder |
A cor da borda do botão de ação principal |
--color-primary-actions-text |
primaryActionsText |
A cor do texto do botão de ação principal |
--color-primary-actions-text-focus |
primaryActionsTextFocus |
A cor do texto do botão de ação principal em foco |
--color-primary-actions-text-hover |
primaryActionsTextHover |
A cor do texto do botão de ação principal ao passar o mouse sobre ele |
--color-primary-form-actions-background |
primaryFormActionsBackground |
A cor de fundo das ações principais nas mensagens Tabela, Formulário, Tabela-Form e Editar-Form |
--color-primary-form-actions-background-focus |
primaryFormActionsBackgroundFocus |
A cor de fundo das ações principais em foco nas mensagens Tabela, Formulário, Tabela-Form e Editar-Form |
--color-primary-form-actions-background-hover |
primaryFormActionsBackgroundHover |
A cor de fundo das ações principais ao passar o mouse nas mensagens Tabela, Formulário, Tabela-Formulário e Editar-Formulário |
--color-primary-form-actions-border |
primaryFormActionsBorder |
A cor da borda das ações principais nas mensagens Tabela, Formulário, Tabela-Form e Editar-Form |
--color-primary-form-actions-text |
primaryFormActionsText |
A cor do texto das ações principais nas mensagens Tabela, Formulário, Tabela-Form e Editar-Form |
--color-primary-form-actions-text-focus |
primaryFormActionsTextFocus |
A cor de fundo das ações principais em foco nas mensagens Tabela, Formulário, Tabela-Form e Editar-Form |
--color-primary-form-actions-text-hover |
primaryFormActionsTextHover |
A cor de fundo das ações principais ao passar o mouse nas mensagens Tabela, Formulário, Tabela-Formulário e Editar-Formulário |
--color-rating-star |
ratingStar |
A cor que é aplicada às estrelas de classificação em uma mensagem de feedback quando os usuários passam o mouse sobre elas ou as selecionam. Se você não especificar uma cor, a cor branding será usada.
|
N/A | recognitionViewBackground |
A cor de fundo da view em que o texto reconhecido é exibido quando os usuários ativam o modo de voz. Se você não definir essa cor, a cor definida para headerBackground será usada.
|
N/A | recognitionViewButtonFill |
A cor de preenchimento SVG para o modo de texto de voz alterna quando os usuários mudam para o modo de voz. |
--color-recognition-view-text |
recognitionViewText |
A cor usada para o texto que é reconhecido na entrada de voz do usuário. Se você não definir essa cor, a cor definida para text será usada.
|
N/A | shareMenuText |
A cor usada para os itens do menu de compartilhamento. Essa cor substitui o valor definido para a chave de texto, se informado. |
--color-table-actions-background-focus |
tableActionsBackgroundFocus |
A cor de fundo das ações da tabela em foco |
--color-table-actions-text-focus |
tableActionsTextFocus |
A cor do texto das ações da tabela em foco |
--color-table-actions-text-hover |
tableActionsTextHover |
A cor do texto das ações da tabela ao passar o mouse |
--color-text |
text |
A cor do texto das mensagens no widget de chat. |
-color-text-light |
textLight |
A cor do texto secundário nas mensagens, como as descrições de cartão no widget de chat. |
--color-timestamp |
timestamp |
A cor do timestamp relativo. |
--color-typing-indicator |
typingIndicator |
A cor de preenchimento de fundo usada para o indicador de digitação. |
N/A | userMessageBackgound |
A cor de fundo da bolha usada para mensagens do usuário. |
--color-user-text |
userText |
A cor do texto em uma mensagem enviada pelo usuário. |
--color-visualizer |
visualizer |
A cor usada para as barras no gráfico do visualizador. Se você não definir essa cor, a cor definida para branding será usada.
|
--color-visualizer-container-background |
visualizerContainerBackground |
A cor de fundo do contêiner do visualizador de voz que é exibida quando os usuários alternam para o modo de voz. Se você não definir essa cor, a cor definida para userMessageBackgound será usada.
|
Você pode definir uma imagem para
conversationBackground
, headerBackground
e footerBackground
. Esses campos podem aceitar quaisquer parâmetros que possam ser especificados para a propriedade background de CSS. Por exemplo :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")'},
Ícones Personalizados
Você pode personalizar os ícones, incluindo os do ícone de habilidade, o ícone do logotipo de chat e os ícones de avatar da habilidade e do usuário.
Dica:
As strings SVG são carregadas mais rapidamente do que os ativos de imagem. Elas também permitem animar a imagem e alterar sua cor. O layout definido para a propriedadetheme
é aplicado a strings SVG para botões de anexo, envio e microfone, mas não para os outros ativos de imagem.
icons
para agrupar todos os ícones personalizados em um único campo. Os ícones anteriores à versão 21.10 ainda são suportados, mas os valores informados com o objeto icons
têm precedência. Todos os campos no objeto icons
suportam caminhos de recursos de imagem e strings SVG brutas.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>'
}
};
Propriedade (Versão 21.10) | Propriedade (Versões Anteriores) | Descrição | String SVG Compatível? |
---|---|---|---|
avatarAgent |
agentAvatar |
Para habilidades integradas com agentes ao vivo, este ícone é exibido ao lado de mensagens do agente ao vivo. O avatarBot (ou agentAvatar ) aparecerá se essa propriedade não estiver definida.
|
Sim |
avatarbot |
botIcon |
O ícone exibido ao lado da mensagem de resposta da habilidade. Este ícone de habilidade só será exibido se você fornecer esse ícone. Caso contrário, nenhum ícone será exibido. | Sim |
avatarUser |
personIcon |
O ícone exibido ao lado das mensagens do usuário. Este ícone não é exibido por padrão: ele só será exibido se você defini-lo. | Sim |
clearHistory |
clearMessageIcon |
O ícone do botão Limpar Mensagem localizado no cabeçalho do widget | Sim |
close |
N/A | O ícone exibido para o botão fechar em banners de mensagem de erro, visualizações de imagem expandidas e o in-widget WebView. | Sim |
collapse |
closeIcon |
O ícone do botão, localizado no cabeçalho da view de chat, que minimiza a view de chat. | Sim |
download |
downloadIcon |
O ícone usado para o botão de download do anexo que aparece em cada mensagem de anexo enviada pela habilidade. | download - Sim
|
error |
errorIcon |
O URL da imagem usada para o ícone de erro. |
|
expandImage |
expandImageIcon |
O ícone usado para o controle de expansão da imagem que aparece em cada mensagem de anexo de imagem enviada pela habilidade. | expandImage - Sim
|
fileAudio |
audioIcon |
O ícone de anexo de áudio, exibido quando o URL de origem do anexo não está acessível. |
|
fileGeneric |
fileIcon |
O ícone de anexo de arquivo. |
|
fileImage |
imageIcon |
O ícone de anexo de imagem, que é exibido quando não é possível acessar a origem do anexo. |
|
fileVideo |
videoIcon |
O ícone de anexo de vídeo, que é exibido quando não é possível acessar o URL de origem do anexo. |
|
keyboard |
keyboardIcon |
O ícone de teclado, exibido no botão que alterna o modo de voz para o modo de teclado. | Sim |
launch |
botButtonIcon |
O botão do bot de habilidade, exibido quando o widget de chat é minimizado. |
|
logo |
logoIcon |
O ícone do logotipo de chat que é exibido no cabeçalho do widget de chat |
|
mic |
micIcon |
O ícone do botão mic no rodapé do widget de chat que aparece quando | Sim |
rating |
N/A | O ícone exibido para os botões de ação de feedback no componente de classificações. Para obter a melhor experiência do usuário para a ação de passar o mouse, passe uma string de ícone SVG preenchida. | rating - Sim
|
send |
sendIcon |
O ícone do botão de envio de mensagem | Sim |
shareMenu |
attachmentIcon |
O ícone de upload de anexo | Sim |
shareMenuAudio |
N/A | O ícone do item de menu de áudio no pop-up do menu compartilhar. | Sim |
shareMenuFile |
N/A | O ícone do item de menu do arquivo no pop-up do menu de compartilhamento. | Sim |
shareMenuLocation |
N/A | O ícone do botão do menu compartilhar no pop-up do menu compartilhar. | Sim |
shareMenuVisual |
N/A | O ícone do item de menu de imagem/vídeo no pop-up do menu de compartilhamento | Sim |
ttsOff |
audioResponseOffIcon |
O ícone do botão de alternância quando as respostas de áudio estão desativadas. | Sim |
ttsOn |
audioResponseOnIcon |
O ícone do botão de alternância quando as respostas de áudio estão ativadas. | Sim |
typingIndicator |
chatBubbleIcon |
O ícone animado no painel de conversas que indica uma resposta sendo enviada da habilidade. | Sim |
chatBubbleIcon
).
Nome da Propriedade | Descrição | 0brigatório? | Valor Padrão |
---|---|---|---|
chatBubbleIconHeight |
A altura do ícone de bolha de carregamento de chat. | No | 42px |
chatBubbleIconWidth |
A largura do ícone de bolha de carregamento de chat. | No | 56px |
Strings Personalizadas
en-us
. Caso contrário, as traduções de en-us
serão exibidas para os valores ausentes."i18n": {
"fr": {
"chatTitle": "Soutien"
},
"en-us": {
"chatTitle": "Support"
},
"es": {
"chatTitle": "Apoyo"
},
"zh-cn": {
"chatTitle": "支持"
}
}
Se forem fornecidas strings personalizadas para qualquer configuração regional diferente de en
, todas as chaves deverão ser especificadas para essa configuração regional. Caso contrário, as traduções en
serão exibidas para os valores ausentes.<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';
}
Chave | Descrição | Valor Padrão |
---|---|---|
agent |
O texto usado para o agente | 'Agent' |
agentMessage |
O indicador de mensagem de habilidade para leitores de tela. É falado pelos leitores de tela antes das respostas da habilidade. O texto (`{0}` ) é substituído pelo nome do agente.
|
`'{0} says'` |
attachment_audio |
O texto usado para a declaração TTS de um anexo de áudio. | 'Audio attachment' |
attachment_file |
O texto usado para a declaração TTS de um anexo de arquivo. | 'File attachment' |
attachment_image |
O texto usado para a declaração TTS de um anexo de imagem. | 'Image attachment' |
attachment_video |
O texto usado para a declaração TTS de um anexo de vídeo. | 'Video attachment' |
attachmentAudioFallback |
A mensagem de fallback exibida no lugar de um anexo de áudio se o áudio não puder ser renderizado pelo cliente. O texto entre {0} e {/0} é definido como um link para fazer download do arquivo.
|
Your browser does not support embedded audio. However you can {0}download it{/0}. |
attachmentVideoFallback |
A mensagem de fallback exibida no lugar de um anexo de vídeo se o vídeo não puder ser renderizado pelo cliente. O texto entre {0} e {/0} é definido como um link para fazer download do arquivo.
|
Your browser does not support embedded video. However you can {0}download it{/0} .
|
audioResponseOn |
A dica de ferramenta que aparece quando o usuário passa o mouse sobre o botão "off" da declaração de áudio no cabeçalho. | Turn audio response on |
avatarAgent |
O texto alternativo usado para o ícone do agente que é exibido ao lado das mensagens do agente. | Agent icon |
avatarBot |
O texto alternativo usado para o ícone de habilidade que é exibido ao lado das mensagens da habilidade. | Bot icon |
avatarUser |
O texto alternativo usado para o ícone do usuário que é exibido ao lado das mensagens do usuário. | User icon |
card |
O identificador do cartão. | 'Card {0}' . Você pode localizar a string colocando o espaço reservado ordinal ({0} ) antes ou depois da palavra. Continuaremos a suportar a string 'Card' usada em releases anteriores que não incluem o espaço reservado ordinal. Para esta corda, o ordinal é colocado após a palavra. Se quiser silenciar a declaração, informe uma string vazia (card: '' ).
|
cardImagePlaceholder |
O texto do placeholder que é exibido enquanto a imagem do cartão é extraída e carregada. | Loading image |
cardImagePlaceholder |
O texto do placeholder que é exibido enquanto a imagem do cartão é extraída e carregada. | Loading image |
cardNavNext |
O label do botão de navegação do cartão para exibir o próximo cartão em um layout horizontal. | Next card |
cardNavPrevious |
O label do botão de navegação do cartão para exibir o cartão anterior em um layout horizontal. | Previous card |
chatSubtitle |
Define o subtítulo da view de chat, que é exibido abaixo do título no cabeçalho da view de chat. Se o flag do subtítulo estiver definido e um (ou ambos) os flags showConnectionStatus e showTypingIndicator estiverem definidos como verdadeiro, o subtítulo será exibido em vez do status da conexão ou do indicador de digitação.
|
N/A |
chatTitle |
O título do widget de chat que é exibido no cabeçalho. | Ask |
clear |
A dica de ferramenta que aparece quando o usuário passa o mouse sobre o botão Limpar Mensagens no cabeçalho. | Clear |
close |
A dica de ferramenta que aparece quando o usuário passa o mouse sobre o botão de fechamento do widget no cabeçalho. | Close |
closing |
O texto de status que é exibido enquanto a conexão entre o widget de chat e o servidor está sendo fechada. | Closing |
connected |
O texto de status que é exibido enquanto a conexão entre o widget de chat e o servidor é estabelecida. | Connected |
connecting |
O texto de status que é exibido quando o widget de chat se conecta ao servidor de chat. | Connecting |
connectionFailureMessage |
A mensagem de falha que é exibida quando o widget não consegue se conectar à habilidade. | Sorry, the assistant is unavailable right now. If the issue persists, contact your help desk. |
connectionRetryLabel |
O rótulo do botão de nova conexão. | Try Again |
defaultGreetingMessage |
A resposta de saudação do cliente padrão exibida quando a resposta da habilidade não foi recebida dentro do número de segundos definido por defaultGreetingTimeout. .
|
Hey, Nice to meet you! Allow me a moment to get back to you. |
defaultSorryMessage |
A resposta padrão do cliente quando a resposta da habilidade não tiver sido recebida com o número de segundos definido por typingIndicatorTimeout .
|
Unfortunately, I am not able to get you the right content. Please try again. |
defaultWaitMessage |
A resposta padrão que é exibida no intervalo quando uma resposta de habilidade real não é recebida. Esse intervalo é definido, em segundos, por defaultWaitMessageInterval
|
I'm still working on your request. Thank you for your patience! |
disconnected |
O texto de status que é exibido quando a conexão entre o widget de chat e o servidor é fechada. | Disconnected |
download |
O texto de acessibilidade do botão de download que aparece em cada mensagem de anexo enviada pela habilidade. | Download |
endConversation |
A dica de ferramenta que aparece ao passar o mouse sobre o botão do cabeçalho da conversa final. | End Conversation |
endConversationConfirmMessage |
A mensagem de confirmação exibida quando um usuário clica no botão Encerrar conversa. | Are you sure you want to end the conversation? |
endConversationDescription |
A mensagem de descrição que é exibida junto com a mensagem de confirmação no prompt de conversa final. | This will also clear your conversation history. |
errorSpeechInvalidUrl |
A mensagem de erro exibida quando o URL do servidor de fala não é definido. | ODA URL for connection is not set. Please pass 'URI' parameter during SDK initialization. |
errorSpeechMultipleConnection |
A mensagem de erro exibida quando há várias tentativas de conexões de fala em um curto intervalo. | Another voice recognition is ongoing. Can't start a new one.' |
errorSpeechTooMuchTimeout |
A mensagem de erro exibida quando um usuário fornece uma mensagem de voz muito grande para ser reconhecida. | Too much voice input to recognize. Can not generate recognized text. |
errorSpeechUnsupportedLocale |
A mensagem de erro exibida quando há uma tentativa de gravação e uma configuração regional não suportada é configurada para reconhecimento de voz. | The set speech locale is not supported. Cannot start recording. |
imageViewerClose |
O texto de acessibilidade do botão que fecha a imagem expandida. | Close image viewer |
imageViewOpen |
O texto de acessibilidade do botão que expande a imagem. | Open image viewer |
inputPlaceholder |
O texto do placeholder que aparece no campo de entrada do usuário. | Type a message |
itemIterator |
Identificador de item em uma lista de itens em uma mensagem Table , Form ou Table-Form . O texto ({0} ) é substituído pelo índice do item.
|
Item {0} |
language_<languageTag> |
O label do idioma que é representado por languageTag . Por exemplo, English para en no menu suspenso de seleção de idioma que está disponível quando você configura o chat multilíngue. |
|
Language Label |
language_detect |
O rótulo da opção de detecção automática no menu suspenso de seleção de idioma. | Detect Language |
languageSelectDropdown |
A dica de ferramenta que aparece quando os usuários passam o mouse sobre o botão de seleção de idioma no cabeçalho. | Select chat language |
linkField |
O texto de declaração de substituição para um campo de link em uma mensagem Table , Form ou Table-Form . O placeholder ({0} ) é substituído pelo linkLabel do campo.
|
Click on the highlighted text to open Link for {0} |
noSpeechTimeout |
O texto de status que é exibido quando o Servidor de Chat não consegue reconhecer a voz. | Could not detect the voice, no message sent. |
noText |
O rótulo do botão de confirmação Sem. | No |
openMap |
O label do botão de ação que é usado para abrir um mapa de localização. | Open Map |
previousChats |
O texto de status que é exibido no final das mensagens mais antigas. | Previous conversations |
ratingStar |
O texto da dica de ferramenta que é exibido para cada estrela de classificação em uma mensagem de feedback. O espaço reservado `{0}` é substituído pelo número de estrelas que o usuário selecionou.
|
Rate {0} star |
recognitionTextPlaceholder |
Quando o modo de voz é ativado, este é o texto do placeholder exibido no campo de texto de reconhecimento. | Speak your message |
relTimeDay |
O timestamp relativo exibido todos os dias desde o recebimento da mensagem anterior. {0} é substituído pelo número de dias decorridos.
|
{0}d ago |
relTimeHr |
O timestamp relativo exibido a cada hora nas primeiras 24 horas após o recebimento da mensagem anterior. {0} é substituído pelo número de horas decorridas.
|
{0}hr ago |
relTimeMin |
O timestamp relativo exibido a cada minuto desde o recebimento da última mensagem. {0} é substituído pelo número de minutos decorridos.
|
{0}min ago |
relTimeMoment |
O timestamp relativo que é exibido dez segundos depois que a mensagem foi recebida e antes de 60 segundos decorridos desde que a última mensagem foi recebida. | A few seconds ago |
relTimeMon |
O timestamp relativo exibido todos os meses desde o recebimento da mensagem anterior. {0} é substituído pelo número de meses decorridos.
|
{0}mth ago |
relTimeNow |
O timestamp relativo exibido para uma nova mensagem. | Now |
relTimeYr |
O timestamp relativo exibido a cada ano após o recebimento da mensagem anterior. {0} é substituído pelo número de anos decorridos.
|
{0}yr ago |
requestLocation |
O texto exibido enquanto a localização do usuário é solicitada. | Requesting location |
requestLocationDeniedPermission
|
A mensagem de erro exibida quando a permissão para acessar o local é negada. | Location permission denied. Please allow access to share your location, or else type in your location. |
requestLocationDeniedTimeout |
A mensagem de erro exibida quando a solicitação de local não é resolvida devido a um timeout. | Taking too long to get your current location. Please try again, or else type in your location. |
requestLocationDeniedUnavailable |
A mensagem de erro exibida quando a solicitação de local é negada porque o local atual do dispositivo cliente está indisponível. | Your current location is unavailable. Please try again, or else type in your location. |
requestLocationString |
O texto de erro que é exibido quando o usuário nega a solicitação de localização. | Cannot access your location. Please allow access to proceed further. |
retryMessage |
O texto que é exibido quando a mensagem do usuário não é enviada ao servidor. | Try again |
send |
A dica de ferramenta que aparece quando o usuário passa o mouse sobre o botão de envio no rodapé. | Send |
shareAudio |
O texto do item de menu no pop-up de compartilhamento de um arquivo de áudio | Share Audio |
shareFailureMessage |
A mensagem de erro exibida quando o botão de ação de compartilhamento em uma mensagem é clicado, mas a API de compartilhamento não está disponível no dispositivo cliente ou a solicitação de compartilhamento é rejeitada. | Sorry, sharing is not available on this device. |
shareFile |
O texto do item de menu no pop-up de compartilhamento para compartilhar um arquivo genérico | Share File |
shareLocation |
O texto do item de menu para compartilhar um local no pop-up | Share Location |
shareVisual |
O texto do item de menu no pop-up de compartilhamento para compartilhar uma imagem ou um arquivo de vídeo | Share Image/Video |
skillMessage |
Um indicador de mensagem de habilidade para leitores de tela. É falado pelos leitores de tela antes das respostas da habilidade. | Skill says |
speak |
A dica de ferramenta que aparece quando o usuário passa o mouse sobre o botão de fala no rodapé. | Speak |
typingIndicator |
O texto de acessibilidade para o indicador de digitação. É falado pelos leitores de tela. | Waiting for response |
upload |
A dica de ferramenta que aparece quando o usuário passa o mouse sobre o botão de upload no rodapé. | Share popup |
uploadFailed |
O texto de erro que é exibido quando um upload falha. | Upload Failed. |
uploadFileSizeLimitExceeded |
O texto de erro que é exibido quando o tamanho do arquivo de upload excede o limite. | Upload Failed. File size should not be more than 25MB. |
uploadFileSizeZeroByte |
O texto do erro que é exibido quando o tamanho do arquivo de upload é de 0 bytes. | Upload Failed. Files of size zero bytes cannot be uploaded. |
uploadUnsupportedFileType |
O texto de erro que é exibido quando há uma tentativa de upload para um tipo de arquivo não suportado. | Upload Failed. Unsupported file type. |
userMessage |
Um indicador de mensagem do usuário para leitores de tela. É falado pelos leitores de tela antes das mensagens do usuário. | I say |
utteranceGeneric |
A descrição de fallback para a mensagem de resposta usada na declaração. | Message from skill. |
webViewAccessibilityTitle |
O título de acessibilidade padrão para webview que é lido em voz alta por leitores de tela. | In-widget WebView to display links |
webViewClose |
O título padrão label/tooltip do botão de fechamento da webview.
|
Done |
webViewErrorInfoDismiss |
A dica de ferramenta para o botão de descarte que é usado para fechar o link de fallback dentro da webview. | 'Dismiss' |
webViewErrorInfoText |
O texto informativo exibido na webview quando o link clicado não pode ser aberto dentro dela. O texto entre {0} e {/0} é definido como link original que é aberto em uma nova guia ou janela.
|
Sorry, we can't open this page in the chat window. Click {0}here{/0} to open it in your browser. |
yesText |
O rótulo do botão de confirmação Sim. | Yes |
editFieldErrorMessage |
A mensagem de erro no nível do campo que é exibida quando o valor inserido pelo usuário é inválido para esse campo. O SDK assume esta mensagem como padrão quando a habilidade não fornece uma mensagem de erro do cliente. | Field Input is invalid |
editFormErrorMessage |
A mensagem de erro no nível do formulário que é exibida abaixo da ação de envio do formulário para validação no lado do cliente. Esta mensagem é exibida quando pelo menos um dos campos não é válido e há mais de um campo. O SDK assume como padrão essa mensagem quando a habilidade não fornece uma mensagem de erro no payload da mensagem. | Some of the fields need your attention. |
noResultText |
O texto de status que é exibido quando não há correspondências de uma pesquisa de usuário na exibição de lista de várias seleções. | No more results |
Configurar Opções do Menu de Compartilhamento
- arquivos de mídia visual (imagens e vídeos)
- arquivos de áudio
- arquivos gerais, como documentos, PDFs e planilhas
- localização
A definição
shareMenuItems
permite restringir os itens exibidos no menu de compartilhamento. A definição aceita um array de strings com chaves mapeadas para os itens do menu de compartilhamento: 'visual'
para o item Compartilhar Imagem/Vídeo, 'audio'
para o item Compartilhar Áudio, 'file'
para o item Compartilhar Arquivo e 'location'
para o item Compartilhar Local. Você pode usar essas chaves, que não diferenciam maiúsculas de minúsculas, para especificar quais itens estão disponíveis no menu (['visual', 'location']
, por exemplo). Todos os itens de menu estão disponíveis quando o array está vazio ou quando um valor inválido é informado.
Você pode desativar a funcionalidade de anexo definindo
enableAttachment
como false
.
Não ative essa definição se a habilidade estabelecer conexão com uma instância do ODA na Versão 20.08 ou for executada em qualquer versão anterior à 20.08. Esta propriedade só se aplica a conexões ativadas por autenticação do cliente com as Versões 20.12 e superior da plataforma ODA.
Itens de Menu de Compartilhamento Personalizados
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)
}
O item de menu pode ser informado com ou sem a categoria string
.
Dica:
Para suportar labels em vários idiomas, recomendamos usar i18n em vez da taglabel
.
shareMenuItems
na variável settings
. Você define os labels informando-os com chaves share_
, que também são ilustradas nesse trecho de código. Você pode definir o label para um caractere curinga (*
) usando a chave 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'
}
}
}
Personalizar Classes CSS
Classe | Componente |
---|---|
oda-chat-launch-button
|
O botão acionador do widget de chat |
oda-chat-button-clear
|
O botão de limpeza de mensagens |
oda-chat-button-close
|
O botão de fechamento do widget |
oda-chat-button-narration
|
O botão de alternância de resposta de áudio da habilidade |
oda-chat-button-send
|
O botão de envio de mensagem |
oda-chat-button-upload
|
O botão de upload de arquivo |
oda-chat-card
|
A mensagem do cartão |
oda-chat-closing
|
Aplicado como um irmão ao oda-chat-connection-status quando o widget está sendo desconectado do servidor
|
oda-chat-connected
|
Aplicado como um irmão ao oda-chat-connection-status quando o widget está conectado ao servidor
|
oda-chat-connecting
|
Aplicado como um irmão a oda-chat-connection-status quando o widget está se conectando ao servidor
|
oda-chat-connection-status
|
O status da conexão. Cada valor de conexão tem sua própria classe também, como oda-chat-connected , oda-chat-disconnected ou oda-chat-connecting .
|
oda-chat-conversation
|
O contêiner da conversa |
oda-chat-disconnected
|
Aplicado como um irmão ao oda-chat-connection-status quando o widget é desconectado do servidor
|
oda-chat-footer
|
O rodapé do widget de chat |
oda-chat-footer-button
|
A classe comum para todos os botões do rodapé |
oda-chat-header
|
O cabeçalho do widget de chat |
oda-chat-header-button
|
A classe comum de todos os botões do cabeçalho |
oda-chat-icon-wrapper
|
O encapsulador da habilidade ou de uma pessoa exibido junto com a mensagem. |
oda-chat-left
|
O encapsulador da mensagem da habilidade |
oda-chat-logo
|
O logotipo no cabeçalho do widget |
oda-chat-message
|
A classe do encapsulador comum para todas as mensagens de chat |
oda-chat-message-action-location
|
O botão de ação da solicitação de localização |
oda-chat-message-action-postback
|
O botão de ação de postback |
oda-chat-message-actions
|
O encapsulador dos botões de ação |
oda-chat-message-bubble
|
A bolha de mensagem |
oda-chat-message-global-actions
|
O encapsulador de botões de ação global |
oda-chat-message-icon
|
A imagem da habilidade ou de uma pessoa que é exibida ao lado da mensagem. |
oda-chat-notification-badge
|
A placa de notificação para mensagens que não foram exibidas. |
oda-chat-rating-star
|
O botão de classificação por estrelas em uma mensagem de feedback |
oda-chat-rating-star-icon
|
O ícone SVG para o botão de estrela de classificação |
oda-chat-right
|
O encapsulador da mensagem do usuário |
oda-chat-title
|
O título no cabeçalho do widget |
oda-chat-user-input
|
A área de texto de entrada do usuário |
oda-chat-widget
|
O componente de chat expandido, que envolve o cabeçalho, a conversa e o rodapé do widget. |
oda-chat-wrapper
|
O encapsulador de todo o componente de chat |
Personalizar o Timestamp
Por padrão, o timestamp exibido no cabeçalho quando timestampHeaderMode
e timestampHeaderFormat
são definidos exibe o formato como o dia da semana, mês, data, ano e hora da localidade (am e pm). Por exemplo, quinta-feira, 13 de agosto de 2020, 9:52:22 AM. Você pode configurar esse timestamp informando opções de formatação na definição timestampFormat
. Você pode formatar o timestamp informando uma string padrão de tokens de formatação ou informando um objeto contendo opções Intl.DateTimeFormat
.
Formatar a Data/Hora com Strings Padrão
timestampFormat: 'hh:mm:ss a'
define o timestamp como 09:30:14 pm.
Esses tokens diferenciam maiúsculas de minúsculas; por exemplo, informar
yyyy
em vez de YYYY
impediria que o ano fosse exibido.
Componente | Token | Saída |
---|---|---|
Dia do mês |
|
|
Dia da semana |
|
|
Mês |
|
|
Ano |
|
|
Hora |
|
|
minuto |
|
|
Segundo |
|
|
Segundo Fracional |
|
|
AM/PM |
|
|
Fuso horário |
|
|
Formatar o Timestamp com Objetos Intl.DateTimeFormat
Propriedade | Valores |
---|---|
dateStyle |
'full' | 'long' | 'medium' | 'short' |
timeStyle |
'full' | 'long' | 'medium' | 'short' |
weekday |
|
day |
|
month |
|
year |
|
era |
|
hour |
|
minute |
|
second |
|
timeZoneName |
|
timeZone |
O fuso horário. Todas as implementações devem reconhecer UTC . O valor padrão é o fuso horário padrão do runtime. As implementações também podem reconhecer os nomes de fuso horário do banco de dados de fuso horário IANA, como Asia/Shanghai , Asia/Kolkata , America/New_York .
|
hour12 |
Se deve ser usado o formato de 12 horas (em vez do formato de 24 horas). Os valores são true e false .
|
Personalizar o Medidor de Classificação de Mensagem de Feedback
A mensagem do componente de feedback permite coletar feedback do usuário. Se você estiver usando o SDK 21.10, a apresentação padrão do componente de feedback será um sistema de classificação por estrelas, uma linha horizontal de estrelas destacadas à medida que os usuários passam o mouse sobre elas e as selecionam. Você pode alterar o comportamento do componente usando o componente Feedback do Usuário, mas pode personalizar a aparência dos componentes usando as definições do SDK.
rating
no campo icons
.
Dica:
Para a melhor experiência do usuário, use uma string SVG sólida sem uma cor de preenchimento, pois permite um destaque reconhecível ao passar o 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
}
})
A cor do ícone nos dois estados, desmarcada e pairada/selecionada, pode ser configurada com os campos de cor ratingStar
e ratingStarFill
na definição de cores, 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'
}
})
Dica:
Você pode personalizar a saída dos prompts pelo componente Feedback do Usuário editando os pacotes de recursos relacionados ao Feedback acessados por meio da página Configuração do Pacote de Recursos ou editando as chavessystemComponent_Feedback_
em um arquivo CSV do pacote de recursos exportado.
Enviar a Mensagem Inicial quando o Histórico de Conversas Estiver Vazio
initUserHiddenMessage
são enviadas independentemente do histórico de conversas do usuário; elas são enviadas na primeira vez que o widget de chat é aberto para cada sessão. Para enviar a mensagem inicial quando o histórico de conversas estiver vazio, vincule um listener de eventos ao método Bots.on()
. Por exemplo :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();
Injeção de Serviço de Síntese de Fala
- Muitas vezes, você está limitado a vozes não naturais e genéricas que podem prejudicar sua marca.
- O dispositivo de um usuário pode não suportar vozes específicas de gênero.
- Alguns frameworks nativos (Cordova e ReactNative entre eles) exigem bibliotecas de terceiros para serviços TTS porque suas webviews não expõem as APIs de síntese de fala nativas exigidas pelo Web SDK.
ttService
ou chamando o método setTTSService
(descrito na documentação que acompanha o SDK). Você pode usar um serviço fornecido pela Oracle, como o serviço Oracle Cloud Infrastructure (OCI) Speech, ou um fornecido por terceiros.
Texto para fala
- Flag de recurso:
enableBotAudioResponse: true
(O padrão éfalse
.) - Serviço TTS padrão:
WebSDK.TTS.oracle
- Configuração de recurso:
ttsVoice
Você pode enriquecer a experiência de conversação permitindo que o TTS (text-to-speech) fale as respostas à medida que elas chegam ao SDK. O SDK fornece dois tipos de serviço TTS prontos para uso: WebSDK.TTS.platform
e WebSDK.TTS.oracle
. Por padrão, o SDK usa o serviço de Fala do OCI (Oracle Cloud Infrastructure) para respostas faladas em um tom mais naturalista. Este serviço fornece uma experiência de marca fácil porque oferece várias vozes. No entanto, você pode usar o serviço TTS dependente da plataforma, WebSDK.TTS.platform
, que é baseado na API do Web Speech. Ele usa as APIs de síntese de fala no dispositivo do usuário para falar as respostas.
ttsVoice
para configurar a voz para o TTS. Cada item no array deve ser um objeto que tenha pelo menos um campo lang
ou um campo name
. O SDK procura a disponibilidade de cada voz na ordem em que são transmitidas na configuração. A primeira partida completa é definida como a voz. Se nenhuma correspondência exata for encontrada, o SDK usará a primeira correspondência com base no valor lang
sozinho. Se ainda não houver correspondência, o SDK usará a voz padrão.const settings = {
...,
enableBotAudioResponse: true,
ttsVoice: [{
lang: 'en-US',
name: 'Samantha'
}, {
lang: 'en-US',
name: 'Alex'
}, {
lang: 'en-UK'
}]
}
Para personalizar a forma como as declarações são faladas, o array ttsVoice
permite especificar propriedades opcionais pitch
, rate
e volume
em cada item. Essas propriedades correspondem aos mesmos campos na interface SpeechSynthesisUtterance.
- A propriedade
pitch
pode ter um valor entre 0 e 2. - A propriedade
rate
pode ter um valor entre 0,1 e 10. - A propriedade
volume
pode ter um valor entre 0 e 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 de Serviço de Síntese de Fala
SpeechSynthesisService
para a instância de serviço TTS que você vai injetar./**
* 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;
}
O objeto
SpeechSynthesisServiceEvent
tem dois eventos, TTSPlay
e TTSEnd
:const SpeechSynthesisServiceEvent = {
TTSPlay: 'tts:play',
TTSEnd: 'tts:end'
}
setTTSService(service)
.
Depois que o serviço TTS tiver sido injetado, o SDK tratará as chamadas para os métodos de serviço para emitir as mensagens. No entanto, você pode chamar esses métodos diretamente ou usar os métodos TTS expostos pelo SDK para qualquer requisito. No modo headless, por exemplo, você pode chamar o método Bots.speakTTS(message)
para transmitir uma mensagem à medida que ela é recebida da habilidade. O SDK trata o parsing do texto declarável da mensagem e a passagem desse texto para o serviço TTS para que ele possa ser declarado.