Microsoft Bot Framework : FormFlow
E ai pessoal, tudo em riba? Já tem um tempo que venho brincando com bots, e recentemente fiz a Maratona Bots da Microsoft e aproveitei pra aprofundar um pouco mais. E como todo assunto novo é difícil encontrar exemplos e artigos(principalmente em pt-BR), então resolvi ajudar a cobrir essa lacuna… O primeiro tópico que irei abordar é FormFlow, recurso para criar formulários em bot(para efetuar pedidos, reservas,etc) e muito requisitado no grupo da maratona no facebook. Daí resolvi separar o tema em artigos, que serão:
Introdução ao FormFlow(este);
Usando FormFlow com outros dialogos;
Usando FormFlow a partir de um JSON.
Feita as apresentações vamos lá!
Caso você nunca tenha ouvido falar sobre bots, mas ficou interessado, dá um confere aqui!
https://www.youtube.com/watch?v=tWtTwCj5NjQ&list=PLNTCwkT5owTREcmB3d7Pu1LTYZl98dRLP
Criando um Formulário
Para que meu código fique mais organizado eu costumo criar meu formulário dentro de uma pasta especifica, no caso a pasta de modelos:
Feito isso basta montarmos a estrutura do formulário e o FormFlow faz o resto. A estrutura das perguntas pode ser vista abaixo.
Os enumeradores são excelentes quando se quer usar botões para seleção, inclusive já é assim por padrão.
Agora temos que montar nosso formulário.
Agora, vamos dissecar o código… Criamos uma classe Aluguel que será o nosso formulário. Dentro dela criamos propriedades dos campos necessários.
Lembrem-se de decorar a classe do formulário com o [Serializable]
Por padrão as perguntas serão feitas na ordem que colocamos as propriedades, caso necessário você pode alterar a ordem. Uma atenção especial para a ultima propriedade, que é uma lista. Ela permite que o usuário escolha mais de uma opção, enquanto as demais propriedades permite apenas uma opção de escolha.
Para criar o formulário precisamos criar uma instância de um FormBuild, vamos dar uma olhada nos métodos utilizados:
Message: Ele exibe uma mensagem para o usuário e não esperar uma resposta, muito útil para orientar o usuário caso seja necessário.
OnCompletion : É um delegate que executa quando o formulário é finalizado, ali dentro pode-se fazer qualquer coisa! Chamar uma API, salvar os dados no banco, exibir mensagem, etc. Se for muito extenso pode-se, inclusive, criar um método separado para executar.
Build: Ele é responsável pela “construção” do Formulário.
Com esses métodos básicos já é possível criar o formulário.
Agora para exibir o formulário devemos chamá-lo no MessagesController.
Na linha 24, por padrão(se estiver usando o template do bot) ele vai chamar o RootDialog. Retire e coloque Dialogo(ou outro nome de sua preferência, que não seja palavra reservada!) e “ctrl+.” e selecione para criar um método(linha 34) mude-o para “internal static” e insira o comando da linha 34, chamando o método BuildForm. Agora está pronto para rodar seu seu bot com formulário, assim que o usuário digitar qualquer coisa ele entrará no FormFlow.
Na imagem acima, uma atenção especial para a ultima pergunta, onde o usuário deve informar o numero de dias que vai ficar com o carro. A pergunta não está muito bem estruturada, né? Não se preocupe no próximo artigo irei mostrar como customizar o formulário, para que tudo fique mais apresentável.