Crie seus próprio prompts para coletar entradas do usuário

aplica-se a: SDK v4

Uma conversa entre um bot e um usuário muitas vezes envolve solicitar ao usuário algumas informações, analisar as respostas e atuar com base nessas informações. Seu bot deve controlar o contexto de uma conversa, para que ele possa gerenciar seu comportamento e lembrar-se das respostas às perguntas anteriores. Um estado do bot é uma informação que o bot controla para responder apropriadamente às mensagens recebidas.

Dica

A biblioteca de diálogos fornece prompts integrados que fornecem mais funcionalidades que os usuários podem usar. Exemplos desses prompts podem ser encontrados no artigo Implementar fluxo de conversa sequencial.

Pré-requisitos

Sobre o código de exemplo

O exemplo de bot faz uma série de perguntas ao usuário, valida algumas das respostas dele e salva as entrada que ele faz. O diagrama a seguir mostra a relação entre o bot, o perfil do usuário e as classes de fluxo da conversa.

prompts personalizados em C #

  • Uma classe UserProfile para as informações do usuário que o bot coletará.
  • Uma classe ConversationFlow para controlar o estado da nossa conversa durante a coleta de informações do usuário.
  • Uma ConversationFlow.Question enumeração interna para acompanhar onde você está na conversa.

O estado do usuário acompanhará o nome, a idade e a data escolhida do usuário e o estado da conversa acompanhará o que você acabou de perguntar ao usuário. Como você não planeja implantar esse bot, configurará o estado do usuário e da conversa para usar o armazenamento de memória.

Use o manipulador de turnos de mensagem do bot, além das propriedades de estado do usuário e da conversa para gerenciar o fluxo da conversa e a coleção de entrada. No bot, você registrará as informações de propriedade de estado recebidas durante cada iteração do manipulador de turnos de mensagem.

Criar objetos da conversa e do usuário

Crie o usuário e os objetos de estado da conversa na inicialização e consuma-os por meio da injeção de dependência no construtor de bot.

Startup.cs [!code-csharpStartup.cs]

Bots/CustomPromptBot.cs [!code-csharpconstructor]

Criar acessadores de propriedade

Crie acessadores de propriedade para as propriedades de perfil de usuário e de fluxo de conversa e, em seguida, chame GetAsync para recuperar o valor da propriedade do estado.

Bots/CustomPromptBot.cs [!code-csharpOnMessageActivityAsync]

Antes do fim da rodada, chame SaveChangesAsync para gravar qualquer alteração de estado no armazenamento.

    // Save changes.
    await _conversationState.SaveChangesAsync(turnContext, false, cancellationToken);
    await _userState.SaveChangesAsync(turnContext, false, cancellationToken);
}

O manipulador de turno de mensagens do bot

Ao lidar com atividades de mensagens, o manipulador de mensagens usa um método auxiliar para gerenciar a conversa e fazer solicitações ao usuário. O método auxiliar é descrito na seção a seguir.

Bots/CustomPromptBot.cs [!code-csharpmessage handler]

Preenchendo o perfil do usuário

O bot solicita ao usuário informações, com base na pergunta, se houver, que o bot fez na rodada anterior. A entrada é analisada por meio de um método de validação.

Cada método de validação segue um design semelhante:

  • O valor retornado indica se a entrada é uma resposta válida para a pergunta.
  • Se a validação é bem-sucedida, produz um valor analisado e normalizado para salvar.
  • Se a validação falha, produz uma mensagem com a qual o bot pode solicitar as informações novamente.

Os métodos de validação são descritos na seção a seguir.

Bots/CustomPromptBot.cs [!code-csharpFillOutUserProfileAsync]

Analisar e validar a entrada

O bot usa os critérios a seguir para validar a entrada.

  • O nome deve ser uma cadeia de caracteres preenchida. É normalizado eliminando o espaço em branco.
  • A idade deve ser entre 18 e 120. É normalizado retornando um número inteiro.
  • A data deve ser qualquer data ou hora pelo menos uma hora no futuro. É normalizado retornando apenas a parte da data da entrada analisada.

Observação

Para a entrada de idade e data, use as bibliotecas de texto Microsoft/Recognizers para executar a análise inicial. Enquanto você fornece o código de exemplo, não explica como as bibliotecas de reconhecedores de texto funcionam, e essa é apenas uma maneira de analisar a entrada. Para obter mais informações sobre essas bibliotecas, consulte o README .

Bots/CustomPromptBot.cs [!code-csharpvalidation methods]

Testar o bot localmente

Baixe e instale o Bot Framework Emulator para testar o bot localmente.

  1. Execute o exemplo localmente em seu computador. Se você precisar de instruções, consulte o README arquivo para exemplo de C# Sample, js exemploou o exemplo de Python.
  2. teste-o usando o Emulator conforme mostrado abaixo.

Exemplo de interação no Emulator

Recursos adicionais

A Biblioteca de caixas de diálogo fornece classes que automatizam muitos aspectos do gerenciamento das conversas.

Próxima etapa