46 lines
928 B
Markdown
46 lines
928 B
Markdown
# Webhook Specification
|
|
|
|
## Public Endpoints
|
|
- GET /webhooks/whatsapp
|
|
- POST /webhooks/whatsapp
|
|
- POST /webhooks/whatsapp/:provider
|
|
|
|
## Responsibilities
|
|
- Validate verification token or signature
|
|
- Store raw payload
|
|
- Detect duplicate event_id
|
|
- Enqueue processing job
|
|
- Return 200 quickly
|
|
|
|
## Internal Normalized Event Format
|
|
```json
|
|
{
|
|
"provider": "meta",
|
|
"event_type": "message.delivered",
|
|
"event_id": "evt_123",
|
|
"sender_phone": "628xxxx",
|
|
"recipient_phone": "628yyyy",
|
|
"external_message_id": "wamid.xxx",
|
|
"timestamp": "2026-05-08T06:00:00.000Z",
|
|
"payload": {}
|
|
}
|
|
```
|
|
|
|
## Internal Event Types
|
|
- message.inbound
|
|
- message.sent
|
|
- message.delivered
|
|
- message.read
|
|
- message.failed
|
|
- template.updated
|
|
- account.updated
|
|
|
|
## Processing Flow
|
|
1. Receive request
|
|
2. Verify authenticity
|
|
3. Save webhook_events record
|
|
4. Ignore duplicates
|
|
5. Push job to queue
|
|
6. Worker parses and updates data
|
|
7. Mark processed or failed
|