IBM Cloud Docs
Controlando o fluxo de conversação

Controlando o fluxo de conversação

Entenda como o seu diálogo é processado quando uma pessoa interage com o seu assistente no tempo de execução. Aprenda a usar o fluxo de conversa ao seu favor e altere o fluxo, se necessário.

É possível impactar o fluxo de uma conversa com os recursos a seguir:

Desambiguação

A desambiguação instrui o assistente a pedir ajuda ao cliente quando mais de um nó de diálogo pode responder à entrada de um cliente. Em vez de adivinhar qual nó processar, seu assistente compartilha uma lista das opções do nó superior com o usuário e solicita que o usuário selecione a correta.

Mostra um exemplo de conversa entre um usuário e o assistente, em que o assistente pede esclarecimentos ao usuário.
O assistente solicita esclarecimento

A desambiguação é acionada quando as condições a seguir são atendidas:

  • As pontuações de confiança das intenções secundárias que são detectados na entrada do usuário têm valor próximo ao da pontuação de confiança da intenção principal.
  • A pontuação de confiança da intenção principal é acima de 0.2.

Mesmo quando essas condições são atendidas, a desambiguação não ocorre a menos que dois ou mais nós independentes em seu diálogo atendam aos critérios a seguir:

  • A condição de nó inclui uma das intenções que acionaram a desambiguação.
  • Uma descrição do propósito do nó é fornecida para o nó no campo nome do nó. (Como alternativa, é possível incluir uma descrição no campo de nome do nó externo.)

É provável que um nó com uma condição de nó booleano avaliada como true seja incluído na lista de desambiguação. Por exemplo, se o nó verificar um tipo de entidade e a entidade for mencionada na entrada do usuário, ela estará qualificada para ser incluída na lista. Esses nós não acionam a desambiguação, mas, se ela for acionada, provavelmente eles serão incluídos na lista de desambiguação resultante.

Saiba mais

Exemplo de desambiguação

Por exemplo, você tem um diálogo que possui dois nós com condições de intenção que abordam solicitações de cancelamento. As condições são:

  • eCommerce_Cancel_Product_Order
  • Customer_Care_Cancel_Account

Se o usuário disser i must cancel it today, as seguintes intenções poderão ser detectadas na entrada:

[
  {"intent":"Customer_Care_Cancel_Account","confidence":0.5602024316787719},
  {"intent":"eCommerce_Cancel_Product_Order","confidence":0.46903514862060547},
  {"intent":"Customer_Care_Appointments","confidence":0.29033891558647157},
  {"intent":"General_Greetings","confidence":0.2894785046577454},

Se você fizer o teste no painel "Try it out", poderá passar o mouse sobre o ícone do olho para ver as três principais intenções que foram reconhecidas na entrada de teste.

Mostra as 3 principais intenções reconhecidas na entrada do usuário do painel Try it out.
Principais intenções

O assistente está 0.5618281841278076 (56%) confiante de que o objetivo do usuário corresponde à intenção #Customer_Care_Cancel_Account. Se outro intento tiver uma pontuação de confiança que esteja próxima da pontuação dessa intenção principal, a desambiguação será acionada. Neste exemplo, a intenção #eCommerce_Cancel_Product_Order tem uma pontuação de confiança próxima de 46%.

Como resultado, quando o usuário diz i must cancel it today, é provável que ambos os nós de diálogo sejam considerados candidatos viáveis para responder. Para determinar qual nó de diálogo deve ser processado, o assistente solicita que o usuário selecione um. E para ajudar o usuário a escolher entre eles, o assistente fornece um resumo curto do que cada nó faz. O texto do resumo é extraído diretamente do campo nome do nó. Se ele estiver presente e uma descrição for incluída nele, o texto será tirado do campo nome do nó externo.

A descrição exibida na lista de desambiguação é proveniente do nome (ou nome do nó externo) do último nó que é processado na ramificação na qual a correspondência de intenção ocorre. Para obter mais informações, consulte Desativar nós utilitários jumped-to.

O serviço solicita que o usuário escolha em uma lista de opções de diálogo, incluindo Cancelar uma conta, Cancelar um pedido de produto e Nenhuma das opções acima.
Escolher opções

Note que o assistente reconhece o termo today na entrada do usuário como uma data, uma menção à entidade @sys-date. Se a árvore de diálogo contiver um nó que condiciona a entidade @sys-date, provavelmente ela também será incluída na lista de escolhas de desambiguação. Esta imagem mostra ela incluído na lista como a opção Capturar informações de data.

O serviço solicita que o usuário escolha em uma lista de opções de diálogo, incluindo informações sobre a data de captura.
Capturar informações de data

Editando a configuração de desambiguação

A desambiguação é ativada automaticamente para todas as novas habilidades de diálogo. É possível mudar as configurações aplicadas automaticamente à desambiguação por meio da página Opções.

Para editar as configurações de desambiguação, conclua as etapas a seguir:

  1. Em Opções, selecione Desambiguação.

  2. No campo Mensagem de desambiguação, inclua um texto para mostrar antes da lista de opções de nós de diálogo. Por exemplo, O que você quer fazer?

  3. No campo Anything else (Qualquer outra coisa), adicione texto a ser exibido como uma opção extra que os usuários podem escolher se nenhuma das outras opções do nó de diálogo refletir o que o usuário deseja fazer. Por exemplo, Nenhum dos anteriores.

    Mantenha a mensagem curta, assim ela é exibida em sequencial com as outras opções. A mensagem deve ter menos de 512 caracteres. Para obter informações sobre o que o assistente faz se um usuário escolher essa opção, consulte Manipulando nenhum dos anteriores.

  4. Se quiser limitar o número de opções de desambiguação que podem ser exibidas para um usuário, no campo Número máximo de sugestões, especifique um número entre 2 e 5.

Suas mudanças são salvas automaticamente.

Você pode usar a API para modificar mais configurações de desambiguação. Essas configurações incluem a sensibilidade da desambiguação, que afeta a frequência com que a desambiguação é acionada e quantas opções estão incluídas. Para obter mais informações, consulte a Referência da API

Escolhendo nós para não mostrar como opções de desambiguação

Todos os nós são elegíveis para serem incluídos na lista de desambiguação.

  • Os nós em qualquer nível da hierarquia de árvore são incluídos.
  • Os nós que condicionam intenções, entidades, condições especiais, variáveis de contexto ou qualquer combinação desses valores são incluídos.

Considere ocultar alguns nós da lista de desambiguação.

  • Ocultar nós raiz com as condições welcome e anything_else

    A menos que você tenha adicionado funções extras a esses nós, eles normalmente não são opções úteis para incluir em uma lista de desambiguação.

  • Ocultar nós utilitários jumped-to

    O texto na lista de desambiguação é preenchido a partir do nome do nó (ou nome do nó externo) do último nó processado no ramo em que a condição do nó é correspondida.

    Não inclua nós de utilitário, como agradecer ao usuário, dizer adeus ou pedir feedback de qualidade de resposta, na lista de desambiguação em vez de uma frase que descreve o propósito do nó raiz correspondente.

    Por exemplo, talvez um nó raiz com a condição de intenção correspondente de #store-location vá para um nó que pergunta aos usuários se eles estão satisfeitos com a resposta. Se o nó #check_satisfaction tiver um nome de nó e uma desambiguação, o nome do nó saltado será exibido na lista de desambiguação. Como resultado, Check satisfaction é exibido na lista de desambiguação para representar a ramificação #store-location no lugar do nome Get store location do nó raiz.

  • Ocultar nós raiz que condicionam apenas uma entidade ou variável de contexto

    Apenas um nó com uma intenção correspondida pode acionar a desambiguação. No entanto, quando acionado, qualquer nó com uma condição que corresponda é incluído na lista de desambiguação. Quando o diálogo inclui nós que condicionam as entidades, por exemplo, a ordem de nós na hierarquia de árvore pode se tornar significativa de maneiras inesperadas.

    • A ordem dos nós afeta o fato de a desambiguação ser acionada ou não. Examine o cenário usado anteriormente para introduzir a desambiguação, por exemplo. Se o nó que condiciona @sys-date fosse colocado em uma posição mais alta na árvore de diálogo do que os nós que condicionam as intenções de #Customer_Care_Cancel_Account e #eCommerce_Cancel_Product_Order, a desambiguação nunca seria acionada quando um usuário digitasse i must cancel it today. Seu assistente consideraria a data mencionada ( today ) mais importante do que as referências de intenção devido ao posicionamento dos nós correspondentes na árvore.

    • A ordem dos nós afeta os nós que são incluídos na lista de opções de desambiguação. Às vezes, um nó não é listado como uma opção de desambiguação conforme o esperado. Isso poderá acontecer se um valor de condição também for referenciado por um nó que não é elegível para inclusão na lista de desambiguação por qualquer motivo. Por exemplo, uma entidade pode acionar um nó que está situado anteriormente na árvore de diálogo, mas não está habilitado para desambiguação. Se a mesma entidade for a única condição para um nó habilitado para desambiguação, mas estiver em uma posição inferior na árvore, talvez não seja uma opção de desambiguação porque o assistente nunca a alcança. Se ele tiver correspondido ao nó anterior e sido omitido, o assistente poderá não processar o nó posterior.

Ocultar completamente nós da desambiguação

É possível evitar que cada nó em um diálogo ou um nó de diálogo individual seja incluído na lista de desambiguação.

Para desativar completamente a desambiguação:

  1. Em Opções, selecione Desambiguação.

  2. Coloque o interruptor em Off.

Para evitar que um único nó de diálogo seja incluído na lista de desambiguação:

  1. Clique em um nó de diálogo para abri-lo na visualização de edição.

  2. Clique em Configurações.

  3. Configure o comutador Mostrar nome do nó para Desativado.

    Mais Se você adicionou uma descrição resumida do nó ao campo de nome do nó externo em vez do campo de nome, remova-a.

    O campo nome do nó externo tem dois propósitos. Ele fornece informações sobre o nó para os clientes quando está incluído em uma lista de desambiguação. Ele também descreve o nó em um resumo de bate-papo compartilhado com agentes da central de serviço quando uma conversa é transferida para uma pessoa. O campo nome do nó externo só fica visível em habilidades que fazem parte de uma instância de plano pago. Se o campo nome do nó externo tiver texto, esse texto será usado, independentemente de haver ou não texto no campo nome.

Para cada nó, teste cenários nos quais você espera que o nó seja incluído na lista de opções de desambiguação. Os testes lhe dão a chance de ajustar a ordem dos nós ou outros fatores que possam afetar o funcionamento da desambiguação em tempo de execução. Consulte Testando a desambiguação.

Priorizando um nó sobre a desambiguação

Alguns nós são importantes o suficiente para o seu cliente para que você queira que eles sejam retornados sozinhos, fora de uma lista de desambiguação, quando o assistente estiver confiante de que o nó atende a uma necessidade do cliente.

Por exemplo, é possível ter um nó que corresponda à intenção #stolen_card. Sempre que uma mensagem recebida sugere que um cliente deseja reportar um cartão de crédito roubado, você não quer que a resposta do seu assistente seja perdida em uma lista de desambiguação de opções. Você deseja que o assistente responda com uma única resposta que ajude o cliente a resolver essa questão urgente.

Para projetar seu diálogo para priorizar um único nó sobre a desambiguação, conclua as etapas a seguir:

  1. No nó que condiciona a intenção, clique em Customizar para ativar diversas respostas condicionadas..

  2. Inclua uma resposta condicionada com a condição a seguir:

    intent.confidence > n

    em que n é uma pontuação de confiança que faz sentido para seus dados de treinamento. Por exemplo:

    intent.confidence > 0.7

  3. Mova a resposta para o primeiro lugar na lista de respostas condicionadas.

  4. Clique no ícone de engrenagem para customizar a resposta condicionada.

  5. Na seção Assistant responds (Respostas do assistente), abra o editor de contexto.

  6. Inclua a seguinte variável de contexto:

    Variável de contexto
    Variável Valor
    system {"prevent_disambiguation":true}
  7. Clique em Salvar.

    Como alternativa, você pode adicionar um nó de nível raiz com uma condição como, por exemplo:

    #stolen_card && intent.confidence > 0.7

    Coloque esse nó mais acima na árvore do que o nó que condiciona #stolen_card, o que permite que ele seja incluído em uma lista de desambiguação.

  8. Teste seu diálogo. Certifique-se de que a resposta do nó seja retornada no lugar de uma lista de desambiguação quando o limite de pontuação de confiança adequado for atingido.

Manipulando nenhum dos anteriores

Quando um usuário clica na opção Nenhum dos anteriores, o assistente retira da mensagem as intenções que foram reconhecidas na entrada do usuário e as envia novamente. Essa ação geralmente aciona o nó Anything else em sua árvore de diálogo.

Para customizar a resposta que é retornada nessa situação, é possível incluir um nó raiz com uma condição que verifica uma entrada do usuário sem intenções reconhecidas (as intenções são retiradas, lembre-se) e contém uma propriedade suggestion_id. Uma propriedade suggestion_id é incluída pelo assistente quando a desambiguação é acionada.

Inclua um nó raiz com a seguinte condição:

intents.size()==0 && input.suggestion_id

Essa condição é atendida apenas por entradas que acionam um conjunto de opções de desambiguação das quais o usuário diz que nenhuma corresponde ao objetivo.

Adicione uma resposta que informe aos usuários que sabem que você entende que nenhuma das opções sugeridas atende às necessidades deles e tome as medidas adequadas.

Novamente, o posicionamento de nós na árvore importa. Se um nó que condiciona um tipo de entidade que é mencionado na entrada do usuário estiver mais alto na árvore do que esse nó, sua resposta será exibida no lugar.

Testando a desambiguação

Ao testar, a ordem na qual as opções são listadas pode mudar. De fato, as próprias opções incluídas na lista de desambiguação podem mudar de um teste para outro.

Esse comportamento é desejado. Como parte do desenvolvimento que está em andamento para ajudar o assistente a aprender automaticamente com as escolhas do usuário, as escolhas e sua ordem na lista de desambiguação estão sendo randomizadas propositalmente. A alteração da ordem ajuda a evitar o viés que pode ser introduzido por uma porcentagem de pessoas que sempre escolhem a primeira opção sem analisar cuidadosamente todas as suas escolhas com antecedência.

Para testar a desambiguação, conclua as etapas a seguir:

  1. No painel "Try it out" (Experimente), insira um enunciado de teste que seja um bom candidato para a desambiguação, o que significa que dois ou mais de seus nós de diálogo estão configurados para abordar enunciados como esse.

  2. Se a resposta não contiver uma lista de opções de nó de diálogo para você escolher, verifique se você incluiu informações de resumo nos campos de nome do nó (ou de nome do nó externo)

  3. Se a desambiguação ainda não for acionada, poderá ser que as pontuações de confiança para os nós não são tão próximas em valor quanto você pensou.

    • Para ver as pontuações de confiança das três principais intenções que foram detectadas na entrada, passe o mouse sobre o ícone de olho na área de janela "Experimentar".

    • Para ver as pontuações de confiança de todas as intenções detectadas na entrada do usuário, inclua temporariamente <? intents ?> no final da resposta do nó para um nó que você sabe que será acionado.

      Essa expressão SpEL mostra as intenções que foram detectadas na entrada do usuário como uma matriz. A matriz inclui o nome da intenção e o nível de confiança que seu assistente tem de que ela reflete o objetivo pretendido pelo usuário.

    • Para ver quais entidades, se houver, foram detectadas na entrada do usuário, você pode substituir temporariamente a resposta atual por uma única resposta de texto que contenha a expressão SpEL <? entities ?>.

      Essa expressão SpEL mostra as entidades que foram detectadas na entrada do usuário como uma matriz. A matriz inclui o nome da entidade, o local da menção da entidade, a string de menção da entidade e o nível de confiança de que o termo é uma menção do tipo de entidade especificado.

    • Para ver detalhes para todos os artefatos, incluindo outras propriedades, como o valor da variável de contexto no momento da chamada, inspecione a resposta da API inteira Consulte Visualizando detalhes da chamada da API.

  4. Remova temporariamente a descrição no campo de nome (ou no campo de nome do nó externo ) de pelo menos um dos nós que você prevê como uma opção de desambiguação.

  5. Insira a elocução de teste na área de janela "Experimente" novamente.

    Se você adicionou a expressão <? intents ?> à resposta, o texto inclui uma lista das intenções que o assistente reconheceu no enunciado de teste e inclui a pontuação de confiança para cada uma delas.

    O serviço retorna uma matriz de intenções, incluindo Customer_Care_Cancel_Account e eCommerce_Cancel_Product_Order.
    Intenções e pontuações de confiança

Após concluir o teste, remova quaisquer expressões SpEL anexadas às respostas do nó ou inclua de volta qualquer resposta original que você substituiu por expressões e preencha novamente quaisquer campos nome ou nome do nó externo dos quais removeu texto.

Digressões

Uma digressão ocorre quando um usuário está em um fluxo de diálogo que aborda um objetivo, mas alterna os tópicos para iniciar um fluxo de diálogo que aborda um objetivo diferente. Se nenhum dos nós na ramificação do diálogo corresponder ao objetivo da última entrada do usuário, a conversa verifica as condições do nó raiz para uma correspondência apropriada. As configurações de digressão que estão disponíveis por nó fornecem a capacidade de customizar esse comportamento ainda mais.

Com as configurações de digressão, é possível permitir que a conversa retorne para o fluxo de diálogo que foi interrompido quando a digressão ocorreu. Por exemplo, o usuário pode estar pedindo um novo telefone, mas alterna os tópicos para perguntar sobre tablets. Sua caixa de diálogo pode responder à pergunta sobre tablets e, em seguida, levar o usuário de volta ao ponto em que parou com o pedido por telefone. Permitir que digressões ocorram e retornem fornece a seus usuários mais controle sobre o fluxo da conversa no tempo de execução. Eles podem mudar tópicos, seguir um fluxo de diálogo sobre o tópico não relacionado até seu término e, em seguida, retornar para onde estavam antes. O resultado é um fluxo de diálogo que simula mais estritamente uma conversa entre humanos.

Antes de Iniciar

Ao testar seu diálogo geral, decida quando e onde faz sentido permitir que digressões e devoluções de digressões ocorram. Os controles de digressão a seguir são aplicados aos nós automaticamente.

  • Cada nó raiz em seu diálogo está configurado para permitir que as digressões os destinem por padrão. Os nós-filhos não podem ser o destino de uma digressão.

  • Os nós com intervalos são configurados para evitar digressões fora. Todos os outros nós são configurados para permitir digressões fora. No entanto, a conversa não pode digressionar fora de um nó sob as circunstâncias a seguir:

    • Se algum dos nós filhos do nó atual contiver a condição anything_else ou true. Essas condições são especiais, pois são sempre avaliadas como verdadeiras. Por causa de seu comportamento conhecido, elas são frequentemente usadas em diálogos para forçar um nó pai a avaliar um nó-filho específico sucessivamente. Para evitar a quebra da lógica do fluxo de diálogo existente, as digressões não são permitidas nesse caso. Antes de poder ativar digressões fora de, por exemplo, um nó, deve-se mudar a condição do nó-filho para outra coisa.

    • Se o nó estiver configurado para saltar para outro nó ou ignorar a entrada do usuário após o processamento. A seção de etapa final de um nó especifica o que acontece depois que o nó é processado. Quando a caixa de diálogo é configurada para saltar diretamente para outro nó, geralmente é necessário garantir que uma sequência específica seja seguida. E quando o nó é configurado para ignorar entrada do usuário, é equivalente a forçar o diálogo para processar o primeiro nó-filho após o nó atual sucessivamente. Para evitar a quebra da lógica do fluxo de diálogo existente, as digressões não são permitidas em qualquer um desses casos. Antes de poder ativar as digressões fora desse nó, deve-se mudar o que é especificado na seção de etapa final.

Customizando digressões

Você não define o início e o término de uma digressão. O usuário está inteiramente no controle do fluxo de digressão no tempo de execução. É possível especificar como cada nó é incluído em uma digressão conduzida pelo usuário Para cada nó, é possível configurar se uma digressão:

  • Inicia e sai do nó
  • Que começa em outro lugar, pode atingir e entrar no nó
  • O que começa em outro lugar e entra no nó deve retornar ao fluxo de diálogo interrompido após a conclusão do fluxo de diálogo atual

Para mudar o comportamento de digressão para um nó individual, conclua as etapas a seguir:

  1. Clique no nó para abrir sua visualização de edição.

  2. Clique em Customizar e, em seguida, clique na guia Digressões.

    As opções de configuração diferem dependendo se o nó que você está editando é um nó raiz, um nó-filho, um nó com filhos ou um nó com intervalos.

    Digressions fora desse nó

    Se as circunstâncias listadas anteriormente não se aplicam, é possível fazer as opções a seguir:

    • Todos os tipos de nós: escolha se deseja permitir a digressão do nó atual pelos usuários antes de atingirem o término da ramificação do diálogo atual.

    • Todos os nós que têm filhos: Escolha se deseja que a conversa retorne ao nó atual se a resposta do nó tiver sido exibida e seus nós filhos forem incidentais à meta. Configure o comutador Permitir retorno de digressões acionadas após a resposta deste nó para Não para evitar que o diálogo retorne para o nó atual e continue processando sua ramificação.

      Por exemplo, se o usuário perguntar Do you sell cupcakes? e a resposta We offer cupcakes in a variety of flavors and sizes for exibida antes de o usuário mudar de assunto, talvez você não queira que a caixa de diálogo retorne ao ponto em que parou. Especialmente se os nós filhos abordarem possíveis perguntas de acompanhamento do usuário e puderem ser ignorados com segurança.

      No entanto, se o nó depende de seus nós-filhos para direcionar a questão, você pode desejar forçar a conversa para retornar e continuar processando os nós na ramificação atual. Por exemplo, a resposta inicial pode ser, We offer cupcakes in all shapes and sizes. Which menu do you want to see: gluten-free, dairy-free, or regular? Se o usuário mudar de assunto, talvez você queira que a caixa de diálogo retorne para que o usuário possa escolher um tipo de menu e obter as informações desejadas.

    • Nós com intervalos: escolha se você deseja permitir aos usuários digressionar fora do nó antes de todos os intervalos serem preenchidos. Configure o comutador Permitir digressões fora durante preenchimento de slots para Sim para ativar digressões.

      Se ativado, quando a conversa retorna da digressão, o prompt para o próximo intervalo vazio é exibido para encorajar o usuário a continuar fornecendo informações. Se desativado, quaisquer entradas enviadas pelo usuário que não contêm um valor que possa preencher um intervalo são ignoradas. No entanto, é possível direcionar questões não solicitadas que você prevê que os usuários podem perguntar enquanto interagem com o nó definindo manipuladores de intervalos. Para obter mais informações, consulte Incluindo slots..

    • Nós com espaços: Escolha se o usuário tem permissão para se desviar se retornar ao nó atual, marcando a caixa de seleção Only digress from slots to nodes that allow returns.

      Quando selecionado, conforme o diálogo procura um nó para responder à pergunta não relacionada do usuário, ele ignora quaisquer nós raiz que não estão configurados para retornar após a digressão. Marque essa caixa de seleção se quiser impedir que os usuários possam sair permanentemente do nó antes de concluírem o preenchimento dos espaços necessários.

    Digressões neste nó

    É possível fazer as opções a seguir sobre como as digressões em um nó se comportam:

    • Evitar que os usuários possam digressionar no nó. Veja Desativando digressões em um nó raiz para obter mais detalhes.

    • Quando as digressões no nó são ativadas, escolha se o diálogo deve voltar para o fluxo de diálogo do qual ele é digressionado. Depois que a ramificação do nó atual termina de ser processada, o fluxo de diálogo volta para o nó interrompido. Para que o diálogo retorne depois, selecione Retornar após digressão.

  3. Clique em Aplicar.

  4. Use a área de janela "Experimente" para testar o comportamento de digressão.

    Novamente, não é possível definir o início e o término de uma digressão. O usuário controla onde e quando as digressões acontecem. Você pode aplicar configurações que determinam como um único nó participa de um. Como as digressões são tão imprevisíveis, é difícil saber como suas decisões de configuração afetam a conversa geral. Para realmente ver o impacto das opções feitas, deve-se testar o diálogo.

Os nós #reservation e #cuisine representam duas ramificações de diálogo que podem participar de uma única digressão direcionada ao usuário. As configurações de digressão definidas para cada nó individual são o que torna esse tipo de digressão possível no tempo de execução.

Dicas de uso de Digressão

Mensagem de retorno personalizada: Para todos os nós em que você permitir retornos de digressões, considere adicionar um texto que informe aos usuários para onde eles estão retornando quando pararam em um fluxo de diálogo anterior. Em sua resposta de texto, use uma sintaxe especial para adicionar duas versões da resposta.

Se você não adicionar uma mensagem, a mesma resposta de texto será exibida uma segunda vez para informar aos usuários que eles retornaram ao nó do qual se afastaram. Você pode deixar mais claro para os usuários que eles retornaram ao tópico de conversa original especificando uma mensagem exclusiva a ser exibida quando eles retornarem.

Por exemplo, se a resposta de texto original para o nó for What's the order number?, talvez você queira exibir uma mensagem como Now let's get back to where we left off. What is the order number? quando os usuários retornarem para o nó.

Para fazer isso, use a sintaxe a seguir para especificar a resposta de texto do nó:

<? (returning_from_digression)? "post-digression message" : "first-time message" ?>

Por exemplo:

<? (returning_from_digression)? "Now, let's get back to where we left off.
What is the order number?" : "What's the order number?" ?>

Não é possível incluir expressões SpEL ou sintaxe abreviada nas respostas de texto que você inclui. De fato, não é possível usar a sintaxe abreviada. Em vez disso, deve-se construir a mensagem concatenando as sequências de texto e a sintaxe de expressão SpEL integral para formar a resposta integral.

Por exemplo, use a seguinte sintaxe para incluir uma variável de contexto em uma resposta de texto que você normalmente especificaria como What can I do for you, $username? :

<? (returning_from_digression)? "Where were we, " +
context["username"] + "? Oh right, I was asking what can I do
for you today." : "What can I do for you today, " +
context["username"] + "?" ?>

Para obter detalhes da sintaxe de expressão SpEL integral, consulte Expressão para acessar objetos.

Evitando retornos: em alguns casos, você pode desejar evitar um retorno para o fluxo de conversa interrompido com base em uma opção que o usuário faz no fluxo de diálogo atual. É possível usar a sintaxe especial para evitar um retorno de um nó específico.

Por exemplo, você pode ter um nó que condicione #General_Connect_To_Agent ou uma intenção semelhante. Quando acionado, se você quiser obter a confirmação do usuário antes de transferi-lo para um serviço externo, poderá adicionar uma resposta como Do you want me to transfer you to an agent now?. Você pode adicionar dois nós filhos que condicionam #yes e #no.

A melhor maneira de gerenciar digressões para esse tipo de ramificação é configurar o nó raiz para permitir retornos de digressão. No entanto, no nó #yes, inclua a expressão SpEL <? clearDialogStack() ?> na resposta. Por exemplo:

OK. I will transfer you now. <? clearDialogStack() ?>

Essa expressão SpEL impede que a digressão volte a acontecer a partir deste nó. Quando uma confirmação for solicitada, se o usuário disser sim, a resposta adequada será exibida e o fluxo de diálogo que foi interrompido não será continuado. Se o usuário disser não, ele será retornado para o fluxo que foi interrompido.

Desativando digressões em um nó raiz

Quando um fluxo digressiona em um nó raiz, ele segue o caminho do diálogo que está configurado para esse nó. O fluxo pode processar uma série de nós filhos antes do término da ramificação do nó e, em seguida, voltar para o fluxo de diálogo que foi interrompido. Ao testar, você pode achar que um nó raiz é acionado com muita frequência, em momentos inesperados ou o diálogo é muito complexo e envia o usuário muito longe do curso. Se você determina que prefere não permitir que usuários digressionem nele, é possível configurar o nó raiz para não permitir digressões dentro dele.

Para desativar completamente as digressões em um nó raiz, conclua as etapas a seguir:

  1. Clique para abrir o nó raiz que você deseja editar.
  2. Clique em Customizar e, em seguida, clique na guia Digressões.
  3. Defina a opção Permitir digressões nesse nó como Desativado.
  4. Clique em Aplicar.

Se você decide que deseja evitar digressões em vários nós raiz, mas não deseja editar cada um individualmente, é possível incluir os nós em uma pasta. Na página Personalizar da pasta, você pode definir a opção Permitir digressões neste nó como Desativado para aplicar a configuração a todos os nós. Para obter mais informações, consulte Organizando o diálogo com pastas.

Considerações de design

Evite proliferação do nó de fallback: muitos designers de diálogo incluem um nó com uma condição true ou anything_else no término de cada ramificação de diálogo como uma maneira de evitar que os usuários fiquem presos na ramificação. Esse design retorna uma mensagem genérica se a entrada do usuário não corresponde nada que você previu e incluiu um nó de diálogo específico para direcionar. No entanto, os usuários não podem digressionar fora de fluxos de diálogo que usam essa abordagem.

Avalie as ramificações que usam essa abordagem para determinar se seria melhor permitir digressões fora da ramificação. Se a entrada do usuário não corresponder a nada do que você previu, ele poderá encontrar uma correspondência em um fluxo de diálogo totalmente diferente na sua árvore. Em vez de responder com uma mensagem genérica, é possível colocar efetivamente o resto do diálogo para trabalhar para tentar direcionar a entrada do usuário. Além disso, o nó Anything else de nível raiz pode sempre responder à entrada que nenhum dos outros nós raiz pode direcionar.

Reconsiderar saltos para um nó de fechamento: muitos diálogos são projetados para fazer uma pergunta de fechamento padrão, como Did I answer your question today? Os usuários não podem sair dos nós configurados para ir para outro nó. Então, se você configura todos os nós de ramificação final para ir para um nó de fechamento comum, as digressões não podem ocorrer. Considere rastrear a satisfação do usuário por meio de métricas ou algum outro meio.

Teste possíveis cadeias de digressões: Se um usuário fizer digressões do nó atual para outro nó que permita digressões, o usuário poderá fazer digressões para fora desse outro nó e repetir esse padrão. Se o nó inicial na cadeia de digressão estiver configurado para retornar após a digressão, o usuário eventualmente será trazido de volta para o nó de diálogo atual. Na verdade, quaisquer nós subsequentes na cadeia que estiverem configurados para não retornar serão excluídos de serem considerados como destinos de digressão. Teste os cenários que digressionam diversas vezes para determinar se os nós individuais funcionam conforme o esperado.

As condições da etapa não são reavaliadas no retorno da digressão: Como a condição da etapa já foi avaliada antes da digressão, ela não é avaliada novamente no retorno da digressão. Se o seu fluxo de conversação exigir que a condição da etapa seja avaliada novamente, adicione o reprompting na mesma etapa em que a digressão começou. Se você não quiser solicitar novamente na mesma etapa e evitar retornos de digressão, siga as etapas abaixo:

  1. Vá para Home > Actions > Created by you.
  2. Selecione a ação na qual você deseja evitar retornos de digressão.
  3. Clique em Configurações de ação.
  4. Altere a alternância para Ativado em Alterar tópico da conversa.
  5. Selecione Nunca retorne à ação original depois de concluir esta ação.
  6. Clique em Salvar.

O nó atual tem prioridade: Os nós fora do fluxo atual só são considerados alvos de digressão se o fluxo atual não puder atender à entrada do usuário. Em um nó com slots que permitem digressões, deixe claro para os usuários quais informações são necessárias e adicione declarações de confirmação que são exibidas depois que o usuário fornece um valor.

Qualquer intervalo pode ser preenchido durante o processo de preenchimento de intervalo. Portanto, um intervalo pode capturar entrada do usuário inesperadamente. Por exemplo, talvez você tenha um nó com intervalos que coleta as informações necessárias para fazer uma reserva de jantar. Um dos intervalos coleta informações de data. O usuário pode perguntar a What's the weather meant to be tomorrow? Você pode ter um nó raiz que condiciona a #previsão que pode responder ao usuário. No entanto, como a entrada do usuário inclui a palavra tomorrow e o nó de reserva com slots está sendo processado, o assistente presume que o usuário está fornecendo ou atualizando a data da reserva. O nó atual sempre tem prioridade. Se você define uma instrução de confirmação clara, como Ok, setting the reservation date to tomorrow, é mais provável que o usuário perceba que houve um erro de comunicação e o corrige.

Se o usuário fornecer um valor que não é esperado por nenhum dos slots, ele poderá corresponder a um nó raiz não relacionado para o qual o usuário nunca pretendeu digressionar.

Certifique-se de fazer vários testes enquanto você configura o comportamento de digressão.

Quando usar digressões em vez de manipuladores de slots: Para perguntas gerais que os usuários possam fazer, use um nó raiz que permita digressões nele, processe a entrada e, em seguida, volte ao fluxo que estava em andamento. Para nós com vagas, tente prever os tipos de perguntas relacionadas que os usuários podem querer fazer ao preencher as vagas e resolva-as adicionando manipuladores ao nó.

Por exemplo, se o nó com slots coleta as informações necessárias para concluir um sinistro de seguro, talvez você queira adicionar manipuladores que abordem perguntas comuns sobre seguros. No entanto, para perguntas sobre como obter ajuda, a localização de suas lojas ou o histórico de sua empresa, use um nó de nível raiz.