Crie seu primeiro Bot utilizando o Bot Framework

18 abr

Fala Galera,

Neste post irei falar sobre uma novidade revelada na Build 2016, o Bot Framework. O Bot Framework foi criado para ajudar na criação de bots no qual podemos interagir com nossos usuários naturalmente no mais diversos canais como Skype, Slack  e entre outros serviços.

Hoje estarei demonstrando como criar nosso primeiro Bot.

Vamos aos pré-requisitos.

  1. Visual Studio 2015 Update 1 – Pode ser o community. Clique aqui para fazer o download
  2. Faça o download do template do Bot Application. Clique aqui para fazer o download
  3. Salve o zip em %USERPROFILE%\Documents\Visual Studio 2015\Templates\ProjectTemplates\Visual C#
  4. Abra o Visual Studio

Criando o seu Primeiro Bot Application

Com o Visual Studio 2015 aberto vamos criar nosso primeiro projeto bot framework. Com o template do Bot instalado iremos ver uma janela igual a imagem abaixo:

Bot1

Escolha o template do Bot Application, esse template provê todas as funcionalidades para que possamos criar Bot sem precisar de muito esforço de programação.

Iremos criar um bot para atender pedidos de uma pizzaria. Para isso iremos utilizar o FormBuilder do Bot Framework.

Porém antes de começar a criar nosso bot devemos instalar um pacote chamado Bot Builder para fazer isso vamos ao Package Manager Console e digitar o seguinte comando: Install-Package Microsoft.Bot.Builder

Com o Bot Builder adicionado em nosso projeto, podemos criar fluxo de conversações poderosas.

Utilizando o Form Builder

Iremos criar um bot para atender os chamados de uma pizzaria para isso iremos usar o Bot Form Builder que irá tornar nossa vida super fácil ao criar fluxos de conversações entre um usuário e um Bot.

Primeiro vamos criar uma classe chamada PizzaOrder e nesta classe iremos criar duas enumerações chamada PizzaOptions e SizeOptions conforme código abaixo.

 [Serializable]
 public class PizzaOrder
 {
     public enum PizzaOptions
     {
         Margherita,
         Calabresa,
         Frango,
         Portuguesa,
         Palmito
     }

     public enum SizeOptions
     {
         Brotinho,
         Media,
         Grande,
         Familia
     }

     public PizzaOptions? Pizza { get; set; }
     public SizeOptions? Size { get; set; }
     public String Address { get; set; }
}

A nossa classe de PizzaOrder tem 3 propriedades que são qual a pizza o usuário quer, qual o tamanho dela e para qual endereço a pizza deverá ser entregue.

Iremos usar o Bot Form Builder assim devemos alterar a classe PizzaOrder e adicionar a implementação abaixo para que nosso bot converse com nossos usuários.

[Serializable]
public class PizzaOrder
{
  public enum PizzaOptions
  {
     Margherita,
     Calabresa,
     Frango,
     Portuguesa,
     Palmito
  }
  public enum SizeOptions
  {
     Brotinho,
     Media,
     Grande,
     Familia
  }

  public PizzaOptions? Pizza { get; set; }
  public SizeOptions? Size { get; set; }
  public String Address { get; set; }
  
  public static IForm<PizzaOrder> BuildForm()
  {
       return new FormBuilder<PizzaOrder>()
              .Message("Seja bem vindo a Pizzaria do Bairro!")
              .Build();
  }
}

Nossa classe de PizzaOrder está pronta, agora devemos conectar ela ao nosso Bot.

Conectando ao Bot

Para conectar a classe PizzaOrder ao bot devemos implementar uma função que irá retornar uma interface IDialog essa interface que será responsável  por gerenciar o fluxo de conversão entre nosso bot e os usuários.

Então irei abrir o arquivo MessageController.cs e adicionar o código abaixo:

[BotAuthentication]
public class MessagesController : ApiController
{
  internal static IDialog<PizzaOrder> MakeRootDialog()
  {
      return Chain.From(() => FormDialog.FromForm(PizzaOrder.BuildForm));
  }

  /// <summary>
  /// POST: api/Messages
  /// Receive a message from a user and reply to it
  /// </summary>
  public async Task<Message> Post([FromBody]Message message)
  {
      if (message.Type == "Message")
      {
          return await Conversation.SendAsync(message, MakeRootDialog);
      }
      return HandleSystemMessage(message);
  }

  private Message HandleSystemMessage(Message message)
  {
      return null;
  }
}

Pronto nosso Bot agora está conectado a classe PizzaOrder. Note que no Post passei como parâmetro a implementação do fluxo de conversação (MakeRootDialog) entre o Bot e o usuário.

Com isso nosso Bot está pronto para uso basta testá-lo.

Testando nosso Bot

Para testar um Bot, devemos fazer download do Bot Emulator, essa ferramenta irá nos ajudar a testar nosso fluxo de conversação. Faça o download do emulador (Clique aqui para fazer o download) com ele instalado poderemos testar nosso Bot utilizando o Visual Studio.

Com o emulador instalado, basta executar nosso projeto apertando F5 e abrir o programa do emulador. Veja a imagem com o nosso Bot interagindo conforme vou escolhendo as opções.

Bot2

Podemos ver que nosso Bot está funcionando e conversando com o usuário.

Com o Bot Framework podemos criar Bots incríveis com extrema facilidade. Isso pode ser muito útil para criar Bots inteligentes nas mais diversas áreas como Call Center, Telefonia, Atendimento e etc.

Para saber mais sobre o Bot Framework  clique aqui.

O código de criação do nosso Bot está disponivel no GitHub. No GitHub tem outras opções de conversações e transições entre os diálogos.

Não deixem comentar!

Abs e até o próximo.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *