Biblioteca de caixas de diálogo

APLICA-SE A: SDK v4

Os diálogos são um conceito do cMicrosoft Entral no SDK que fornecem maneiras de gerenciar uma conversa de longa duração com o usuário. Um diálogo executa uma tarefa que pode representar parte ou um thread de conversa completo. Ele pode abranger apenas um turno ou muitos, e pode se estender por um curto ou longo período de tempo.

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

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

Dica

Se você for novo no desenvolvimento de bots com o Bot Framework ou na criação de uma nova experiência de conversa, comece com o Bot Framework Composer. Para bots existentes criados primeiro com o SDK, não no Composer, considere expor seu bot como uma habilidade e usar o Composer para desenvolvimento futuro de bots.

Estado do diálogo

Os diálogos proporcionam uma conversa com várias rodadas e, como tal, se baseiam em um estado persistente por turnos. Sem estado em diálogos, seu bot não saberia em que ponto da conversa está ou que informações já foram coletadas.

Para manter o lugar de um diálogo na conversa, o estado do 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 diálogo definido no estado da conversa do bot. Esse estado de diálogo gerencia informações para todos os diálogos ativos e filhos de diálogos ativos. Isso permite que o bot continue de onde parou por último e trate de vários modelos de conversa.

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

Infraestrutura de diálogo

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

Classe Descrição
Conjunto de diálogos Define uma coleção de diálogos que podem fazer referência uns aos outros e trabalhar em conjunto.
Contexto do diálogo Contém informações sobre todos os diálogos ativos.
Instância de diálogo Contém informações sobre um diálogo ativo.
Resultado do turno do diálogo Contém informações de status de um diálogo ativo ou recentemente ativo. Se o diálogo ativo tiver terminado, ele conterá seu valor retornado.

Tipos de diálogo

A biblioteca de diálogos fornece alguns tipos de diálogos para fazer com que as conversas do seu bot sejam mais fáceis de gerenciar. Alguns tipos são descritos com mais detalhes posteriormente neste artigo.

Tipo Descrição
caixa de diálogo A classe base para todos os diálogos.
diálogo de contêiner A classe base para todos os diálogos de contêiner, como diálogos adaptáveis e de componente. Ele mantém um conjunto de diálogos internos e permite que você trate uma coleção de diálogos como uma unidade.
diálogo de componente Um tipo 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 um diálogo de componente é iniciado, ele começa com um diálogo designado em sua coleção. Quando o processo interno é concluído, o diálogo do componente termina.
diálogo em cascata Define uma sequência de etapas, permitindo que o bot guie um usuário por meio de um processo linear. Normalmente, elas são projetadas para funcionar dentro do contexto de uma caixa de diálogo de componente.
diálogos de solicitação Peça a entrada do usuário e retorne o resultado. Uma solicitação será repetida até que receba uma entrada válida ou seja cancelada. Eles são projetados para funcionar como diálogos em cascata.
diálogo adaptativo Um tipo de diálogo de contêiner usado pelo Composer para fornecer fluxos de conversa mais naturais. Ele não se destina a ser usado diretamente em um bot criado primeiro com o SDK.
diálogos de ação Um tipo de diálogo que dá suporte à implementação de ações no Composer. Ele não se destina a ser usado diretamente em um bot criado primeiro com o SDK.
diálogos de entrada Um tipo de diálogo que dá suporte à implementação de ações de entrada no Composer. Ele não se destina a ser usado diretamente em um bot criado primeiro com o SDK.
diálogo de habilidade Automatiza o gerenciamento de um ou mais bots de habilidade com base em um consumidor de habilidade. O Composer dá suporte direto às habilidades como ações.
Diálogo do QnA Maker Automatiza o acesso a uma base de informações do QnA Maker. Esse diálogo foi projetado para funcionar também como uma ação dentro do Composer.

Importante

Os diálogos adaptativos foram adicionados pela primeira vez na versão 4.9 do SDK do C#. Os diálogos adaptativos dão suporte ao Bot Framework Composer e não se destinam a ser usados diretamente em um bot criado primeiro com o SDK.

Padrões de diálogo

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

  1. Recomendamos o uso do Bot Framework Composer para criar diálogos de conversa para se beneficiar de recursos de conversa mais naturais e fluidos. Para obter mais informações, confira Introdução ao Bot Framework Composer. Esses bots ainda podem ser estendidos com código, se necessário.
  2. Desenvolva seu bot em uma das linguagens do SDK e use o método de extensão de execução do diálogo raiz. Para obter informações sobre como usar o método de execução com um diálogo de componente, confira sobre diálogos de componente e cascata e como implementar o fluxo de conversa sequencial.

A pilha de diálogo

Um contexto 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 todos os diálogos ativos. Cada diálogo de contêiner tem um conjunto interno de diálogos que está controlando e, portanto, cada diálogo de contêiner ativo introduz um contexto de diálogo interno e uma pilha de diálogo como parte do estado.

Embora você não acesse a pilha diretamente, reconhecer que ela existe e sua função ajudará a entender como vários aspectos da biblioteca de diálogos funcionam.

Diálogos de contêiner

Um diálogo de contêiner pode fazer parte de um conjunto de diálogos maior. Cada contêiner tem um conjunto de diálogos internos que também é gerenciado.

  • Cada conjunto de diálogos cria um escopo para resolver as IDs de diálogo.

  • Atualmente, o SDK implementa dois tipos de diálogos de contêiner: diálogos de componente e diálogos adaptativos.

    A estrutura conceitual dos dois é bem diferente. No entanto, um bot do Composer pode fazer uso de ambos.

IDs de diálogo

Ao adicionar um diálogo a um conjunto de diálogos, você atribui a ele uma ID exclusiva dentro desse conjunto. Os diálogos dentro de um conjunto fazem referência uns aos outras por suas IDs.

Um diálogo faz referência a outro diálogo em tempo de execução pela ID do diálogo. O contexto do 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 procura por 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

Os diálogos de componente usam um modelo de sequência para conversas, e cada diálogo no contêiner é responsável por chamar outros diálogos no contêiner. Quando a pilha de diálogo interna do diálogo do componente está vazia, o componente termina.

Considere o uso de diálogos 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 diálogos de componente e cascata descreve os diálogos de componente, cascata e solicitação com mais detalhes.

Outros diálogos

O QnA Maker e os diálogos de habilidade podem ser usados como diálogos autônomos ou como parte de uma coleção de diálogos em um contêiner.

Diálogo do QnA Maker

Observação

O QnA Maker de IA do Azure será desativado em 31 de março de 2025. A partir de 1° de outubro de 2022, não será mais possível criar recursos ou bases de conhecimento do QnA Maker. Uma versão mais recente da funcionalidade de perguntas e respostas agora está disponível como parte da Linguagem de IA do Azure.

Respostas às perguntas personalizadas, um recurso da Linguagem de IA do Azure, é a versão atualizada do serviço QnA Maker. Para obter mais informações sobre o suporte a perguntas e respostas no SDK do Bot Framework, confira Reconhecimento de linguagem natural.

O diálogo do QnA Maker acessa uma base de informações 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 solicitações de vários turnos, permitem que uma base de informações peça mais informações ao usuário antes de responder à pergunta.
  • Sugestões de aprendizado ativo permitem que a base de informações melhore com o tempo. O diálogo do QnA Maker dá suporte a comentários explícitos para o recurso de aprendizado ativo.

Para saber mais, veja:

Diálogo de habilidade

Um diálogo de habilidade 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 saber mais, veja:

Próximas etapas