Microsoft Bot Framework : FormFlow

Pedro Jesus
3 min readMar 19, 2018

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);

Personalizando o formulário;

Usando FormFlow com outros dialogos;

Usando FormFlow com o LUIS;

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:

Organização

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.

Exemplo de execução

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.

--

--