Para fazer o tutorial, o Bot criado foi apenas no Telegram: é o @TiNegociosBot. No entanto, a biblioteca BotMan permite usar o mesmo código para criar a estrutura de Bots para várias plataformas.
- Conta no Telegram
- Ambiente PHP com os requisitos do boilerplate https://packagist.org/packages/mpociot/botman-laravel-starter
- Alguma forma de servir sua aplicação local em uma URL pública (tem várias opções: seja via Laravel Valet, Vagrant Share ou Ngrok).
- Git opcional
Primeiro, é necessário criar o Bot lá no Telegram (mais info aqui: https://core.telegram.org/bots/api):
- /newbot
- Nome do seu bot (qualquer nome Bot)
- Username do seu bot (QualquerNomeBot)
Depois de completar os passos acima, você recebe um ACCESS TOKEN, parecido com esse aqui: 123456789:Adfkj9jjdf9j9jdf9jRkjerkjMijijJUd11
. Copie seu ACCESS TOKEN, pois ele será usado mais na frente.
Agora, é hora de mexer na aplicação:
-
Baixe o projeto (ou via
git clone https://github.com/rogeriopradoj/tuto-botman-laravel-starter
, ou download do zip). -
Edite o arquivo .env` para conectar com Telegram (é aqui que você vai usar aquele ACCESS TOKEN lá em cima).
-
Edite as configurações TINEGOCIOS_ também no arquivo
.env
. -
Depois disso é só rodar o servidor web e servir a aplicação numa url pública (o jeito mais fácil na minha máquina foi rodando
valet link
e depoisvalet share
). No meu caso, a URL ficou parecida com essa daqui: https://a1234567.ngrok.io/
Se você tentar acesar a URL no seu navegador, deve aparecer uma página de erro NotFoundHttpException in RouteCollection.php line 161:
. Se isso acontecer esta tudo certo. É porque a rota que vamos usar não é a rota raiz, e sim a rota /botman/
.
Por fim, é necessário cadastrar a URL do webhook de seu Bot, conforme instruções do Telegram.
Você tem várias formas de fazer isso, a mais fácil:
- pegue seu ACCESS TOKEN do Bot (exemplo:
123456789:Adfkj9jjdf9j9jdf9jRkjerkjMijijJUd11
) - pegue a sua URL pública da aplicação com a rota
/botman/
(exemplo: https://a1234567.ngrok.io/botman/) - ajuste na "URL final"
https://api.telegram.org/bot<ACCESS TOKEN>/setWebhook?url=<URL PÚBLICA DA APLICAÇÃO>/botman/
(exemplo: https://api.telegram.org/bot123456789:Adfkj9jjdf9j9jdf9jRkjerkjMijijJUd11/setWebhook?url=https://a1234567.ngrok.io/botman/)
Pronto, agora, acesse essa URL final no seu navegador mesmo, você deve receber a seguinte resposta que está tudo ok:
{"ok":true,"result":true,"description":"Webhook was set"}
A plataforma que usei foi Google Cloud App Engine Flexible Environment seguindo as orientações daqui (outra opção seria via Heroku).
Aproveitei também para usar o Docker para rodar os comandos Google Cloud SDK em vez de fazer a instalação na minha própria máquina.
Seguem passos:
-
Criar o projeto Google Cloud em https://console.cloud.google.com.
-
Habilitar o Billing no projeto em https://console.cloud.google.com/billing.
-
Baixar a imagem Docker do SDK:
docker pull google/cloud-sdk
-
Inicializar o ambiente do SDK na minha máquina e vinculei com o projeto Google Cloud:
docker run -t -i --name gcloud-config google/cloud-sdk gcloud init
-
Fazer o deploy da aplicação:
docker run --rm -ti -v `pwd`:/apps -w="/apps" --volumes-from gcloud-config google/cloud-sdk gcloud app deploy
-
Registrar a URL do projeto gerada pelo Google Cloud no Telegram:
https://api.telegram.org/bot<ACCESS TOKEN>/setWebhook?url=<URL DO PROJETO>/botman/
(exemplo: https://api.telegram.org/bot123456789:Adfkj9jjdf9j9jdf9jRkjerkjMijijJUd11/setWebhook?url=https://url-do-projeto.appspot.com/botman/).
Colocar NLP (natural language processing): https://rasa.ai/, https://wit.ai/, https://api.ai/, https://www.luis.ai/, https://www.ibm.com/watson/ etc.