Localização de Assistentes Digitais
Se você tem habilidades para públicos que não falam inglês, é provável que você queira localizar qualquer assistente digital que também possa conter essas habilidades. Ao localizar um assistente digital, você garante que ele detecte o idioma do usuário e apresente mensagens de boas-vindas, ajuda, desambiguação e outras mensagens nesse idioma.
Você pode usar uma destas abordagens para localizar um assistente digital:
-
Crie um assistente digital de vários idiomas no qual você:
- Adicione um serviço de tradução.
- Configure o componente
System.DetectLanguage
em quaisquer habilidades que você deseja adicionar ao assistente digital para interagir com o usuário no idioma detectado pelo assistente digital. - Como opção (mas de preferência), adicione pacotes de recursos para um ou mais idiomas para labels, prompts e mensagens do assistente digital. Isso é desejável porque permite que você controle a elaboração das respostas do assistente digital.
- Adicione habilidades configuradas com um serviço de tradução e nas quais os dados de treinamento estejam em inglês. Consulte Habilidades de Vários Idiomas com Tradução Automática.
-
Crie um assistente digital de idioma único que não seja o inglês no qual você:
- Adicione um serviço de tradução.
- Configure o componente
System.DetectLanguage
em quaisquer habilidades que você deseja adicionar ao assistente digital para interagir com o usuário no idioma detectado pelo assistente digital. - Forneça traduções para as várias strings de saída (usando pacotes de recursos ou diretamente nos campos das propriedades).
- Adicione habilidades que sejam configuradas com um serviço de tradução e nas quais o corpus de treinamento esteja no idioma de destino da habilidade e do assistente digital. Consulte Habilidades de Idioma Único Diferente do Inglês.
Adicionar um Serviço de Tradução a um Assistente Digital
Não importa qual abordagem você usa para localizar um assistente digital, é necessário configurar um serviço de tradução. São estas as etapas:
- Se você ainda não tiver feito isso, configure um serviço de tradução para sua instância do Assistente Digital:
- Clicando em
para abrir o menu lateral e selecionando Definições > Serviço de Tradução.
- Clicando em + Serviço.
- Digitando o URL e o token de Autorização para o serviço Microsoft Translator ou a API do Google Translation na caixa de diálogo Serviços de Tradução.
Consulte a documentação do Microsoft Translator e da API do Google Translation para saber como obter o URL e o token de acesso.Observação
Para usar a API do Google Translation, gere a Chave de API. Você cria essa chave na Console do GCP ( APIs e serviços > Credenciais). Para saber mais, consulte a Documentação do Google Cloud Platform. - Clicando em
- Defina o serviço de tradução em seu assistente digital desta forma:
- Clicando em
para abrir o menu lateral, selecionando Desenvolvimento > Assistentes Digitais e selecionando seu assistente digital.
- Na barra de navegação esquerda do assistente digital, clicando no ícone Definições (
) e selecionando a guia Geral.
- Navegando até a lista drop-down Serviço de Tradução e selecionando o serviço de tradução.
- Clicando em
Ativar Detecção de Idioma pelo Assistente Digital
Por padrão, se um assistente digital for configurado com um serviço de tradução, o assistente digital detectará o idioma do usuário da mesma forma que uma habilidade faz com o componente System.DetectLanguage
.
No entanto, você também precisa se certificar de que as habilidades no assistente digital usam o idioma detectado pelo assistente digital. Quando uma habilidade faz parte de um assistente digital, ele traduz a entrada do usuário para o inglês e passa esse texto traduzido em inglês para a habilidade. Portanto, por padrão, o componente System.DetectLanguage
da habilidade detectaria inglês como idioma e definiria a variável profile.LanguageTag
como inglês, mesmo que o texto inserido pelo usuário não fosse em inglês. Para impedir essa alternância de volta para inglês, você precisa adicionar a seguinte propriedade ao componente System.DetectLanguage
em cada habilidade:
useExistingProfileLanguageTag: true
Isso garante que a habilidade respeitará o valor da variável profile.LanguageTag
definida pelo assistente digital.
Veja um exemplo do componente System.DetectLanguage
de uma habilidade com a propriedade useExistingProfileLanguageTag
definida:
detectLang:
component: "System.DetectLanguage"
properties:
useExistingProfileLanguageTag: true
transitions: {}
Você pode adicionar essa propriedade a todas as suas habilidades, mesmo que nem todas sejam usadas em um assistente digital. Se a habilidade não fizer parte de um assistente digital, a propriedade não terá efeito.
Traduzindo Texto de Saída
Para texto em seu assistente digital que é apresentado aos usuários, você pode usar uma destas abordagens de tradução:
- Use o serviço de tradução configurado para o assistente digital.
Se você usar essa abordagem, só precisará que suas mensagens de saída estejam em inglês. Nenhuma outra configuração é necessária. O serviço de tradução configurado traduzirá automaticamente quaisquer mensagens de saída para o idioma do usuário.
- Use um pacote de recursos para traduzir as mensagens de saída.
Observação
Para qualquer mensagem de saída que não tenha uma referência a uma chave de pacote de recursos, o serviço de tradução será usado automaticamente para traduzir as mensagens.
Pacotes de Recursos para Assistentes Digitais
Quando desejar controlar a elaboração de respostas do seu assistente digital (em vez de depender do texto fornecido pelo serviço de tradução), use pacotes de recursos. Você poderá fornecer pacotes de recursos para quantos idiomas precisar.
O processo de tradução com pacotes de recursos consiste em executar as seguintes etapas:
- Identifique os campos e propriedades que precisam ser traduzidos.
- Crie um pacote de recursos.
- No pacote de recursos, para cada um dos itens a ser traduzido, crie chaves, valores para o idioma padrão e traduções para esses valores em quantos idiomas você precisar.
- Para os campos e propriedades para os quais você forneceu traduções, informe referências à chave do pacote de recursos correspondente. Para strings simples, use o seguinte formato de expressão (em que
rb
é um identificador reservado para o pacote de recursos):${rb.BundleKeyName}
Para propriedades que usam variáveis, use o seguinte formato de expressão:
${rb('bundleKey', '${variableForParam0}', '${variableForParam1}')}
Strings Traduzíveis em Assistentes Digitais
Antes de criar chaves de pacote de recursos para um assistente digital, você naturalmente precisa identificar quais strings precisam ser traduzidas.
Você pode encontrar as strings traduzíveis nos dois lugares a seguir:
- Na página Habilidades (
) do assistente digital.
Aqui você encontrará as strings que são usadas principalmente para os cartões de ajuda que são exibidos quando um usuário pede ajuda no assistente digital e quando o assistente digital recebe o usuário pela primeira vez.
Para cada habilidade, você pode traduzir- Os campos Descrição de Uma Sentença, Descrição e Chamada.
- As Declarações de Exemplo.
- Na página Definições (
), na guia Configurações, na seção Parâmetros da Conversa.
Observação
Somente as propriedades que se aplicam ao texto de saída podem acessar o pacote de recursos. Outros, como Cartões de Ajuda - Otimizar Renderização em Canais Somente Texto (que espera uma expressão booliana) não podem.
Criar um Pacote de Recursos
Depois de identificar as strings a serem traduzidas, crie um pacote de recursos e, em seguida, crie as chaves, os valores padrão e as traduções para cada string.
-
Na barra de navegação esquerda do assistente digital, clique em
.
-
Clique em Adicionar Pacote.
-
No campo Chave, informe um valor que você possa usar para identificar o campo ou a propriedade a que ele corresponde.
Por exemplo, se a chave for para a primeira declaração de exemplo de uma habilidade de pizza, você poderá usar algo como
PizzaSkillExampleUtterance1
. -
Informe o texto da entrada no idioma que você deseja usar como idioma padrão para o assistente digital. (O idioma padrão não precisa ser o inglês. É apenas o idioma que será usado para mensagens de saída se não houver traduções para o idioma detectado.)
Para propriedades específicas da habilidade (como Chamada e Declarações de Exemplo), talvez você queira usar os valores herdados das habilidades.
Para parâmetros de conversa do assistente digital (como Resposta de Confirmação), talvez você queira usar apenas os valores padrão para essas propriedades se o idioma padrão do assistente digital for inglês.
Observação
Para propriedades que usam variáveis do sistema como parâmetros para executar ações como acessar o nome de uma intenção ou habilidade, use códigos de substituição ({0}
,{1}
, etc.) para os parâmetros. Em seguida, na referência da propriedade à chave do pacote, as variáveis do sistema fornecidas podem ser especificadas. - Opcionalmente, preencha o campo Anotação para ajudar outros desenvolvedores a entender para que serve a string e onde ela é usada.
-
Clique em Criar Entrada.
-
Para adicionar uma versão de idioma adicional da string, clique em Adicionar Idioma.
-
Na caixa de diálogo Criar Entrada, preencha os campos a seguir e clique em Criar.
-
Idioma — Adicione uma tag de idioma IETF BCP 47 como
fr
para francês oude
para alemão. -
Texto - A string de saída desse idioma.
-
Anotação — (Opcional). Informações para ajudar outros desenvolvedores a entender para que serve a string e onde ela é usada.
-
-
Para cada string adicional que você precisar traduzir, crie outra entrada clicando em Adicionar Chave e repetindo as etapas de 3 a 8.
Fazer Referência a Chaves do Pacote de Recursos para Cartões de Ajuda em um Assistente Digital
Quando um assistente digital recebe o usuário ou apresenta informações de ajuda para as habilidades que ele contém, ele usa valores da página Habilidades no assistente digital para preencher os cartões de boas-vindas e de ajuda. Você pode traduzir as informações que aparecem nesses cartões de ajuda editando alguns campos na página Habilidades.
- Na navegação esquerda do assistente digital, clique em
- Selecione uma habilidade.
- Atualize os campos Descrição de Uma Sentença, Descrição e Chamadacom referências a pacotes de recursos no form:
${rb.BundleKeyName}
Por exemplo, você pode usar o seguinte para uma referência a uma chave para a descrição de uma linha de uma habilidade de pizza.
${rb.PizzaSkillShortDescription}
- Na seção Exemplos da página, passe o mouse sobre um exemplo, clique no ícone Editar e substitua o texto por uma referência a uma chave de pacote de recursos como acima.
- Repita a etapa anterior para as outras declarações de exemplo da habilidade.
- Repita as quatro etapas anteriores para cada habilidade.
Ao atualizar a versão de uma habilidade no assistente digital, é apresentada a chave Substituir Modelo de Interação. Se você mantiver essa chave na posição ON, os valores da chamada e as declarações de exemplo serão atualizados com valores definidos na guia Assistente Digital da página Definições da habilidade atualizada. Isso pode significar que você precisará traduzir a chamada e as declarações de exemplo novamente.
Fazer Referência a Chaves do Pacote de Recursos para Prompts e Mensagens
Os assistentes digitais têm várias propriedades de configuração que são usadas para exibir vários prompts e mensagens.
Para definir a saída de uma propriedade de configuração, você faz referência à variável de contexto do pacote de recursos e à chave de mensagem usando notação de ponto. Por exemplo: ${rb.WhatType}
.
-
Na barra de navegação esquerda do assistente digital, clique no ícone Definições (
) e selecione a guia Configurações.
-
Para as propriedades na seção Parâmetros da Conversa da página, informe as referências às chaves do pacote de recursos que você definiu para cada uma delas.
Por exemplo, se você tiver uma chave em seu pacote de recursos chamada
daAcknowledgementResponse
para a propriedade Resposta de Confirmação, informe o seguinte no campo Resposta de Confirmação:${rb.daAcknowledgementResponse}
Variáveis do Sistema em Pacotes de Recursos
Você também pode usar parâmetros em valores para chaves de pacotes, o que permite o uso de variáveis do sistema na saída. Por exemplo, o valor padrão da propriedade Confirmação do Fluxo de Saída é:
Exited ${system.routingFromIntent} in ${system.routingFromSkill}.
Você pode preservar as referências às variáveis do sistema (nesse caso, system.routingFromIntent
e system.routingFromSkill
) em suas respostas traduzidas, fazendo o seguinte:
- No valor da chave do pacote de recursos correspondente, insira
{0}
,{1}
etc. como códigos de substituição para cada variável do sistema. Por exemplo, na entrada em inglês (ou padrão) criada para a propriedade Confirmação de Fluxo de Saída, você pode usar o seguinte texto:Exited {0} in {1}.
- Em seguida, no valor da propriedade, informe a referência à chave do pacote no seguinte formato:
${rb('bundleKey', '${systemVariableForParam0}', '${systemVariableForParam1}')}
Por exemplo, esta é a aparência da propriedade Confirmação do Fluxo de Saída (em que
daExitFlowConfirmation
é a chave do pacote correspondente):${rb('daExitFlowConfirmation', '${system.routingFromIntent}', '${system.routingFromSkill}')}
Entradas de Amostra do Pacote de Recursos
Por conveniência, aqui está uma lista das propriedades de personalização que você pode traduzir junto com os nomes sugeridos para as chaves do pacote e as expressões que você usaria para fazer referência a essas chaves do pacote dos campos das propriedades. Você não precisa usar os nomes das chaves do pacote sugeridas aqui.
Propriedade a Ser Traduzida | Nome Sugerido para a Chave do Pacote | Texto Padrão em Inglês | Expressão para Fazer Referência à Chave do Pacote |
---|---|---|---|
Resposta de Confirmação | daAcknowledgementResponse |
Okay |
${rb.daAcknowledgementResponse} |
Resposta Não | daAnswerNo |
No |
${rb.daAnswerNo} |
Resposta Sim | daAnswerYes |
Yes |
${rb.daAnswerYes} |
Fluxo de Saída do Assistente Digital na Seleção | daExitFlowInSelection |
Exit conversation |
${rb.daExitFlowInSelection} |
Habilidade de Saída do Assistente Digital na Seleção | daExitSkillInSelection |
Exit {0} |
${rb('daExitSkillInSelection', '${system.routingFromSkill}')} |
Prompt Sair da Atual para Ir para a Nova Habilidade | daExitCurrentToGoToNewSkillPrompt |
This will exit current conversation. Do you want to go to {0} now? |
${rb('daExitCurrentToGoToNewSkillPrompt', '${system.routingToSkill}')} |
Confirmação do Fluxo de Saída | daExitFlowConfirmation |
Exited {0} in {1}. |
${rb('daExitFlowConfirmation', '${system.routingFromIntent}', '${system.routingFromSkill}')} |
Prompt de Saída | daExitPrompt |
Do you want to exit {0} in {1} now? |
${rb('daExitPrompt', '${system.routingFromIntent}', '${system.routingFromSkill}')} |
Confirmação da Habilidade de Saída | daExitSkillConfirmation |
Exited {0}. |
${rb('daExitSkillConfirmation', '${system.routingFromSkill}')} |
Informações de Fluxo na Seleção | daFlowInformationInSelection |
{0} in {1} |
${rb('daFlowInformationInSelection', '${system.routingToIntent}', '${system.routingToSkill}')} |
Prompt de Seleção de Fluxo | daFlowSelectionPrompt |
Do you want to go to: |
${rb.daFlowSelectionPrompt} |
Cartões de Ajuda - Rodapé de Detalhes da Habilidade | rb.daHelpCardsSkillDetailFooter |
Enter the number prefix to execute the action of your choice, or enter '0' to go back to the skill list. |
${rb.daHelpCardsSkillDetailFooter} |
Cartões de Ajuda - Cabeçalho de Detalhes da Habilidade | daHelpCardsSkillDetailHeader |
Here are some sample actions |
${rb.daHelpCardsSkillDetailHeader} |
Cartões de Ajuda - Rodapé da Lista de Habilidades | daHelpCardsSkillListFooter |
Enter skill number to see sample actions supported by the skill. |
${rb.daHelpCardsSkillListFooter} |
Prompt de ajuda Mostrar mais | daHelpShowMorePrompt |
Show more |
${rb.daHelpShowMorePrompt} |
Prompt de ação do histórico desativado | daHistoryActionDisabledPrompt |
Sorry, this choice is no longer available. |
${rb.daHistoryActionDisabledPrompt} |
Mensagem de Interrupção | daInterruptMessage |
Switching to {0} in {1} now. |
${rb('daInterruptMessage', '${system.routingToIntent}', '${system.routingToSkill}')} |
Prompt de Interrupção | daInterruptPrompt |
Do you want to switch to {0} in {1} now? |
${rb('daInterruptPrompt', '${system.routingToIntent}', '${system.routingToSkill}')} |
Prompt de Interrupção para Não Corresponder ao Fluxo | daInterruptToUnmatchFlowPrompt |
No match found in {0}. Do you still want to switch to it? |
${rb('daInterruptToUnmatchFlowPrompt', '${system.routingToSkill}')} |
Mensagem de Ação do Histórico Inválida | daInvalidHistoryActionMessage |
Sorry, this choice is no longer available. |
${rb.daInvalidHistoryActionMessage} |
Label para Perguntas e Respostas | daLabelForQnA |
Ask Question |
${rb.daLabelForQnA} |
Prompt de Nenhuma Correspondência Encontrada | daNoMatchesWereFoundPrompt |
No matches were found. Here are some things you can do: |
${rb.daNoMatchesWereFoundPrompt} |
Prompt de Nenhum Bot de Habilidade | daNoSkillBotPrompt |
You don't have any skills registered yet. Register one or more skills so that you can see the digital assistant in action. |
${rb.daNoSkillBotPrompt} |
Nenhuma das opções acima | daNoneOfTheAbove |
None of the above |
${rb.daNoneOfTheAbove} |
Prompt de Nada para Sair | daNothingToExitPrompt |
There's nothing to exit. You don't have any requests in progress. |
${rb.daNothingToExitPrompt} |
Prompt de Interrupção da Notificação | daNotificationInterruptPrompt |
You have just received a notification from {0}. Would you like to switch to it? |
${rb('daNotificationInterruptPrompt', '${system.routingToSkill}')} |
Mensagem de Retomada | daResumeMessage |
Resuming {0} in {1} now. |
${rb('daResumeMessage', '${system.routingFromIntent}', '${system.routingFromSkill}')} |
Prompt de Retomada | daResumePrompt |
Do you want to resume {0} in {1} now? |
${rb('daResumePrompt', '${system.routingFromIntent}', '${system.routingFromSkill}')} |
Label de Ajuda de Saída do Bot de Habilidade | daSkillBotExitOnHelpLabel |
Exit conversation and view assistant help |
${rb.daSkillBotExitOnHelpLabel} |
Prompt de Ajuda do Bot de Habilidade | daSkillBotHelpPrompt |
You are at {0}. Here are some things you can do: |
${rb('daSkillBotHelpPrompt', '${system.routingFromSkill}')} |
Label Exibir Ajuda Novamente do Bot de Habilidade | daSkillBotViewHelpAgainLabel |
View current skill help again |
${rb.daSkillBotViewHelpAgainLabel} |
Fluxo de Boas-vindas da Habilidade na Seleção | daSkillWelcomeFlowInSelection |
Welcome |
${rb.daSkillWelcomeFlowInSelection} |
Mensagem de Início | daStartMessage |
Starting {0} in {1} now. |
${rb('daStartMessage', '${system.routingFromIntent}', '${system.routingFromSkill}')} |
Prompt de Início | daStartPrompt |
Do you want to start with {0} in {1} now? |
${rb('daStartPrompt', '${system.routingFromIntent}', '${system.routingFromSkill}')} |
Prompt de Boas-vindas do Bot de Habilidade | daSkillBotWelcomePrompt |
Welcome to {0}. |
${rb('daSkillBotWelcomePrompt', '${system.routingFromSkill}')} |
Prompt de Erro da Sessão Expirada | daExpiredSessionErrorPrompt |
Your session has expired. Please start again. |
${rb.daExpiredSessionErrorPrompt} |
Prompt de Erro de Máximo de Estados Excedidos | daMaxStatesExceededErrorPrompt |
Your session appears to be in an infinite loop. |
${rb.daMaxStatesExceededErrorPrompt} |
Prompt de Cancelamento do OAuth | daOAuthCancelPrompt |
Authentication canceled. |
${rb.daOAuthCancelPrompt} |
Prompt de Sucesso do OAuth | daOAuthSuccessPrompt |
Authentication successful! You can return to the conversation. |
${rb.daOAuthSuccessPrompt} |
Prompt de Erro Inesperado | daUnexpectedErrorPrompt |
Oops I'm encountering a spot of trouble. Please try again later... |
${rb.daUnexpectedErrorPrompt} |
Exportar e Importar Pacotes de Recursos
Você pode exportar e importar pacotes de recursos na forma de um arquivo CSV, o que permite trabalhar com os pacotes off-line.
O arquivo CSV precisa ter as seguintes colunas:
languageTag
key
message
annotation
Para exportar um arquivo CSV com o pacote de recursos existente:
-
Na página Pacote de Recursos da habilidade ou do assistente digital, clique em
para exportar um arquivo CSV com o pacote de recursos existente.
Mesmo que você ainda não tenha adicionado chaves ao pacote de recursos, um arquivo com o formato necessário do CSV será exportado.
Para importar um arquivo de pacote de recursos:
- Na página Pacote de Recursos da habilidade ou do assistente digital, clique em
.