Pular para o conteúdo

Webhooks

Receba notificacoes em tempo real sobre eventos na sua aplicacao.

Como Funciona

Webhooks enviam requisicoes HTTP POST para sua URL sempre que um evento acontece. Sua aplicacao recebe os dados do evento e pode processa-los automaticamente.

Eventoocorre
POSTenviado para sua URL
200 OKconfirma recebimento

NooviChat Webhooks

Configuracao

Registre um webhook via API ou painel de administracao:

bash
curl -X POST \
  "https://chat.seudominio.com/api/v1/accounts/{account_id}/webhooks" \
  -H "api_access_token: YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://your-app.com/webhooks/noovichat",
    "subscriptions": [
      "conversation_created",
      "message_created",
      "contact_created"
    ]
  }'

Eventos Disponiveis

EventoDescricao
conversation_createdNova conversa criada
conversation_status_changedStatus da conversa alterado (aberta, resolvida, pendente)
message_createdNova mensagem recebida ou enviada
message_updatedMensagem atualizada
contact_createdNovo contato criado
contact_updatedDados do contato atualizados
webwidget_triggeredWidget de chat acionado no site

Exemplo de Payload

json
{
  "event": "message_created",
  "id": "1234",
  "account": {
    "id": 1,
    "name": "Minha Empresa"
  },
  "content": "Ola, preciso de ajuda!",
  "conversation": {
    "id": 567,
    "status": "open"
  },
  "sender": {
    "id": 890,
    "name": "Joao Silva",
    "type": "contact"
  },
  "created_at": "2025-01-15T14:30:00.000Z"
}

NooviFlow Webhooks

Configuracao

bash
curl -X POST \
  "https://flow.seudominio.com/api/v1/webhooks" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://your-app.com/webhooks/nooviflow",
    "events": [
      "invoice.created",
      "invoice.paid",
      "transaction.created"
    ]
  }'

Eventos Disponiveis

EventoDescricao
transaction.createdNova transacao registrada
transaction.updatedStatus da transacao alterado
invoice.createdNova fatura emitida
invoice.paidFatura marcada como paga
invoice.overdueFatura vencida
contract.createdNovo contrato criado
contract.cancelledContrato cancelado

Recebendo Webhooks

Exemplo de endpoint para receber webhooks:

app.post("/webhooks/noovichat", (req, res) => {
  const { event, ...data } = req.body;

  switch (event) {
    case "message_created":
      handleNewMessage(data);
      break;
    case "conversation_status_changed":
      handleStatusChange(data);
      break;
    default:
      console.log("Evento nao tratado:", event);
  }

  // Responda rapidamente com 200
  res.status(200).json({ received: true });
});

Boas Praticas

  • Responda com 200 imediatamente e processe os dados de forma assincrona
  • Implemente idempotencia — o mesmo evento pode ser enviado mais de uma vez
  • Use HTTPS na URL de webhook para seguranca dos dados
  • Implemente timeout handling — webhooks que nao respondem em 10s sao considerados falhos
  • Armazene os eventos recebidos em um log para debugging
  • Configure retries para falhas temporarias (o sistema reenvia ate 3 vezes)