Resept: Clomni söhbətlərini öz panelinizdə göstərmək

Son yeniləmə: 11 noyabr 2026 · 8 dəq oxunur

Bu resept Clomni söhbətlərini şirkətinizin öz daxili panelində (ERP, CRM, sifariş sistemi) göstərmək üçündür. Operatorlarınız müştəri ilə yazışmanı öz sisteminizdən oxuyur, cavab yazır, söhbəti bağlayır və təyin edir.

Addımlar

  1. 1

    Nə alırsınız

    • Öz panelinizdə açıq söhbətlərin siyahısı, saylar, filtr.
    • Söhbətin mesajları, cavab yazmaq, müştərinin görmədiyi daxili qeyd.
    • Söhbəti bağlamaq, yenidən açmaq, operatora və ya komandaya təyin etmək.
    • Yeni mesajın və statusun webhook ilə canlı yenilənməsi.
  2. 2

    Lazım olan scope-lar

    App yaradanda «Öz panelimdə Clomni» hazır dəstini seçin və lazım olmayanı silin:

    • conversations:read (orta): söhbət siyahısı və söhbətin özü;
    • conversations:write (orta): status, prioritet, etiket;
    • conversations:assign (orta): operatora və ya komandaya təyin etmək;
    • messages:read (orta): mesaj mətni və fayllar, message.* webhook-ları;
    • messages:send (yüksək): müştəriyə cavab;
    • notes:write (aşağı): daxili qeyd;
    • contacts:read, contacts:write (orta): kontakt məlumatı;
    • inboxes:read, agents:read, teams:read, labels:read, canned_responses:read (aşağı): filtr və seçim siyahıları.

    Tokenin sahibi workspace-in administratorudur, ona görə API bütün inbox-ları və bütün söhbətləri qaytarır. Operatorlarınıza nəyi göstərəcəyinizi öz panelinizdə özünüz məhdudlaşdırın. API ilə göndərilən cavab söhbətdə tokenin sahibinin adı ilə görünür.

  3. 3

    1. Söhbət siyahısı

    GET /v1/conversations 25-lik səhifələrlə, son fəaliyyətə görə qaytarır. Parametrlər: status (open, resolved, pending, snoozed, all, default open), assignee_type (me, unassigned, assigned, all), inbox_id, team_id, labels[], q, page.

    curl "https://api.clomni.ai/v1/conversations?status=open&assignee_type=all&page=1" \
      -H "Authorization: Bearer clomni_pat_xxx"

    Saylar data.meta-da (mine_count, assigned_count, unassigned_count, all_count), səhifə data.payload-dadır. Söhbətin id-si paneldə görünən nömrədir və bütün söhbət yollarında {conversation_id} bu nömrədir.

  4. 4

    2. Bir söhbətin mesajları

    curl "https://api.clomni.ai/v1/conversations/1042/messages" \
      -H "Authorization: Bearer clomni_pat_xxx"

    Cavab son 20 mesajı köhnədən yeniyə verir. Daha köhnələri üçün ən kiçik id-ni before ilə göndərin: ?before=55120. Boş payload tarixçənin başlanğıcıdır. message_type: 0 müştəridən, 1 operatordan və ya API-dən, 2 sistem hadisəsi, 3 şablon. status: sent, delivered, read, failed.

  5. 5

    3. Cavab və daxili qeyd

    curl -X POST "https://api.clomni.ai/v1/conversations/1042/messages" \
      -H "Authorization: Bearer clomni_pat_xxx" \
      -H "Content-Type: application/json" \
      -d '{"content": "Salam, Leyla xanım. Sifarişiniz bu gün çatdırılacaq.", "content_attributes": {"client_echo_id": "panel-7f3a9c"}}'
    • Kanal mesajı fonda göndərir, nəticə sonra status-da görünür (message.updated webhook-u).
    • content_attributes.client_echo_id-yə öz unikal dəyərinizi yazın: eyni söhbətdə 24 saat ərzində eyni dəyərlə gələn sorğu ikinci mesaj yaratmır. Təkrar cəhddə dəyəri dəyişməyin.
    • Daxili qeyd üçün "private": true göndərin, scope notes:write. Müştəri qeydi görmür.
    • WhatsApp Cloud söhbətində can_reply: false 24 saat pəncərəsinin bağlı olduğunu göstərir: şablon lazımdır, bax Resept: saytınızdan WhatsApp bildirişi və şablon göndərmək.
  6. 6

    4. Status və təyinat

    Bağlamaq və ya yenidən açmaq (conversations:write):

    curl -X POST "https://api.clomni.ai/v1/conversations/1042/toggle_status" \
      -H "Authorization: Bearer clomni_pat_xxx" \
      -H "Content-Type: application/json" \
      -d '{"status": "resolved"}'

    Təyin etmək (conversations:assign): {"assignee_id": 12} operatora, {"team_id": 3} komandaya, {"assignee_id": null} operatoru çıxarır.

    curl -X POST "https://api.clomni.ai/v1/conversations/1042/assignments" \
      -H "Authorization: Bearer clomni_pat_xxx" \
      -H "Content-Type: application/json" \
      -d '{"assignee_id": 12}'

    Operator və komanda siyahısı GET /v1/agents və GET /v1/teams, hazır cavablar GET /v1/canned_responses ilə alınır.

  7. 7

    5. Canlı yeniləmə

    Siyahını hər bir neçə saniyədən bir yeniləmək əvəzinə developer portalında webhook qurun. Bu panel üçün mövzular: message.created, message.updated, conversation.created, conversation.updated, conversation.status_changed, conversation.assigned. Çatdırılma ən az bir dəfə zəmanətlidir, amma serveriniz də dayana bilər: son uğurlu vaxtı saxlayın və bərpa zamanı GET /v1/sync/messages?updated_since=<vaxt> çağırın. Bax: App webhook-ları və hadisələr: qurmaq, mövzular, imzanın yoxlanması.

  8. 8

    Tez-tez səhvlər

    • Siyahı hər bir neçə saniyədən bir yenilənir və limitə dəyir. Webhook işlədin.
    • Bütün söhbətləri köçürmək üçün GET /v1/conversations səhifə-səhifə gəzilir. Bunun üçün GET /v1/sync/conversations var.
    • Cavab sorğusu client_echo_id və ya Idempotency-Key olmadan təkrar edilir və müştəri iki mesaj alır.
    • status: sent «çatdı» sanılır. Mesaj getmədisə, sonra failed olur və səbəb content_attributes.external_error-da yazılır.
    • 422 səhvində yalnız error.code oxunur. Endpoint-lərin öz yoxlama səhvləri hələ köhnə formadadır: {"error": "..."} və ya {"message": "..."}.
    • Cavab göndərmək limiti unudulur: POST /v1/conversations/{conversation_id}/messages token üzrə dəqiqədə 60 sorğudur.

    Bütün söhbət və mesaj endpoint-ləri: Scope-lar və endpoint-lər: söhbətlər və mesajlar.

Sənəd