Essa imagem ilustra a arquitetura básica, em que:
- O usuário envia uma mensagem no WhatsApp, que é capturada pela API do WhatsApp Business.
- A mensagem é encaminhada para um Webhook hospedado no Heroku.
- O Webhook faz uma requisição à API da OpenAI via um Wrapper.
- A OpenAI gera uma resposta, que retorna para o Webhook.
- O Webhook envia a resposta de volta para a API do WhatsApp Business.
- O WhatsApp entrega a resposta ao usuário.
Para colocar este projeto em funcionamento, você precisará criar contas (algumas exigem cartão de crédito para habilitar o uso de recursos):
- Conta na OpenAI
- Necessário cartão de crédito para uso da API GPT.
- Conta de desenvolvedor na Meta (para usar a Cloud API do WhatsApp)
- Não é exigido cartão de crédito, mas você precisa de um ambiente no Facebook for Developers.
- Conta no Heroku
- Poderá exigir um cartão de crédito para verificação (depende do tipo de plano que você escolher).
Este projeto consiste na construção de um chatbot de IA generativa para responder dúvidas de programação. O bot é integrado à Cloud API do WhatsApp e utiliza a API da OpenAI para gerar respostas contextuais. A aplicação é desenvolvida em FastAPI (Python), garantindo alta performance e escalabilidade.
- Programação em Python
- Construção de aplicações web com FastAPI
- Integração com a API da OpenAI (ChatCompletions)
- Conexão com a Cloud API do WhatsApp (Meta)
- Construção de Webhook para intermediação de mensagens
- Implantação no Heroku
- Clone este repositório ou baixe o código-fonte.
- Abra a pasta do projeto no Visual Studio Code (ou outro editor de preferência).
- Crie e ative um ambiente virtual.
- Instale as dependências.
- Configure as variáveis de ambiente localmente (arquivo
.env
).
python -m venv venv-chatbot-wpp
venv-chatbot-wpp\Scripts\activate
python3 -m venv venv-chatbot-wpp
source venv-chatbot-wpp/bin/activate
pip install -r requirements.txt
Caso ainda não tenha o Heroku instalado:
macOS (via Homebrew):
brew tap heroku/brew && brew install heroku
Windows: Baixe o Heroku CLI no site oficial.
Antes de executar localmente ou fazer o deploy no Heroku, certifique-se de definir as variáveis de ambiente necessárias.
Crie o arquivo .env
na raiz do projeto com suas credenciais:
WHATSAPP_API_TOKEN=SEU_TOKEN
WHATSAPP_CLOUD_NUMBER_ID=SEU_NUMBER_ID
OPENAI_API_KEY=SUA_CHAVE_OPENAI
WHATSAPP_HOOK_TOKEN=SEU_TOKEN_WEBHOOK
PHONE_NUMBER=NUMERO_TELEFONE_COM_CODIGO_PAIS
Atenção: Nunca exponha estas chaves em repositórios públicos!
Nas configurações do Heroku, acesse a aba “Settings” e clique em “Reveal Config Vars”. Adicione cada variável de ambiente com os mesmos nomes (chave/valor) usados no arquivo .env
.
Exemplo:
WHATSAPP_API_TOKEN -> SEU_TOKEN
WHATSAPP_CLOUD_NUMBER_ID -> SEU_NUMBER_ID
OPENAI_API_KEY -> SUA_CHAVE_OPENAI
WHATSAPP_HOOK_TOKEN -> SEU_TOKEN_WEBHOOK
PHONE_NUMBER -> NUMERO_TELEFONE_COM_CODIGO_PAIS
Após configurar as variáveis de ambiente no Heroku, você pode efetuar o deploy do projeto. Existem diversas formas de fazer isso:
- Via GitHub: Conecte o repositório ao Heroku e ative o deploy automático ou manual.
- Via Git/CLI: Use o
heroku create
para criar um app, adicione o repositório remoto e façagit push heroku main
.
Depois de publicado no Heroku:
- Certifique-se de configurar o Webhook no Facebook for Developers, apontando para a URL do seu app no Heroku, ex.:
https://seuapp.herokuapp.com/webhook/
- Valide o Webhook informando o WHATSAPP_HOOK_TOKEN na configuração do Meta for Developers.
- Envie mensagens a partir do WhatsApp para o número configurado.
- Se tudo estiver correto, as mensagens chegarão ao endpoint do FastAPI, serão processadas e a resposta chegará via WhatsApp.
Dentro do arquivo webhook.py
, observe como a notificação é recebida e processada:
@app.post("/webhook/")
async def callback(request: Request):
# Processa a notificação e extrai dados
wtsapp_client = WhatsAppClient()
data = await request.json()
response = wtsapp_client.process_notification(data)
if response.get("statusCode") == 200:
# Mensagem válida
openai_client = OpenAIClient()
reply = openai_client.complete(message=response["body"])
# Envia resposta ao WhatsApp
wtsapp_client.send_text_message(
message=reply,
phone_number=response["from_no"]
)
return {"status": "success"}, 200
Esse fluxo garante que, toda vez que o WhatsApp enviar uma requisição ao nosso webhook, a mensagem será processada pela OpenAI para gerar respostas específicas sobre programação.
Este projeto demonstra como integrar FastAPI, OpenAI e a Cloud API do WhatsApp para criar um chatbot inteligente, focado em dúvidas de programação. A hospedagem no Heroku possibilita um ambiente de produção escalável.
Obs.: Lembre-se de que OpenAI e Heroku podem cobrar pelo uso após certa cota gratuita ou requerer cartão de crédito para verificação de conta.
Bom desenvolvimento e bons estudos!