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 longa duração com o usuário. Uma caixa de diálogo executa uma tarefa que pode representar parte ou um thread de conversa completa. Ele pode abranger apenas um turno ou muitos, e pode abranger um curto ou longo período de tempo.

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

  • Você deve estar familiarizado com como os bots funcionam (incluindo o que é uma vez) e gerenciando o estado.
  • Cada caixa de diálogo representa uma tarefa de conversa que pode ser executada até a conclusão e retornar as informações coletadas.
  • Cada caixa de diálogo representa uma unidade básica do fluxo de controle: ela pode começar, continuar e terminar; pausar e retomar; ou ser cancelado.
  • As 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 ao iniciar uma caixa de diálogo, e a caixa de diálogo poderá produzir posteriormente um valor de retorno quando ele terminar.

Dica

Se você estiver familiarizado em desenvolver bots com o Bot Framework ou criar uma nova experiência de conversa, comece com o Bot Framework Composer. Para bots SDK existentes, não criados no Composer, considere expor seu bot como uma habilidade e usar o Composer para desenvolvimento futuro de bots.

Estado do diálogo

As caixas de diálogo podem implementar uma conversa de vários turnos e, como tal, elas dependem do estado persistente em turnos. Sem estado em caixas de diálogo, seu bot não saberia onde ele estava na conversa ou quais informações ele já havia coletado.

Para manter o lugar de uma caixa de diálogo na conversa, o estado da caixa de diálogo deve ser recuperado e salvo na memória a cada turno. 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 para todas as caixas de diálogo ativas e filhos de diálogos ativos. Isso permite que o bot retome de onde parou por último e para manipular 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 qualquer informação coletada 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 a cada turno.

Infraestrutura de caixa de diálogo

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

Classe Descrição
Conjunto de caixas de diálogo Define uma coleção de caixas de diálogo que podem fazer referência umas às outras e trabalhar em conjunto.
Contexto do diálogo Contém informações sobre todas as caixas de diálogo ativas.
Instância da caixa de diálogo Contém informações sobre uma caixa de diálogo ativa.
Resultado da curva da caixa de diálogo 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 diálogos fornece alguns tipos de diálogos para facilitar o gerenciamento das conversas do bot. Alguns desses tipos são descritos mais detalhadamente mais adiante neste artigo.

Tipo Descrição
diálogo A classe base para todos os diálogos.
caixa de diálogo contêiner A classe base para todas as caixas de diálogo de contêiner , como diálogos adaptáveis e componentes. 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 caixa de diálogo de contêiner de uso geral que encapsula um conjunto de diálogos, 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 guie um usuário por meio de um processo linear. Normalmente, eles são projetados para funcionar dentro do contexto de uma caixa de diálogo de componente.
caixas de diálogo prompt Peça entrada ao usuário e retorne o resultado. Um prompt será repetido até que ele receba uma entrada válida ou seja cancelado. Eles foram projetados para trabalhar com caixas de diálogo em 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 mais naturais. Não se destina a ser usado diretamente em um bot SDK-first.
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 SDK-first.
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 SDK-first.
caixa de diálogo habilidade Automatiza o gerenciamento de um ou mais bots de habilidade de um consumidor de habilidades. O compositor dá suporte direto a habilidades como ações.
Caixa de diálogo QnA Maker Automatiza o acesso a uma base de dados de conhecimento do QnA Maker. Essa caixa de diálogo foi projetada para funcionar também como uma ação no Composer.

Importante

As caixas de diálogo adaptáveis foram adicionadas pela primeira vez na versão 4.9 do SDK do C#. As caixas de diálogo adaptáveis dão suporte ao Bot Framework Composer e não se destinam a ser usadas diretamente em um bot SDK-first.

Padrões de caixa de diálogo

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

  1. É recomendável usar o Bot Framework Composer para criar diálogos de conversa, para se beneficiar de recursos de conversa 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 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 de execução com uma caixa de diálogo de componentes, consulte as caixas de diálogo de 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 todos os diálogos ativos e inclui uma pilha de diálogos, 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 diálogos 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, entender que ela existe e sua função ajudará você a entender como vários aspectos da biblioteca de diálogos funcionam.

Caixas de diálogo de contêiner

Uma caixa de diálogo de contêiner pode fazer parte de um conjunto de diálogos 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 diálogo.

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

    A estrutura conceitual dos dois é bem diferente. No entanto, um bot Composer pode usar ambos.

IDs da caixa de diálogo

Ao adicionar uma caixa de diálogo a um conjunto de diálogos, atribua-lhe uma ID exclusiva dentro desse conjunto. As 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 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 nos outros diálogos no conjunto de diálogos imediato. Se não houver correspondência, ele procurará uma correspondência no conjunto de diálogos contido ou externo e assim por diante. Se nenhuma correspondência for encontrada, uma exceção ou erro será gerado.

Diálogos de componente

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

Considere o uso de caixas de diálogo de componente e cascata se o bot tiver um fluxo de controle relativamente simples que não exija um fluxo de conversa mais dinâmico.

Sobre caixas de diálogo de componente e cascata descreve as caixas de diálogo componente, cascata e prompt mais detalhadamente.

Caixas de diálogo adaptáveis

As caixas de diálogo adaptáveis permitem que o Composer atualize dinamicamente o fluxo de conversa com base no contexto e nos eventos. Isso permite que as caixas de diálogo sejam mais naturais e de fluxo livre. Esses bots podem:

  • Deixe que um usuário mude de ideia e responda novamente a uma pergunta respondida no início da conversa.
  • Permitir que um usuário responda a duas perguntas com uma resposta.
  • Permitir que um usuário alterne 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. As caixas de diálogo adaptáveis dão suporte e ficam sobre um sistema de eventos avançado.

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

Outras caixas de diálogo

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

Caixa de diálogo QnA Maker

A caixa de diálogo QnA Maker acessa uma base de dados de conhecimento do QnA Maker e dá suporte aos recursos de prompt de acompanhamento e aprendizado ativo do QnA Maker.

  • Os prompts de acompanhamento, também conhecidos como prompts de várias voltas, permitem que uma base de dados de conhecimento peça ao usuário mais informações antes de responder à pergunta.
  • As 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