Biblioteca de diálogos

aplica-se a: SDK v4

As caixas de diálogo são um conceito central no SDK, fornecendo maneiras de gerenciar uma conversa de execução longa com o usuário. Uma caixa de diálogo executa uma tarefa que pode representar parte do ou um thread de conversação completo. Ele pode abranger apenas uma vez ou muitos e pode abranger um curto período de tempo.

Este artigo descreve as principais classes e recursos da biblioteca de caixas de diálogo.

  • Você deve estar familiarizado com a forma como os bots funcionam (incluindo o que é uma vez) e o estado de gerenciamento.
  • Cada caixa de diálogo representa uma tarefa de conversação que pode ser executada até a conclusão e retornar informações coletadas.
  • Cada caixa de diálogo representa uma unidade básica de fluxo de controle: ela pode começar, continuar e terminar; pausar e retomar; ou ser cancelado.
  • Caixas de diálogo são semelhantes a um método ou função em uma linguagem de programação. Você pode passar argumentos ou parâmetros quando você inicia uma caixa de diálogo e a caixa de diálogo pode produzir um valor de retorno quando ele termina.

Dica

se você for novo no desenvolvimento de bots com o Bot Framework ou criando uma nova experiência de conversação, comece com o Bot Framework Composer. para bots existentes do SDK-first, não criados no Composer, considere expor o bot como uma habilidade e usar Composer para o desenvolvimento futuro do bot.

Estado do diálogo

As caixas de diálogo podem implementar uma conversa com várias transformações e, como tal, elas dependem do estado persistente na verdade. Sem estado em caixas de diálogo, seu bot não saberia onde estava na conversa ou quais informações já foram reunidas.

Para manter o local de uma caixa de diálogo na conversa, o estado da caixa de diálogo deve ser recuperado e salvo na memória cada vez. Isso é tratado por meio de um acessador de propriedade de estado de caixa de diálogo definido no estado de conversa do bot. Esse estado de caixa de diálogo gerencia informações de todas as caixas de diálogo ativas e filhos de caixas de diálogo ativas. Isso permite que o bot pegue onde parou por último e lide com uma variedade de modelos de conversa.

Em tempo de execução, a propriedade de estado da caixa de diálogo inclui informações sobre onde a caixa de diálogo está em seu processo lógico, incluindo quaisquer informações coletadas internamente na forma de um objeto de instância de caixa de diálogo . Novamente, isso precisa ser lido no bot e salvo na memória cada vez.

Infraestrutura de diálogo

Juntamente com vários tipos de caixas de diálogo, as seguintes classes estão envolvidas no design e no controle de conversas. Embora normalmente você não precise interagir com essas classes diretamente, estar ciente delas e sua finalidade é útil ao criar caixas de diálogo para um bot.

Classe Descrição
Conjunto de diálogo Define uma coleção de caixas de diálogo que podem fazer referência entre si e trabalhar em conjunto.
Contexto do diálogo Contém informações sobre todas as caixas de diálogo ativas.
Instância de caixa de diálogo Contém informações sobre uma caixa de diálogo ativa.
Caixa de diálogo ativar resultado Contém informações de status de uma caixa de diálogo ativa ou recentemente ativa. Se a caixa de diálogo ativa for encerrada, ela conterá seu valor de retorno.

Tipos de diálogo

A biblioteca de caixas de diálogo fornece alguns tipos de caixas de diálogo para facilitar o gerenciamento das conversas de bot. Alguns desses tipos são descritos mais detalhadamente mais adiante neste artigo.

Type Description
diálogo A classe base para todas as caixas de diálogo.
caixa de diálogo contêiner A classe base para todas as caixas de diálogo de contêiner , como componentes e caixas de diálogo adaptáveis. Ele mantém um conjunto de diálogo interno e permite tratar uma coleção de caixas de diálogo como uma unidade.
caixa de diálogo componente Um tipo de uso geral de caixa de diálogo de contêiner que encapsula um conjunto de caixas de diálogo, permitindo a reutilização do conjunto como um todo. Quando uma caixa de diálogo de componente é iniciada, ela começa com uma caixa de diálogo designada em sua coleção. Quando o processo interno for concluído, a caixa de diálogo do componente será encerrada.
caixa de diálogo cascata Define uma sequência de etapas, permitindo que o bot Oriente um usuário por meio de um processo linear. Normalmente, eles são projetados para funcionar no contexto de uma caixa de diálogo de componente.
caixas de diálogo de prompt Solicitar entrada ao usuário e retornar o resultado. Um prompt será repetido até obter uma entrada válida ou cancelado. Elas foram projetadas para trabalhar com caixas de diálogo de cascata.
caixa de diálogo adaptável um tipo de caixa de diálogo de contêiner usado pelo Composer para fornecer fluxos de conversação mais naturais. Não se destina a ser usado diretamente em um bot-First do SDK.
caixas de diálogo de ação Um tipo de caixa de diálogo que dá suporte à implementação de ações no Composer. Não se destina a ser usado diretamente em um bot-First do SDK.
caixas de diálogo de entrada Um tipo de caixa de diálogo que dá suporte à implementação de ações de entrada no Composer. Não se destina a ser usado diretamente em um bot-First do SDK.
caixa de diálogo de habilidades Automatiza o gerenciamento de um ou mais bots de habilidades de um consumidor de habilidades. Composer dá suporte direto às habilidades como ações.
Caixa de diálogo QnA Maker Automatiza o acesso a uma base de dados de conhecimento QnA Maker. Essa caixa de diálogo também é projetada para funcionar como uma ação dentro de Composer.

Importante

As caixas de diálogo adaptáveis foram adicionadas primeiro na versão 4,9 do SDK do C#. as caixas de diálogo adaptáveis dão suporte à Bot Framework Composer e não devem ser usadas diretamente em um Bot-first do SDK.

Padrões de diálogo

Há dois padrões principais para iniciar e gerenciar caixas de diálogo de um bot.

  1. é recomendável usar Bot Framework Composer para criar caixas de diálogo de conversação, para se beneficiar de recursos de conversação mais naturais e de fluxo livre. Para obter mais informações, consulte a introdução ao bot Framework Composer. Esses bots ainda podem ser estendidos com o código, quando necessário.
  2. Desenvolva o bot em uma das linguagens do SDK e use o método de extensão de execução da caixa de diálogo raiz. Para obter informações sobre como usar o método Run com uma caixa de diálogo de componente, consulte sobre as caixas de diálogo componente e cascata e como implementar o fluxo de conversa sequencial.

A pilha de diálogo

Um contexto de caixa de diálogo contém informações sobre todas as caixas de diálogo ativas e inclui uma pilha de caixas de diálogo, que atua como uma pilha de chamadas para todas as caixas de diálogo ativas. Cada caixa de diálogo de contêiner tem um conjunto interno de caixas de diálogo que ele está controlando e, portanto, cada caixa de diálogo de contêiner ativo introduz um contexto de caixa de diálogo interno e uma pilha de diálogo como parte de seu estado.

Embora você não acesse a pilha diretamente, entenda que ela existe e sua função irá ajudá-lo a entender como vários aspectos da biblioteca de caixas de diálogo funcionam.

Caixas de diálogo de contêiner

Uma caixa de diálogo de contêiner pode fazer parte de um conjunto de caixas de diálogo maior. Cada contêiner tem um conjunto de diálogo interno que também é gerenciado.

  • Cada conjunto de caixas de diálogo cria um escopo para resolver IDs de caixa de diálogo.

  • Atualmente, o SDK implementa dois tipos de caixas de diálogo de contêiner: caixas de diálogo de componente e caixas de diálogo adaptáveis.

    A estrutura conceitual dos dois é bastante diferente. no entanto, um bot de Composer pode fazer uso de ambos.

IDs de diálogo

Quando você adiciona uma caixa de diálogo a um conjunto de caixas de diálogo, atribui a ela uma ID exclusiva dentro desse conjunto. Caixas de diálogo dentro de um conjunto fazem referência umas às outras por suas IDs.

Quando uma caixa de diálogo faz referência a outra caixa de diálogo em tempo de execução, ela faz isso pela ID da caixa de diálogo. O contexto da caixa de diálogo tenta resolver a ID com base nas outras caixas de diálogo no conjunto de diálogos imediato. Se não houver nenhuma combinação, ele procura uma corresponder no conjunto de diálogos contendo ou externo e assim por diante. Se nenhuma corresponder for encontrada, uma exceção ou erro será gerado.

Diálogos de componente

As caixas de diálogo de componente usam um modelo de sequência para conversas e cada diálogo no contêiner é responsável por chamar outras caixas de diálogo no contêiner. Quando a pilha de diálogos internas do componente estiver vazia, o componente terminará.

Considere usar diálogos de componente e cascata se o bot tiver um fluxo de controle relativamente simples que não exige um fluxo de conversa mais dinâmico.

Sobre diálogos de componente e cascata descreve os diálogos de componente, cascata e prompt com mais detalhes.

Caixas de diálogo adaptáveis

Diálogos adaptáveis permitem Composer atualizar dinamicamente o fluxo de conversa com base no contexto e nos eventos. Isso permite que os diálogos sejam mais naturais e de fluxo livre. Esses bots podem:

  • Permitir que um usuário mude de ideia e responda uma pergunta respondida anteriormente na conversa.
  • Deixe um usuário responder a duas perguntas com uma resposta.
  • Permitir que um usuário mude de contexto para um tópico diferente no meio de uma conversa.

Isso é especialmente prático ao lidar com alternâncias de contexto de conversa e interrupções no meio de uma conversa. Os diálogos adaptáveis são suportados e ficam sobre um sistema de eventos rico.

A Introdução ao Bot Framework Composer descreve os recursos com suporte do Composer e diálogos adaptáveis: reconhecimento de idioma e suporte à geração de linguagem, uso de gatilhos e ações para modelar o fluxo de conversa, acesso aos escopos de memória e assim por diante.

Outros diálogos

As QnA Maker e as caixas de diálogo de habilidades podem ser usadas como diálogos autônomos ou como parte de uma coleção de diálogos em um contêiner.

QnA Maker diálogo

A QnA Maker acessa uma QnA Maker de conhecimento e dá suporte QnA Maker prompt de acompanhamento e recursos de aprendizado ativos do QnA Maker.

  • Os prompts de acompanhamento, também conhecidos como prompts de vários turnos, permitem que uma base de dados de conhecimento peça ao usuário mais informações antes de responder à pergunta.
  • Sugestões de aprendizado ativo permitem que a base de dados de conhecimento melhore ao longo do tempo. O diálogo do QnA Maker dá suporte a comentários explícitos para o recurso de aprendizado ativo.

Para obter mais informações, consulte:

Caixa de diálogo Habilidade

Uma caixa de diálogo de habilidades acessa e gerencia uma ou mais habilidades. A caixa de diálogo de skill posta as atividades do bot pai para o bot de skill e retorna as respostas do skill para o usuário.

Para obter mais informações, consulte:

Próximas etapas