Share via


Sobre os diálogos de componentes e cachoeiras

APLICA-SE A: SDK v4

Os diálogos vêm em vários tipos diferentes. Este artigo descreve componentes, cascatas e diálogos rápidos. Para obter informações sobre diálogos em geral, consulte o artigo da biblioteca de diálogos . Para obter informações sobre diálogos adaptativos, consulte a introdução a diálogos adaptativos.

Um diálogo de cascata (ou cascata) define uma sequência de passos, permitindo ao seu bot guiar um utilizador através de um processo linear. Estes diálogos são concebidos para funcionar no contexto de um diálogo de componentes.

Um diálogo de componentes é um tipo de diálogo de contentor que permite dialogar no conjunto para chamar outros diálogos no conjunto, como um diálogo de diálogo de cascata chamando diálogos rápidos ou outro diálogo de cascata. Os diálogos dos componentes gerem um conjunto de diálogos infantis , tais como diálogos de cascata, solicitações, e assim por diante. Pode conceber um diálogo de componentes para lidar com tarefas específicas e reutilizá-lo, no mesmo bot ou em vários bots.

Diálogos rápidos (solicitações) são diálogos concebidos para solicitar ao utilizador tipos específicos de informações, tais como um número, uma data ou um nome, e assim por diante. As indicações são concebidas para funcionar com diálogos de cascata num diálogo de componentes.

Diálogos de componentes

Por vezes, pretende-se escrever um diálogo reutilizável que pretende utilizar em diferentes cenários, como um diálogo de endereço que pede ao utilizador que forneça valores para o código de rua, cidade e postal.

O diálogo do componente fornece uma estratégia para criar diálogos independentes para lidar com cenários específicos, quebrando um grande diálogo definido em peças mais manejáveis. Cada uma destas peças tem o seu próprio conjunto de diálogo, e evita quaisquer colisões de nomes com o conjunto de diálogo que o contém. Para obter mais informações, consulte o diálogo do componente como.

Diálogos de cachoeira

Um diálogo de cascata é uma implementação específica de um diálogo que é normalmente utilizado para recolher informações do utilizador ou guiar o utilizador através de uma série de tarefas. Cada passo da conversação é implementado como uma função assíncrona que toma um parâmetro de contexto de passo de cascata (step). Em cada passo, o bot solicita ao utilizador a entrada (ou pode iniciar um diálogo infantil, mas que muitas vezes é uma solicitação), espera por uma resposta e, em seguida, passa o resultado para o passo seguinte. O resultado da primeira função é passado como um argumento para a próxima função, e assim por diante.

O diagrama seguinte mostra uma sequência de passos de cascata e as operações de stack que ocorrem. Os detalhes sobre a utilização da pilha de diálogo estão abaixo na secção de diálogos de utilização .

Representação de como as mensagens mapeiam para passos de cascata.

Dentro dos degraus waterfall, o contexto do diálogo da cascata é armazenado no seu contexto de passo de cascata. O contexto do passo é semelhante ao contexto do diálogo e proporciona acesso ao contexto e estado de viragem atuais. Utilize o objeto de contexto do passo da cascata para interagir com um diálogo definido dentro de um degrau de cascata.

Pode manusear um valor de retorno a partir de um diálogo dentro de um passo de cascata num diálogo ou do bot on turn handler, embora geralmente apenas precise verificar o estado do diálogo obter o resultado da lógica de viragem do bot. Dentro de um passo de cascata, o diálogo fornece o valor de retorno na propriedade de resultados do contexto waterfall.

Propriedades de contexto de passo de cachoeira

O contexto do passo da cascata contém as seguintes propriedades:

  • Opções: contém informações de entrada para o diálogo.
  • Valores: contém informações que pode adicionar ao contexto, e é levado para a frente em passos subsequentes.
  • Resultado: contém o resultado do passo anterior.

Além disso, o próximo método (NextAsync em C#, próximo em JavaScript e Python) continua até ao passo seguinte do diálogo de cascata na mesma curva, permitindo que o seu bot salte um determinado passo se necessário.

Solicitações

As solicitações, dentro da biblioteca de diálogos, fornecem uma forma fácil de pedir informações ao utilizador e avaliar a sua resposta. Por exemplo, para uma solicitação de número, especifique a pergunta ou informação que está a pedir e o pedido verifica automaticamente se recebeu uma resposta de número válido. Se o fez, a conversa pode continuar; caso não o tenha, irá repromparar o utilizador para obter uma resposta válida.

Nos bastidores, as instruções são um diálogo de dois passos. Primeiro, a solicitação de entrada; em segundo lugar, devolve o valor válido, ou parte do topo com uma reprompção.

As solicitações têm opções rápidas dadas quando a solicitação é chamada, que é onde você pode especificar o texto a solicitar, o pedido de repetição se a validação falhar, e escolhas para responder ao pedido. Em geral, as propriedades prontas e prontas são atividades, embora haja alguma variação na forma como isto é tratado em diferentes linguagens de programação.

Além disso, pode optar por adicionar alguma validação personalizada para o seu pedido quando o criar. Por exemplo, digamos que queríamos obter um tamanho de festa usando o número de pedido, mas esse tamanho da festa tem que ser mais de 2 e menos de 12. O pedido primeiro verifica para ver se recebeu um número válido, em seguida, executa a validação personalizada se for fornecida. Se a validação personalizada falhar, irá repromparar o utilizador como acima.

Quando uma solicitação termina, devolve explicitamente o valor resultante que foi solicitado. Quando esse valor for devolvido, podemos ter a certeza de que passou tanto a validação rápida incorporada como qualquer validação personalizada adicional que possa ter sido fornecida.

Por exemplo, ao utilizar várias indicações, veja como usar a biblioteca de diálogos para recolher a entrada do utilizador.

Tipos de solicitação

Nos bastidores, as instruções são um diálogo de dois passos. Primeiro, a solicitação de entrada; em segundo lugar, devolve o valor válido, ou reinicia a partir do topo com uma reprompt. A biblioteca de diálogos oferece vários pedidos básicos, cada um usado para recolher um tipo diferente de resposta. Os instruções básicas podem interpretar a entrada da linguagem natural, como "dez" ou "uma dúzia" para um número, ou "amanhã" ou "Sexta-feira às 10h" para uma data.

Prompt Description Devoluções
Pedido de anexo Pede um ou mais anexos, como um documento ou imagem. Uma coleção de objetos de fixação .
Pedido de escolha Pede uma escolha a partir de um conjunto de opções. Um objeto de escolha encontrado .
Confirmar a solicitação Pede uma confirmação. Um valor booleano.
Pedido de data Pede uma data. Uma coleção de objetos de resolução de data-hora .
Pedido de número Pede um número. Um valor numérico.
Pedido de texto Solicita a entrada geral do texto. Uma corda.

Para solicitar a entrada de um utilizador, defina um pedido utilizando uma das classes incorporadas, como o pedido de texto, e adicione-o ao seu conjunto de diálogos. As indicações têm IDs fixos que devem ser únicos dentro de um conjunto de diálogo. Pode ter um validador personalizado para cada ímis, e para algumas solicitações, pode especificar um local padrão.

Local de solicitação

O local é usado para determinar o comportamento específico da língua da escolha, confirmar, data-hora e solicitações de números . Para qualquer informação do utilizador, se o canal forneceu uma propriedade local na mensagem do utilizador, então isso é usado. Caso contrário, se o local padrão do pedido for definido, fornecendo-o ao ligar para o construtor do pedido ou definindo-o mais tarde, então é utilizado. Se nenhum desses locais for fornecido, o inglês ("en-us") é usado como local.

O local é um código ISO 639 de dois, três ou quatro caracteres que representa uma família linguística ou linguística.

Opções rápidas

O segundo parâmetro do método de solicitação do contexto do passo requer um objeto de opções rápidas , que tem as seguintes propriedades.

Propriedade Descrição
Prompt A atividade inicial para enviar o utilizador, para pedir a sua entrada.
Redação de retíria A atividade para enviar o utilizador se a sua primeira entrada não validar.
Choices Uma lista de escolhas para o utilizador escolher, para utilização com um pedido de escolha.
Validações Parâmetros adicionais para utilizar com um validador personalizado.
Estilo Define como as escolhas para uma decisão rápida ou de confirmação serão apresentadas a um utilizador.

Deve sempre especificar a atividade inicial de solicitação a enviar ao utilizador e uma pronta de repetição, por exemplo, quando a entrada do utilizador não valida.

Se a entrada do utilizador não for válida, o pedido de repetição é enviado ao utilizador; se não houver nova tentativa especificada, então o pedido inicial é usado. No entanto, se uma atividade for enviada de volta ao utilizador a partir do validador, não é enviada nenhuma solicitação de novo.

Validação rápida

Pode validar uma resposta rápida antes de devolver o valor ao próximo passo da cascata. Uma função validador tem um parâmetro de contexto validador rápido e devolve um Boolean, indicando se a entrada passa a validação. O contexto do validador rápido inclui as seguintes propriedades:

Propriedade Descrição
Contexto O contexto atual de viragem para o bot.
Reconhecido Um resultado de reconhecimento rápido que contém informações sobre a entrada do utilizador, como processado pelo reconhecedor.
Opções Contém as opções rápidas que foram fornecidas na chamada para iniciar a solicitação.

O resultado do reconhecimento rápido tem as seguintes propriedades:

Propriedade Descrição
Com êxito Indica se o reconhecedor foi capaz de analisar a entrada.
Valor O valor de retorno do reconhecedor. Se necessário, o código de validação pode modificar este valor.

Usando diálogos

Os diálogos podem ser considerados como uma pilha programática, a que chamamos a pilha de diálogo, com o manipulador de turno como o que o dirige e servindo como o recuo se a pilha estiver vazia. O item mais alto da pilha é considerado o diálogo ativo, e o contexto de diálogo direciona toda a entrada para o diálogo ativo.

Quando um diálogo começa, é empurrado para a pilha, e agora é o diálogo ativo. Permanece o diálogo ativo até que ambos terminam, é removido pelo método de diálogo de substituição , ou outro diálogo é empurrado para a pilha (pelo manipulador de turno ou pelo próprio diálogo ativo) e torna-se o diálogo ativo. Quando o novo diálogo termina, sai da pilha e o próximo diálogo para baixo torna-se o diálogo ativo novamente. Isto permite repetir um diálogo ou ramificar uma conversa, discutida abaixo.

Pode iniciar ou continuar um diálogo de raiz utilizando o método de extensão do diálogo de execução . A partir do código bot, chamar o método de extensão de execução de diálogo ou continua o diálogo existente, ou inicia uma nova instância do diálogo se a pilha estiver atualmente vazia. O controlo e a entrada do utilizador vão para o diálogo ativo na pilha.

O método de execução requer um acessório de propriedade do Estado para aceder ao estado de diálogo. O acessório é criado e usado da mesma forma que outros acessórios do Estado, mas é criado como propriedade própria baseada fora do estado de conversação. Os detalhes sobre a gestão do estado podem ser encontrados no tópico de estado de gestão, e o uso do estado de diálogo é mostrado no fluxo de conversação sequencial como-fazer.

A partir de um diálogo, você tem acesso ao contexto de diálogo e pode usá-lo para iniciar outros diálogos, terminar o diálogo atual e realizar outras operações.

Para iniciar um diálogo

A partir de um diálogo de cascata, passe o ID do diálogo que pretende iniciar no contexto do diálogo de cascata utilizando o diálogo inicial, o pedido ou substitua o método de diálogo .

  • Os métodos de diálogo rápido e de início empurrarão uma nova instância do diálogo referenciado para a parte superior da pilha.
  • O método de diálogo de substituição irá tirar o diálogo atual da pilha e empurrar o diálogo de substituição para a pilha. O diálogo substituído é cancelado e qualquer informação que a instância contida seja eliminada.

Utilize o parâmetro de opções para passar informações para a nova instância do diálogo. As opções passadas para o novo diálogo podem ser acedidas através das opções do contexto do passo em qualquer passo do diálogo. Para obter mais informações, consulte como criar um fluxo avançado de conversação utilizando ramos e laços.

Para continuar um diálogo

Dentro de um diálogo de cascata, use a propriedade de valores do contexto do passo para persistir entre as voltas. Qualquer valor acrescentado a esta coleção numa curva anterior está disponível em turnos posteriores. Para obter mais informações, consulte como criar um fluxo avançado de conversação utilizando ramos e laços.

Para acabar com um diálogo

Dentro de um diálogo de cascata, utilize o método de diálogo final para terminar um diálogo, tirando-o da pilha. O método de diálogo final pode devolver um resultado opcional ao contexto dos pais (como o diálogo que o chamou, ou o manipulador de turno do bot). Isto é mais frequentemente chamado de dentro do diálogo para acabar com a atual instância de si mesmo.

Pode chamar o método de diálogo final de qualquer lugar que tenha um contexto de diálogo, mas vai parecer ao bot que foi chamado do diálogo ativo atual.

Dica

É melhor chamar explicitamente o método de diálogo final no final do diálogo.

Para limpar todos os diálogos

Se quiser tirar todos os diálogos da pilha, pode limpar a pilha de diálogo, chamando o contexto de diálogo para cancelar todos os métodos de diálogo .

Repetindo um diálogo

Pode substituir um diálogo por si próprio, criando um laço, utilizando o método de diálogo de substituição . Esta é uma ótima maneira de lidar com interações complexas e uma técnica para gerir menus.

Nota

Se precisar de persistir o estado interno para o diálogo atual, terá de passar informações para a nova instância do diálogo na chamada para o método de diálogo de substituição e, em seguida, rubricar o diálogo adequadamente.

Ramificar uma conversa

O contexto de diálogo mantém a pilha de diálogo e para cada diálogo na pilha, faixas que passo é o próximo. O seu método de diálogo de início cria uma criança e empurra esse diálogo para a parte superior da pilha, e o seu método de diálogo final tira o diálogo superior da pilha. O diálogo final é geralmente chamado de dentro do diálogo que está a acabar.

Um diálogo pode iniciar um novo diálogo dentro do mesmo diálogo definido, chamando o método de diálogo inicial do contexto de diálogo e fornecendo o ID do novo diálogo, que então faz o novo diálogo o diálogo atualmente ativo. O diálogo original ainda está na pilha, mas as chamadas para o método de diálogo do contexto de diálogo continuam a ser enviadas apenas para o diálogo que está em cima da pilha, o diálogo ativo. Quando um diálogo é retirado da pilha, o contexto de diálogo será retomado com o próximo passo da cascata na pilha onde ficou desligado do diálogo original.

Portanto, pode criar um ramo dentro do fluxo de conversação, incluindo um passo num diálogo que pode escolher um diálogo condicionalmente para iniciar um conjunto de diálogos disponíveis.

Informações adicionais