Skip to main content

Descrição

Quando o agente gera uma bolha, a Jelou faz POST no seu webhookUrl com a mensagem formatada. A entrega tem um limite total de 20 segundos que cobre até 3 tentativas — ver Entrega e novas tentativas.

Envelope

Headers da entrega

  • Content-Type: application/json
  • Auth conforme credentials.auth (se configurada):
    • api_key → header configurável (padrão X-Api-Key)
    • bearerAuthorization: Bearer <value>
    • basicvalue é a string completa username:password antes do Base64; o header é Authorization: Basic <base64(username:password)>
  • X-Jelou-Signature: sha256=<hmac> calculado sobre os bytes exatos do body HTTP bruto (sempre presente; a signing key é obrigatória). Verifique com esse raw body antes de fazer o parse como JSON; não serialize novamente o objeto parseado.

Tipos de mensagem (message)

Um texto do fluxo com opções interativas costuma chegar como type: "BUTTONS", não como TEXT. O tipo no wire de respostas rápidas é QUICK_REPLY (com underscore). O bloco Sticker não está disponível no builder para este canal.

Exemplos

Entrega e novas tentativas

Seu endpoint deve responder 2xx. A Jelou repete uma entrega que falhou até 3 tentativas no total, todas dentro de um único limite total de 20 segundos — esse limite inclui cada tentativa e as esperas entre elas, então a entrega de uma mensagem nunca leva mais de 20 segundos. O backoff entre tentativas é exponencial com jitter (aproximadamente 300 ms e depois 600 ms).
Você precisa deduplicar. Cada tentativa da mesma mensagem leva um body idêntico, um message.messageId idêntico e uma X-Jelou-Signature idêntica. Trate message.messageId como chave de idempotência: se já processou, responda 2xx e não faça mais nada. Responder 5xx depois de já ter processado uma mensagem fará a Jelou entregá-la novamente.
Cada entrega leva um header X-Jelou-Delivery-Attempt (1, 2, 3) que indica de qual tentativa se trata — útil para logs.
Esse header não é autenticado: o HMAC cobre o body, então quem repetir uma requisição capturada pode colocar qualquer valor. Não o use como proteção anti-replay. Verifique primeiro a X-Jelou-Signature e depois deduplique pelo message.messageId autenticado.
Se todas as tentativas falharem, a mensagem não é entregue e o turno é abortado; nesta versão não há reentrega enfileirada.