Zəng webhook-ları: sorğunun sahələri və nümunələr

Son yeniləmə: 9 oktyabr 2026 · 6 dəq oxunur

Hər sorğu POST-dur, gövdəsi JSON-dur. Bütün dörd hadisədə sahələr eynidir, dəyərlər zəngin həmin andakı vəziyyətini göstərir. Clomni heç bir dəyəri təxmin etmir: bilinməyən sahə null olur.

Addımlar

  1. 1

    call_started nümunəsi

    {
      "event": "call_started",
      "delivery_id": "6f1c2b0e-5a7d-5e2b-9c41-8d3f0a6b7e21",
      "id": 512340,
      "provider_call_id": "3EB0C2A1F4D8",
      "account": { "id": 7, "name": "Nümunə MMC" },
      "inbox": { "id": 140, "name": "WhatsApp satış", "channel_type": "Channel::Whatsapp", "provider": "whatsapp_qr" },
      "conversation": { "id": 2381, "status": "open" },
      "message_id": 512340,
      "direction": "outgoing",
      "status": "ringing",
      "contact": { "id": 9921, "name": "Kamran Əliyev", "phone_number": "+994501112233", "identifier": null },
      "agent": { "id": 12, "name": "Nigar Həsənova", "email": "[email protected]" },
      "started_at": "2026-10-09T10:00:00Z",
      "answered_at": null,
      "ended_at": null,
      "duration_seconds": null,
      "duration_known": null,
      "ended_by": null,
      "answered_on": null,
      "recording_url": null,
      "transcript_available": false,
      "transcript": null,
      "summary": null,
      "language": null
    }
  2. 2

    call_answered və call_ended nümunəsi

    call_answered-də status: "in_progress", answered_at və answered_on dolur. Həmin zəngin call_ended sorğusu (qısalıq üçün account, inbox, conversation, contact, agent göstərilməyib, onlar hər sorğuda var):

    {
      "event": "call_ended",
      "delivery_id": "0b9e4d27-3c1a-5f60-8e2d-41a7c5b9f310",
      "id": 512340,
      "direction": "outgoing",
      "status": "completed",
      "started_at": "2026-10-09T10:00:00Z",
      "answered_at": "2026-10-09T10:00:06Z",
      "ended_at": "2026-10-09T10:01:41Z",
      "duration_seconds": 95,
      "duration_known": true,
      "ended_by": "agent",
      "answered_on": "app",
      "recording_url": null,
      "transcript_available": false,
      "transcript": null,
      "summary": null,
      "language": null
    }
  3. 3

    call_recording_ready nümunəsi

    {
      "event": "call_recording_ready",
      "delivery_id": "c47a1e95-8b2f-5d03-a6e4-9f1b2c7d8e40",
      "id": 512340,
      "duration_seconds": 95,
      "recording_url": "https://my.clomni.co/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOn.../call-3EB0C2A1F4D8.wav",
      "transcript_available": true,
      "transcript": [
        { "speaker": "agent", "at": 0.4, "text": "Salam, Clomni mağazası, Nigar eşidir." },
        { "speaker": "contact", "at": 3.1, "text": "Salam. Dünən sifariş vermişdim, nə vaxt çatacaq?" }
      ],
      "summary": {
        "title": "Sifarişin çatdırılma vaxtı",
        "points": ["Müştəri dünənki sifarişinin nə vaxt çatacağını soruşdu.", "Bu gün 18:00-a qədər çatacağı deyildi."],
        "next_step": "Kuryer yola düşəndə müştəriyə SMS göndərmək."
      },
      "language": "az"
    }
  4. 4

    Zəng, kanal və söhbət

    • event: call_started, call_answered, call_ended və ya call_recording_ready.
    • delivery_id: bu zəngin bu hadisəsinin id-si. Təkrar göndərişdə dəyişmir.
    • id: zəngin Clomni-dəki id-si, bir zəngin bütün hadisələrində eynidir. Hazırda zəng balonunun mesaj id-si (message_id) ilə eynidir.
    • provider_call_id: zəngin WhatsApp və ya Twilio-dakı id-si.
    • account: id, name.
    • inbox: id, name, channel_type, provider (whatsapp_qr, whatsapp_cloud yəni WhatsApp Business API, və ya twilio).
    • conversation: id (paneldə görünən söhbət nömrəsi), status.
    • direction: incoming (müştəri zəng edib) və ya outgoing (siz zəng etmisiniz).
  5. 5

    Nəticə, vaxt və müddət

    • status: ringing, in_progress, completed, missed (gələn zəngə cavab verilmədi), no_answer (gedən zəngə cavab verilmədi), rejected, busy, failed.
    • started_at, answered_at, ended_at: zəngin çaldığı, cavab verildiyi və bitdiyi an (ISO 8601, UTC).
    • duration_seconds: danışığın müddəti, saniyə ilə, cavab anından. Yalnız cavab verilmiş zəngin call_ended və call_recording_ready hadisələrində.
    • duration_known: cavab verilmiş zəngin call_ended və call_recording_ready-sində müddət bilinirsə true, bilinmirsə false. Qalan hallarda null.
    • ended_by: zəngi kim bitirdi: agent, contact və ya system (şəbəkə və ya xidmət xətası). Bilinmirsə null.
    • answered_on: cavabın harada verildiyi: app (Clomni paneli və ya tətbiqi) və ya phone (WhatsApp-ın özü, telefonda).
  6. 6

    Kontakt, əməkdaş, yazı və xülasə

    • contact: id, name, phone_number, identifier. Nömrəsini göstərməyən WhatsApp müştərisində phone_number boş ola bilər.
    • agent: id, name, email. Gedən zəngdə zəng edən, gələn zəngdə cavab verən və ya imtina edən əməkdaş. Bilinmirsə null.
    • recording_url: səs yazısının linki. Yazı silinməyənə qədər işləyir, açanda 5 dəqiqəlik müvəqqəti fayl ünvanına yönləndirir. Yazını saxlamaq istəyirsinizsə, faylı yükləyin.
    • transcript_available, transcript: danışığın mətni, sətir-sətir: speaker (agent, contact; iki tərəf bir yazıda olanda mixed), at (yazının əvvəlindən saniyə), text.
    • summary: title, points (2-5 bənd), next_step. Yalnız cavab verilmiş və 10 saniyədən uzun zəngdə.
    • language: mətnin dili, məsələn az. Xülasə hesabın dilində yazılır.

Sənəd