Skip to content

marcusmello/loro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lôro

pipeline status

Um Chatbot para whatsapp feito em python, bootstrap e docker; compatível com twilio

Como Utilizar este software

1 - Download

Este software pode ser baixado gratuitamente e testado livremente; basta descompactar o arquivo (ou navegar até a pasta /loro, caso tenha clonado a partir do github) e seguir as instruções abaixo:

2 - Lançando o servidor web

2.1 - Pré-requisitos

configuração inicial do sistema

Renomeie o arquivo template.env apenas para .env, altere as variáveis para os valores desejados, respeitando as regras descritas no arquivo.

Dica: Por padrão, será utilizado um banco dados 'sqlite', e tudo funcionará bem. Porém, caso queira subir um container postgres para banco de dados e um container pgadmin para monitoramento deste banco, basta remover os comentários das seções pertinentes do arquivo docker-compose.yml. Também será necessário, no arquivo .env., fazer: RELATIONAL_DATABASE_PROVIDER=postgres

2.2 - Subindo o cluster

Apenas rode o comando:

docker-compose up

ou, para correr os contâiners em background (Detached mode):

docker-compose up -d

Acessando o endereço http://localhost:8000/, já é possível interagir com a interface do sistema.

Também, graças ao swagger embarcado com o fastapi, é possível explorar a API e sua documentação no link http://localhost:8000/docs.

3 - Criando as respostas

Irure sunt fugiat ea quis consectetur laborum laborum incididunt fugiat nulla mollit. Eiusmod enim minim nulla non fugiat qui est anim sunt ipsum commodo do laboris. Laborum incididunt occaecat aute nostrud.

4 - Configurando URL de callback no twilio

Ad veniam pariatur id eu labore laboris ea. Dolore id ullamco esse nisi excepteur aliqua laborum nisi ipsum id magna et duis dolore. Exercitation ipsum dolore laborum.

4.1 - Modo sandbox

Enim ipsum id velit ullamco ut amet quis velit. Esse magna nostrud nostrud fugiat. Consectetur minim sit culpa ipsum non quis anim veniam voluptate pariatur proident deserunt eu. Labore aliqua sint consectetur incididunt ut enim aute velit proident esse enim ad proident.

4.2 - Conta verificada

Aliqua do eu anim minim adipisicing. Ad cupidatat deserunt proident dolore culpa commodo cupidatat sit. Eu Lorem ea nulla pariatur deserunt est aute est nostrud dolor. Exercitation cillum non ea mollit cupidatat laboris veniam ipsum magna consectetur et. Pariatur ex laborum occaecat deserunt Lorem magna laboris nulla dolore dolor duis labore. Sit nisi fugiat velit dolor est est reprehenderit pariatur aute. Laborum nulla nostrud nostrud non proident nulla aliqua occaecat velit dolor.

Alguns detalhes deste projeto

Backend/API baseados em fastapi

Frontend concebido em bootstrap renderizado pelo sistema de templates jinja.

O projeto tem arquitetura monolítica modular (mais detalhes abaixo em Estrutura do projeto, tendo suas dependências, ambiente virtual, empacotamento gerenciados pelo poetry num nível mais baixo, e pelo docker/docker-compose numa abstração mais superior.

A comunicação com a API do whatsapp (whatsapp business API) é garantida pelo serviço twilio, um parceiro comercial do facebook, recomendado por este em sua página oficial.

ATENÇÃO


Este software é uma prova de conceito; como tal ainda carece de testes exaustivos, adição de funcionalidades e code review, não sendo recomendado portanto seu uso em produção.



Apesar de o fastAPI ser um framework assíncrono, a comunicação com o banco de dados é feita através da biblioteca de ORM pony, que não é (nativamente) assíncrona. Esta foi uma decisão de projeto; está nos planos de refatoração a substituição por uma biblioteca assíncrona.



Podem haver custos para envios de mensagens; ESTE software pode ser baixado sem custos, seu uso é livre, dentro das restrições impostas pela sua licença. Entretanto, a operação comercial do envio de mensagens não é competência deste software, que apenas automatiza as respostas, do modo recomendado pela empresa responsável pelo whatsapp, o facebook. Este modo demanda a intermediação de um parceiro comercial, neste caso o twilio, que cobra por mensagem enviada.


Estrutura do projeto

│   ├── app
│   │   ├── api
│   │   │   └── api_v1
│   │   │       ├── api.py
│   │   │       └── endpoints
│   │   │           ├── answers.py
│   │   │           └── twilio_hook.py
│   │   ├── lib
│   │   │   ├── chatbot
│   │   │   └── utils
│   │   │       ├── db
│   │   │       │   └── sql
│   │   │       │       ├── crud
│   │   │       │       │   └── answers.py
│   │   │       │       └── models.py
│   │   │       ├── exceptions.py
│   │   │       ├── schemas.py
│   │   │       └── tools
│   │   │           └── string_conversion.py
│   │   ├── main.py
│   │   ├── settings
│   │   │   ├── database_adapters.py
│   │   │   ├── default_answers.py
│   │   │   ├── general.py
│   │   │   ├── url_paths_handler.py
│   │   │   └── web_templating.py
│   │   └── web
│   │       ├── pages
│   │       │   ├── answers_dynamic_form.py
│   │       │   ├── answers.py
│   │       │   ├── home.py
│   │       │   └── router.py
│   │       ├── static
│   │       │   ├── assets
│   │       │   │   ├── img
│   │       │   │   │   ├── favicon.ico
│   │       │   │   │   ├── favicon.svg
│   │       │   │   │   ├── loro.svg
│   │       │   │   │   ├── loro_transparent.png
│   │       │   │   │   └── loro_transparent.svg
│   │       │   │   └── mail
│   │       │   │       ├── contact_me.js
│   │       │   │       ├── contact_me.php
│   │       │   │       └── jqBootstrapValidation.js
│   │       │   ├── css
│   │       │   │   └── styles.css
│   │       │   └── js
│   │       │       └── scripts.js
│   │       └── templates
│   │           ├── answers
│   │           │   ├── answers.html
│   │           │   ├── base_answers.html
│   │           │   ├── delete_confirmation.html
│   │           │   ├── dynamic_form.html
│   │           │   └── not_found.html
│   │           ├── base.html
│   │           ├── clients
│   │           │   ├── not_found.html
│   │           │   └── saved.html
│   │           ├── home.html
│   │           └── page_template.html
│   ├── Dockerfile
│   ├── poetry.lock
│   └── pyproject.toml
├── CHANGELOG.md
├── docker-compose.yml
├── LICENSE
├── README.md
└── template.env

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published