Este é um projeto de chatbot para o Telegram, que permite a interação em tempo real com os usuários, enviando e recebendo mensagens. O bot utiliza a API do Telegram Bot para sua funcionalidade. Além disso, o projeto inclui testes de integração com o Cypress para garantir a qualidade e confiabilidade das interações do chatbot e inteligência artificial para análise dos sentimentos dos usuários.
- Uma conta na Google
- SDK do Firebase Authentication
- Node LTS
- Docker
- Clone o projeto em sua máquina:
git clone https://github.com/normyee/televolve-bot.git - Entre no projeto:
cd televolve-bot
- Crie um projeto um projeto no Firebase:
https://console.firebase.google.com - Salve os dados do FirebaseConfig
- Ative o serviço de
Email/Passworddo serviço de autenticação no console do Firebase - Dentro da pasta do Frontend, navegue até
src/config/settings.jse preencha com os dados que você salvou do FirebaseConfig - Entre no Frontend:
cd ./televolve-ui - Instale as dependências:
npm install - Inicialize a aplicação Web:
npm run dev
- Abra o Telegram e procure pelo BotFather
- Ao encontrá-lo, digite:
/start - Crie um novo bot:
/newbot - Escolha um nome para o bot
- Guarde o Token gerado pelo BotFather
- Faça com que o bot possa ler mensagens de grupos:
/setprivacy - Configure como
Disable
- Entre no Backend:
cd ./televolve-api - Crie um arquivo no pasta raiz com nome de
.env - Abra o
.env.examplee passe no.envas mesmas variáveis - Passe a variável
PORT, e emTOKEN, passe o token gerado pelo BotFather - Instale as dependências:
npm install - Inicialize o contêiner:
docker-compose up -d - Crie as migrations da schema do prisma:
npx prisma migrate dev --name create_table_chatlog_message - Inicialize a aplicação:
npm run dev
- Para navegar pelas páginas:
/registere/loginsão as rotas de autenticação. Enquanto/homeé a rota principal da aplicação Web.
- Autenticação das rotas com JWT
- Trocar imagem de perfil e descrição do bot pelo Frontend
- Exibir a foto de perfil dos usuários, tal como o nome em grupos de conversação
- Rolagem automática de novas mensagens
- Notificações
- Utilizar a API do Telegram para exibir que um usuário está digitando agora
- Melhorar testes E2E e adicionar testes unitários
- Exibir histórico de conversas
- Ordernar a lista de chats de acordo com as mensagens recebidas, isto é, se chat X recebe uma atualização, ele ficará no topo da lista de chats
- Fazer com que o Bot consiga responder uma mensagem específica pelo id da mensagem
- Exibir lista de chats no Slidebar em tempo real (atualmente é necessário dar refresh para ver novas conversas)
POST - /sendMessage
http://localhost:8000/sendMessage -> envia uma mensagem para um chat especificado.
{
"chat_id": 1448633266,
"text": "Olá"
}
GET - /getChats
http://localhost:8000/getChats-> retorna todos os chats da aplicação e suas mensagens.
GET - /getChats/id
http://localhost:8000/getChats/id-> retorna um chat especificado pelo chatID
Por meio de queries, podemos limitar a quantidade de mensagens consultadas pelo banco de dados pelo query: limit.
POST - /davinci?limit=3
http://localhost:8000/davinci?limit=3 -> analisa os sentimentos dos usuários de um determinado chatID.
{
"id": 1248733966,
"api_key": "SUA KEY DA OPENAI"
}