Aprenda a criar um chatbot no Facebook
Os chatbots estão na moda e há até quem diga que poderão fazer esquecer as aplicações tal como as conhecemos. A revolução dos chatbots já começou e o Pplware quer acompanhar de perto a evolução deste "novo mundo" de oportunidades.
Hoje ensinamos a criar um simples chatbot no Facebook com o Wit.ai e Heroku, através do node.js.
O que são chatbots?
Os chatbots não são nada mais que software que tenta "simular" um ser humano na conversação e interação com as pessoas. Este "novo" conceito pode ser aplicado aos mais diversos serviços/plataformas, tendo sempre como fonte uma boa base de conhecimento que pode ser criada com recurso à inteligência artificial.
Arquitetura a desenvolver
Basicamente, pretendemos que qualquer mensagem enviada através do Facebook seja reencaminhada para o Wit.ai e para a API (meteorologia) através do Heroku.
Os dados meteorológicos são obtido através de uma 3rd party API disponibilizada pela Yahoo.
Configurar o Wit.ai
O Wit.ai é uma plataforma para construção de chat bots que foi adquirida pelo Facebook após 18 meses da sua fundação. Para configurar o Wit.ai devem:
1) Criar uma conta no Wit.ai em https://wit.ai
2) Criar uma nova app
3) Criar uma história
Por enquanto vamos criar uma história de resposta rápida (sim/não)
- Entrar na página "Stories"
- Clicar no botão "Create a story"
- No campo "User says" escrever "Olá"
- No valor do "intent" colocar "greetings"
- Clicar no botão "Bot sends"
- No campo "The bot says..." escrever "Olá, gostas de falar com máquinas?"
- Clicar no botão "Set quick replies"
- No campo "Type a quick reply" escrever "Sim", pressionar a tecla "Enter", escrever "Não" e pressionar a tecla "Enter"
- Clicar no botão "Bot sends"
- Clicar em "Add new entity", escrever "yes_no" e pressionar duas vezes seguidas na tecla "Enter"
- No campo "Value" escrever "yes"
- Clicar no botão "Bot sends"
- No campo "The bot says..." escrever "Boa! Olha, em breve vou saber dizer o tempo."
- Clicar no botão "Não"
- Clicar em "Add new entity" e selecionar a opção "yes_no"
- No campo "Value" escrever "no"
- Clicar no botão "Bot sends"
- No campo "The bot says..." escrever "Ohh que pena :("
- Clicar no botão "Save Story"
4) Localizar e guardar o "Server Access Token"
- Clicar no separador "Settings"
- Na secção "API Details" localizar o campo "Server Access Token"
- Guardar o token para ser usado mais tarde no Heroku
Configurar o Heroku
O Heroku é uma (PaaS - Platform as a Service) que suporta várias linguagens de programação tendo sido adquirida pela Salesforce.com em 2010.
1) Fazer o clone deste repositório para a máquina local
- NOTA #1: utilizei o Git Shell no Windows 10
- NOTA #2: o Git Shell vem incluído no GitHub Desktop (https://desktop.github.com)
- NOTA #3: é necessário instalar o Heroku CLI (https://devcenter.heroku.com/articles/heroku-cli#download-and-install)
git clone https://github.com/SandroMiguel/messenger-bot-witai-tutorial witai_facebook |
2) Entrar na pasta do projeto
cd witai_facebook |
3) Instalar as dependências
npm install |
4) Criar uma conta no Heroku em https://heroku.com
5) Enviar a aplicação para o Heroku
- Efetuar o login no Heroku
heroku login |
- Criar uma aplicação no Heroku
heroku apps:create chatbot-sandro |
- Fazer o push do bot para o Heroku (deploy)
git push heroku master |
- Definir o token do Wit.ai no Heroku
- O token fornecido anteriormente no Wit.ai deve ser configurado no Heroku
NOTA: também é possível configurar as variáveis de ambiente no dashboard do Heroku através da página "Settings" clicando no botão "Reveal Config Vars"
heroku config:set WIT_TOKEN="F3PN6IUL574DXE3ENCBQQ4SWCYPQHILL" |
- Abrir a aplicação no Heroku
heroku open |
- Guardar este URL (ex.:https://chatbot-sandro.herokuapp.com/)
O Heroku já comunica com o Wit.ai !!!
Configurar o Facebook
Vamos configurar o Messenger do Facebook para comunicar com o chat bot.
- Criar uma conta no Facebook Developers em https://developers.facebook.com
- Criar uma nova página no Facebook em https://www.facebook.com/pages/create
NOTA: Também se pode usar uma página criada anteriormente.
- Criar uma nova app em https://developers.facebook.com/apps
- Configurar a app do Facebook
- Adicionar o produto "Facebook Messenger"
- Configurar o Webhooks
- Callback URL: https://your-heroku-app-name.herokuapp.com/webhooks (não esquecer do "webhooks" no final)
- Verify Token: just_do_it
- Selecionar a página em "Select a page to subscribe your webhook to the page events"
- Gerar o token da aplicação do Facebook
- Clicar em "Settings"
- Selecionar a página
- Guardar o token para ser usado mais tarde no Heroku
- Subscrever a página na secção "Webhooks"
- Definir o token da app do Facebook no Heroku
- O token fornecido anteriormente no Facebook deve ser configurado no Heroku
heroku config:set WIT_TOKEN="F3PN6IUL574DXE3ENCBQQ4SWCYPQHILL" |
Está tudo pronto para dizer olá ao chat bot!!!
Testar o chat bot
Caso a página do Facebook que foi criada não esteja pública, podemos adicionar um botão de conversação e testar o chat bot desta forma.
Este projeto é um fork de https://github.com/jw84/messenger-bot-witai-tutorial.
Este artigo tem mais de um ano
Não funciona em perfis normais?
Olá Cláudio, a resposta rápida é não. Até ao momento o Facebook limita a implementação dos chatbots apenas para páginas do Facebook.
Olá Sandro, obrigado pela resposta. Era interessante que funcionasse para perfis também, porque existe pessoal que usa o seu perfil para demonstrar trabalho.
Conhece alguma solução para este caso?
“demonstrar trabalho”, como assim? Pode dar algum exemplo? Não digo que não exista mas eu não conheço nenhuma forma de implementar um chatbot no perfil do Facebook. Acabei de experimentar uma plataforma para criar chatbots (https://chatfuel.com/) e a primeira coisa que me pediu foi para escolher a página para fazer a ligação ou a possibilidade de criar uma nova.
Realmente só funciona para páginas, não para perfis. Mas nada impede de você criar um perfil profissional através de uma página. Foi o que eu fiz: http://fb.me/sergiodatake. Nesta página tenho um chatbot que recebe as mensagens, dá uma resposta automática e encaminha o conteúdo para meu email, para que eu responda durante o horário comercial.
Esqueci de comentar que fiz isto usando o BLiP: http://www.blip.ai.
O chatfuel é gratuito?
É gratuito sim.
É sim!
Excelente artigo, parabéns
Gosto muito do Heroku…!!! 😀 😀
Tanta complicação. O Telegram já incorpora Chatbots ao tempo… Mas ninguém passa cartão, infelizmente!
nós sabemos.
Parabens pelo artigo, mas fiquei com uma duvida:
Em termos de privacidade das conversas? Uma vez que temos mensagens a passar pelos pipelines destas 3rd parties….ha motivo para ficar de pe atras?
Olá Telmo. Os chatbots são implementados nas infraestruturas já existentes e funcionam como se fossem uma aplicação, só que numa abordagem diferente. Por exemplo, o Facebook obriga a que todas as comunicações sejam feitas com o protocolo https, ou seja, encriptadas. O problema de segurança pode existir noutro lado (ex: bugs no código) mas não nas comunicações. Para concluir, só quando estamos desligados da rede é que estamos seguros…e mesmo assim tenho algumas dúvidas 🙂
Obrigado Sandro! Bom trabalho
Muito bom artigo, mas qual é limitação destes chabot? Comunica com o utilizador somente usando frases simples ou já consegue ter alguma complexidade na comunicação?
Coisa simples…quase e apenas para fazer ums introdução aos chatbots. Estamos a preparar outros artigos.
Fiz tudo como indicado mas o bot simplesmente não responde…
Ivo, você usou o mesmo usuário para publicar o bot na página e também para fazer os testes?
Eu fiz e deu tudo certo, mas agr to com um pequeno problema.
O botão teste funciona muito bem, mas quando um amigo manda uma mensagem nao funciona.
Queria saber pq só funciona no botão de teste