1) Webhooks Ringover — spécification
1.1 POST /wh/ringover/call-started
Headers attendus
- Content-Type: application/json
- X-Ringover-Signature: <hmac> (si disponible) sinon Authorization: Bearer <token>
- X-Request-Id: <uuid> (si fourni)
Payload “raw” (exemple)
{ "event": "call.started", "timestamp": "2026-01-02T15:00:00.000Z", "call": { "id": "ro_call_123", "direction": "inbound", "from": "+33601020304", "to": "+33189000000", "queue_id": "ro_queue_1", "agent": { "id": "ro_agent_77", "email": "agent@synergia.fr" } } }
Normalized
{ "call_id": "ro_call_123", "direction": "inbound", "from_e164": "+33601020304", "to_e164": "+33189000000", "queue_id": "ro_queue_1", "agent_ref": "ro_agent_77" }
Idempotence
-
event_id :
- si Ringover fournit un event_id → utilisez-le
- sinon : sha256("ringover|call.started|ro_call_123|2026-01-02T15:00:00.000Z")
- idempotency.key : ringover:call.started:ro_call_123
1.2 POST /wh/ringover/call-ended
Raw (exemple)
{ "event": "call.ended", "timestamp": "2026-01-02T15:05:12.000Z", "call": { "id": "ro_call_123", "direction": "inbound", "from": "+33601020304", "to": "+33189000000", "duration_sec": 312, "hangup_cause": "normal_clearing", "disposition": "answered", "agent": { "id": "ro_agent_77" } } }
Normalized
{ "call_id": "ro_call_123", "duration_sec": 312, "hangup_cause": "normal_clearing", "disposition": "answered" }
Idempotence
- idempotency.key : ringover:call.ended:ro_call_123
1.3 POST /wh/ringover/recording-ready
Raw (exemple)
{ "event": "call.recording_ready", "timestamp": "2026-01-02T15:06:00.000Z", "call": { "id": "ro_call_123" }, "recording": { "id": "ro_rec_555", "url": "https://provider.example/recordings/ro_rec_555.mp3", "format": "mp3" }, "transcript": { "text": "Bonjour, je souhaite prendre rendez-vous...", "language": "fr" } }
Normalized
{ "call_id": "ro_call_123", "recording_id": "ro_rec_555", "recording_url": "https://provider.example/recordings/ro_rec_555.mp3", "transcript_text": "Bonjour, je souhaite prendre rendez-vous...", "transcript_lang": "fr" }
Idempotence
-
idempotency.key : ringover:call.recording_ready:ro_call_123:ro_rec_555
- Important : inclure recording_id car certains systèmes réémettent “recording_ready” si retraitement.