Neste post irei falar sobre uma novidade revelada na Build 2016, o Microsoft Bot Framework.

O Microsoft 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 outros serviços de mensagens.

Hoje estarei demonstrando como criar nosso primeiro Bot utilizando o Microsoft Bot Framework.

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 o Bot sem precisar de muito esforço de programação.

Vamos 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.

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

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 Microsoft 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 Microsoft Bot Framework  clique aqui.

O código de criação do nosso Bot está disponível no GitHub, além de ter outras opções de conversações e transições entre os diálogos.

Não deixem de comentar!

Abs e até o próximo.

Rafael Cruz

É desenvolvedor .NET há mais de 12 anos, certificado Microsoft desde de 2006, instrutor oficial Microsoft há 5 anos, Pós Graduado em Engenharia de Software pela UFRJ, suas certificações são Microsoft Certified Trainer, Microsoft Certified Solution Developer (Web, Application Lifecycle Management), Microsoft Certified Professional Developer, Microsoft Certified Tecnology Specialist.
Atualmente trabalha como arquiteto de sistema, escreve artigos no .NET Coders e no seu blog rafaelcruz.azurewebsites.net para compartilhar experiências na área de desenvolvimento Web, Aplicativos Móveis e Cloud Solutions.

Twitter LinkedIn 

Comentários

comentarios