O bot desenvolvido com a Alana uma organização que promove o direito e o desenvolvimento integral da criança e fomenta novas formas de bem viver, tem como objetivo o envio de notificações sobre Projetos de Lei com o foco em Projetos que possuam em pauta os Direitos das Crianças e dos Adolescentes. Esse objetivo é concretizado por meio do monitoramento das APIs da Cãmara dos deputados e do Senado, por meio da execução de atividades regulares utilizando o Celery. Também foram utilizadas planilhas e formulários do Google junto com a API do Google Sheets para a escolha do usuário sobre os temas que as notificações devem abordar, além da elaboração de relatórios contendo os Projetos de Lei em Planilhas do Google.
Para ter seu chatbot Rasa no ar e funcionando rápidamente no shell
execute o seguinte comando:
sudo make first-run
Este comando irá construir o seu chatbot (containers necessários) e abrir a conversação em um livechat
no canto inferior direito da sua tela. Este mensageiro
é o WebChat.
Tudo está dockerizado então você não terá problemas de instalação do ambiente.
Para a elaboração dos relatórios nas Planilhas do Google é necessário o acesso a API do Google Sheets, portanto um arquivo de configuração para o acesso a API com o nome client_secret.json
deve ser adicionado na raíz do projeto. Para a geração desse arquivo de configuração visite esse tutorial de setup da API do google sheets, que abrange desde a criação de um projeto no Google Console até a geração do arquivo de configuração necessário para o correto funcionamento das atividades relacionadas ao relatório.
Para a elaboração de relatórios nas planilhas do Google é necessário que existam duas planilhas, uma utilizada como template para o relatório incluindo toda formatação de fontes, estilo, espaçamento da linha de colunas e outros. A segunda planilha conterá o relatório de fato e será atualizada diariamente com os Projetos de Lei do dia anterior. Para uma explicação mais detalhada sobre criação das planilhas visite esse tutorial para a criação de planilhas.
Além disso os relatórios colhem respostas de dois formulários. Um deles serve para seleção de temas que as notificações devem abordar e outro serve para o cadastro de notificações para um dia específico a partir do usuário, para a criação e linkagem desses formulários com as planilhas do Google visite esse tutorial para criação de formulários
Foram feitas visualizações sobre Projetos de Leis elas englobam nuvem de palavras sobre as Ementas/Tramitações de Projetos de Leis, partidos com maior núemro de relatorias e autorias de PLs além de palavras chaves contidas em Projetos de Lei. Abaixo estão exibidas algumas dessas visualizações
O script first-run
contido no Makefile foi configurado para construir as imagens genéricas necessárias para execução deste ambiente.
Caso seu projeto utilize este boilerplate e vá realizar uma integração contínua ou similar, é interessante
criar um repositório para as imagens e substitua os nomes das imagens "lappis/bot", e "lappis/botrequirements" pelas suas respectivas novas imagens, por exemplo "<organização>/bot" em repositório público.
Após realizar o tutorial de exportação de todas variávies de ambiente necessárias, é possível realizar a execução do bot no telegram corretamente.
Antes de seguir adiante. Importante: As variáveis de ambiente são necessárias para o correto funcionamento do bot, por isso não esqueça de exportá-las.
Edite o arquivo credentials.yml e descomente as linhas referentes ao telegram:
telegram:
access_token: ${TELEGRAM_TOKEN}
verify: ${TELEGRAM_BOT_USERNAME}
webhook_url: ${TELEGRAM_WEBHOOK}
Se ainda não tiver treinado seu bot execute antes:
sudo make train
Depois execute o bot no telegram:
sudo docker-compose up -d bot_telegram
Após seguir todos os passos até aqui, é necessário realizar a exportação de todas as variáveis de ambiente do serviço utilizado para agendamento de atividades regulares, após seguir o tutorial de exportação de variáveis o arquivo celery.env
deve ficar parecido com esse.
TELEGRAM_TOKEN=token
TELEGRAM_DB_URI=mongodb://database-alana:27017/bot
SHEET_ID=your_sheet_id
SHEET_TEMPLATE_ID=your_sheet_template_id
RABBITMQ_DEFAULT_USER=admin
RABBITMQ_DEFAULT_PASS=admin
Caso queira realizar o deploy de todo o ambiente de desenvolvimento, existe um docker-compose especialmente para isso. Esse arquivo possui todos os serviços disponíveis no docker-compose, com as especifidades de conversarem com dois outros: O Nginx e o Certbot, serviços responsáveis pela realização do proxy-reverso e da geração dos certificados SSL respectivamente. Para tudo isso funcionar corretamente basta alterar os arquivos http.conf e ssl.conf localizados na pasta /src/data/nginx e também o script init_production.sh
.
Com esses arquivos configurados basta executar os seguintes comandos e os serviços estarão funcionando corretamente na sua infraestrutura.
chmod +x init_production.sh
sudo ./init_production.sh
Para a visualização dos dados da interação entre o usuário e o chatbot nós utilizamos uma parte da Stack do Elastic, composta pelo ElasticSearch e o Kibana. Com isso, utilizamos um broker para fazer a gerência de mensagens. Então conseguimos adicionar mensagens ao ElasticSearch independente do tipo de mensageiro que estamos utilizando.
- Para uma configuração rápida execute o seguinte comando:
sudo make build-analytics
O comando acima só precisa ser executado apenas 1 vez e já vai deixar toda a infra de analytics
pronta para o uso.
Nas próximas vezes que desejar utilizar o analytics
execute o comando:
sudo make run-analytics
Por fim acesse o kibana no locahost:5601
.
Existem duas formas para executar o bot com o broker. A primeira delas é via linha de comando.
Para utilizar esta forma é preciso definir Dentro do arquivo endpoints.yml
as configurações do broker:
event_broker:
url: rabbitmq
username: admin
password: admin
queue: bot_messages
Ao final é necessário buildar novamente o container do bot.
sudo docker-compose up --build -d bot_telegram
O ElasticSearch é o serviço responsável por armazenar os dados provenientes da interação entre o usuário e o chatbot.
As mensagens são inseridas no índice do ElasticSearch utilizando o broker RabbitMQ.
Para subir o ambiente do ElasticSearch rode os seguintes comandos:
sudo docker-compose up -d elasticsearch
sudo docker-compose run --rm -v $PWD/analytics:/analytics bot python /analytics/setup_elastic.py
Lembre-se de setar as seguintes variaveis de ambiente no docker-compose
.
ENVIRONMENT_NAME=localhost
BOT_VERSION=last-commit-hash
Para a análise dos dados das conversas com o usuário, utilize o kibana, e veja como os usuários estão interagindo com o bot, os principais assuntos, média de usuários e outras informações da análise de dados.
O Kibana nos auxilia com uma interface para criação de visualização para os dados armazenados nos índices do ElasticSearch.
sudo docker-compose up -d kibana
Atenção: Caso queira configurar permissões diferentes de usuários (Login) no ElasticSearch/Kibana, siga esse tutorial.
Caso queira subir com os dashboards que criamos para fazer o monitoramento de bots:
sudo docker-compose run --rm kibana python3.6 import_dashboards.py
Após rodar o comando anterior os dashboards importados estarão presentes no menu management/kibana/Saved Objects.
Você pode acessar o kibana no locahost:5601
Levante o container notebooks
sudo make run-notebooks
Acesse o notebook em localhost:8888
Parte da documentação técnica do framework da Tais está disponível na
wiki do repositório. Caso não encontre sua resposta, abra uma issue
com a tag duvida
que tentaremos responder o mais rápido possível.
Todo o bot é desenvolvido sob a licença GPL3