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:

  1. Se você ainda não tiver feito isso, configure um serviço de tradução para sua instância do Assistente Digital:
    1. Clicando em ícone para abrir o menu lateral para abrir o menu lateral e selecionando Definições > Serviço de Tradução.
    2. Clicando em + Serviço.
    3. 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.
  2. Defina o serviço de tradução em seu assistente digital desta forma:
    1. Clicando em ícone para abrir o menu lateral para abrir o menu lateral, selecionando Desenvolvimento > Assistentes Digitais e selecionando seu assistente digital.
    2. Na barra de navegação esquerda do assistente digital, clicando no ícone Definições (uma imagem do ícone Definições da barra de navegação esquerda) e selecionando a guia Geral.
    3. Navegando até a lista drop-down Serviço de Tradução e selecionando o serviço de tradução.

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: {}
Observação

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 (Ícone 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 (uma imagem do ícone Definições da barra de navegação esquerda), 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.

Para criar e preencher um pacote de recursos para um assistente digital.
  1. Na barra de navegação esquerda do assistente digital, clique em Ícone Pacote de Recursos..

  2. Clique em Adicionar Pacote.

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

  4. 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.
  5. Opcionalmente, preencha o campo Anotação para ajudar outros desenvolvedores a entender para que serve a string e onde ela é usada.
  6. Clique em Criar Entrada.

  7. Para adicionar uma versão de idioma adicional da string, clique em Adicionar Idioma.

  8. 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 ou de 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.

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

  1. Na navegação esquerda do assistente digital, clique em Ícone Habilidades
  2. Selecione uma habilidade.
  3. 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}
  4. 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.
  5. Repita a etapa anterior para as outras declarações de exemplo da habilidade.
  6. Repita as quatro etapas anteriores para cada habilidade.
Observação

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

  1. Na barra de navegação esquerda do assistente digital, clique no ícone Definições (uma imagem do ícone Definições da barra de navegação esquerda) e selecione a guia Configurações.

  2. 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:

  1. 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}.
  2. 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 Ícone Exportar Pacote de Recursos 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 Ícone Importar Pacote de Recursos.

Chamada Explícita em Assistentes Digitais Localizados

Em assistentes digitais de vários idiomas (e em um único idioma que não seja o inglês), a chamada explícita de habilidades é reconhecida pelo assistente digital no idioma detectado e em inglês.