[PARTE 2] Desenvolvendo seu primeiro Chatbot utilizando o framework Stealth

Para saber como instalar e configurá-lo veja nosso outro post aqui. Nessa introdução, iremos fazer o “Hello World” do Stealth funcionar no Facebook Messenger, vamos aprender como configurar o Facebook Messenger para funcionar com o Stealth e como configurar o Stealth para funcionar com o Facebook Messenger, além de aprender como funcionam alguns componentes principais do framework.

Para isso vamos criar nosso projeto utilizando o comando :

stealth new emerald

PS: Esse nome de projeto nos vai ser útil nos próximos posts =)

Bom isso vai criar toda a estrutura do projeto e juntamente com dois flows funcionais, o Hello e o Goodbye. Esses flows são boas práticas sugeridas pelo framework para um bom fluxo de conversação.

Mas o que são esses Flows?

Flow é um termo genérico para o conjunto de componentes que trabalham para prover uma interação completa em seu bot. Ele é composto basicamente de Controller e suas actions, replies(uma para cada action) e seus respectivos registros no Flowmap. Vamos ver tudo isso na pratica posteriormente e ficará mais fácil de entender.

Todo o fluxo de seu bot começa no método route do bot/controllers/bot_controller.

Nesse código, ao chegar qualquer mensagem, o método verifica se aquele usuário já está interagiu anteriormente e tem uma sessão ativa (ou seja, já está em algum outro fluxo de seu bot) caso tenha é direcionado para ele (usando o step_to) caso não tenha, ele é direcionado para o flow hello (que é representado pelo controller (HellosController) e para o state say_hello (método say_hello).

Na action say_hello há apenas um método send_replies, esse método informa ao bot que envie o conteúdo presente no arquivo replies de mesmo nome da action, ou seja bot/replies/hellos/say_hello.yml

O conteúdo presente no say_hello.yml descreve como a resposta deve ser apresentada ao usuário e varia de acordo com o Service, em nosso caso, vem por padrão formatado para o Facebook Messenger, para saber mais consulte a página do service.

O conteúdo do arquivo de reply informa que deve ser apresentado ao usuário um conteúdo em texto (reply_type:) com as palavras “Hello World” (text:).

Configurando projeto para funcionar no Facebook Messenger

Ok, então vamos testar isso usando o Facebook Messenger

No arquivo Gemfile de seu projeto descomente a linha

gem 'stealth-facebook'

E rode um bundle install para atualizar as dependências.

Você vai precisar criar uma página (ou usar uma que você já tenha), associar um app a ela e configurar o app para integrar com o Messenger.

Você pode seguir os passo 3, 4, 5 desse tutorial.

No arquivo config/services.yml , descomente as configurações do serviço facebook

A principio vamos utilizar apenas o verify_token e o page_access_token , vamos buscar essas informações em variáveis de ambiente, então não vamos esquecer de defini-las:

export VERIFY_TOKEN=MY_SECRET_TOKEN
export FACEBOOK_PAGE_ACCESS_TOKEN=EAAbpgcphI6AxxxxxxxxxxxxxxmAZDZD
  • VERIFY_TOKEN: é o token de autenticação que você define para seu bot e informa ao Facebook na hora de setar seu webhook.
  • FACEBOOK_PAGE_ACCESS_TOKEN: É o token que você gera ao associar seu bot com a página onde ele irá funcionar, você consegue essa informação na seguinte página:
https://developers.facebook.com/apps/<ID_DA_APLICACAO>/messenger/settings/

Agora você precisa rodar o ngrok para tunelar as requisições para porta 5000 (porta utilizada pelo seu chatbot para receber as requisições)

ngrok http 5000

Pegue o endereço https (é necessário ser o https, pois o Facebook exige).

Feito isso rode sua aplicação

stealth s

Agora vamos configurar o Webhook. No menu lateral esquerdo dá página da aplicação do Facebook temos o item Webhook. Nessa sessão, clique no botão Edit Subscription.

No campo Callback URL coloque a <url gerada pelo Ngrok>+ /incoming/facebook, como a imagem exibida a cima, e em Verify Token, coloque o VERIFY_TOKEN definido, anteriormente, na variável de ambiente, clique em Verify and Save. Se tudo estiver certo esse modal irá sumir e você já pode utilizar seu Chatbot.

E voilà!! Nosso Chatbot já está nos respondendo como esperado.

Em nosso próximo post vamos dar algumas habilidades novas para nosso chatbot para torná-lo mais útil e vamos aprofundar mais nos conceitos de flow para criarmos fluxos maiores. Até lá.

Outros posts da serie