Este projeto implementa um chatbot integrado entre WhatsApp (WPPConnect), permitindo que usuários consultem dados do CRM, recebam notificações e executem ações diretamente pelo WhatsApp.
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ WhatsApp │ ───> │ Webhook │ ───> │ Bitrix24 │
│ API │ <─── │ Handler │ <─── │ API │
└─────────────┘ └──────────────┘ └─────────────┘
Obtenha suas credenciais no painel administrativo do Bitrix24:
BITRIX_DOMAIN=https://sua-empresa.bitrix24.com.br
BITRIX_WEBHOOK_TOKEN=k7m9n2p4q6r8s0t1u3v5w7...
BITRIX_USER_ID=1Configure sua conta no Meta Business:
WHATSAPP_PHONE_NUMBER_ID=102429845860943
WHATSAPP_ACCESS_TOKEN=EAALxY9ZB8gM4BO...
WHATSAPP_BUSINESS_ACCOUNT_ID=123456789
WHATSAPP_WEBHOOK_VERIFY_TOKEN=meu_token_secreto_123- Acesse: Aplicações > Webhooks > Webhook de Entrada
- Configure os eventos:
- ONCRMDEALADD (novo negócio)
- ONCRMDEALUPDATE (atualização de negócio)
- ONCRMCONTACTADD (novo contato)
- ONTASKCOMMENTADD (comentário em tarefa)
- URL do webhook:
https://seu-dominio.com/api/webhook/bitrix24
- Acesse Meta for Developers
- Configure o webhook:
- URL:
https://seu-dominio.com/api/webhook/whatsapp - Token de verificação: seu token secreto
- URL:
- Inscreva-se nos campos:
messages,message_status
Recebe eventos do Bitrix24 e processa:
// Exemplo de payload recebido
{
"event": "ONCRMDEALADD",
"data": {
"FIELDS": {
"ID": "123",
"TITLE": "Novo Negócio",
"STAGE_ID": "NEW",
"OPPORTUNITY": "15000.00"
}
}
}Endpoints para testar a integração:
# Status da integração
GET /api/test/bitrix24?action=status
# Listar negócios
GET /api/test/bitrix24?action=deals
# Listar contatos
GET /api/test/bitrix24?action=contacts
# Testar webhook
GET /api/test/bitrix24?action=webhook_testasync function listDeals() {
const response = await fetch(
`${BITRIX_DOMAIN}/rest/${BITRIX_USER_ID}/${BITRIX_WEBHOOK_TOKEN}/crm.deal.list.json`,
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
order: { DATE_CREATE: 'DESC' },
filter: { STAGE_ID: 'NEW' },
select: ['ID', 'TITLE', 'OPPORTUNITY', 'STAGE_ID']
})
}
)
return await response.json()
}async function createContact(name, phone, email) {
const response = await fetch(
`${BITRIX_DOMAIN}/rest/${BITRIX_USER_ID}/${BITRIX_WEBHOOK_TOKEN}/crm.contact.add.json`,
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
fields: {
NAME: name,
PHONE: [{ VALUE: phone, VALUE_TYPE: 'WORK' }],
EMAIL: [{ VALUE: email, VALUE_TYPE: 'WORK' }]
}
})
}
)
return await response.json()
}async function updateDeal(dealId, fields) {
const response = await fetch(
`${BITRIX_DOMAIN}/rest/${BITRIX_USER_ID}/${BITRIX_WEBHOOK_TOKEN}/crm.deal.update.json`,
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
id: dealId,
fields: fields
})
}
)
return await response.json()
}async function sendWhatsAppMessage(phone, message) {
const response = await fetch(
`https://graph.facebook.com/v18.0/${WHATSAPP_PHONE_NUMBER_ID}/messages`,
{
method: 'POST',
headers: {
'Authorization': `Bearer ${WHATSAPP_ACCESS_TOKEN}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
messaging_product: 'whatsapp',
to: phone,
type: 'text',
text: { body: message }
})
}
)
return await response.json()
}Bitrix24 → Webhook → Processa dados → WhatsApp
Quando um negócio é criado no Bitrix24:
- Webhook recebe evento
ONCRMDEALADD - Sistema extrai dados do negócio
- Formata mensagem personalizada
- Envia notificação via WhatsApp ao responsável
WhatsApp → Webhook → API Bitrix24 → Resposta → WhatsApp
Quando usuário envia mensagem:
- WhatsApp envia para webhook
- Sistema interpreta comando
- Faz requisição à API Bitrix24
- Formata e retorna dados via WhatsApp
| Comando | Descrição | Exemplo |
|---|---|---|
status |
Status do sistema | "qual o status?" |
negócios |
Lista negócios | "meus negócios" |
contatos |
Lista contatos | "listar contatos" |
tarefas |
Lista tarefas | "minhas tarefas" |
criar negócio |
Cria novo negócio | "criar negócio Cliente X" |
relatório |
Gera relatório | "gerar relatório mensal" |
O sistema está configurado em modo de teste com dados simulados. Para ativar produção:
- Configure as variáveis de ambiente reais
- Remova o painel de teste da interface
- Ative os webhooks reais nas plataformas
- Execute testes completos antes de disponibilizar
Todos os eventos são registrados com prefixo [v0]:
console.log('[v0] Webhook recebido:', eventData)
console.log('[v0] Consultando Bitrix24 API')
console.log('[v0] Enviando notificação WhatsApp')// Verificar assinatura do webhook
function verifyWebhookSignature(payload, signature) {
const expectedSignature = crypto
.createHmac('sha256', WEBHOOK_SECRET)
.update(payload)
.digest('hex')
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expectedSignature)
)
}Implemente rate limiting para evitar abuso:
// Limite de 10 requisições por minuto por usuário
const rateLimit = {
windowMs: 60 * 1000,
max: 10
}- Verifique se a URL está acessível publicamente
- Confirme que os eventos estão configurados no Bitrix24
- Teste com
ngrokem desenvolvimento
- Verifique o token de acesso
- Confirme que o número está verificado
- Verifique os logs da Meta for Developers
- Verifique as credenciais
- Confirme as permissões do webhook
- Teste os endpoints manualmente
Para dúvidas e suporte:
- Documentação Bitrix24: https://helpdesk.bitrix24.com/
- WhatsApp Business: https://business.whatsapp.com/
- Issues: Abra uma issue no repositório
Versão: 1.0.0
Última atualização: Janeiro 2026
Status: Em modo de teste