— 

1) Webhooks Ringover — spécification

1.1 POST /wh/ringover/call-started


Engagez-vous

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.