WhatsApp API: mesajın çatdırılma statusunu izləmək
Son yeniləmə: 11 oktyabr 2026 · 6 dəq oxunur
Göndərişdən sonra mesajın statusu bir neçə saniyə ərzində dəyişir. Onu sorğu ilə oxumaq və ya webhook ilə avtomatik almaq olar.
Addımlar
-
1
Statuslar
sent: Meta qəbul etdi, telefona yola düşdüdelivered: müştərinin telefonuna çatdıread: müştəri açıb oxudufailed: göndərilə bilmədi, səbəbexternal_errorsahəsindədir
Göndərişdən dərhal sonra gələn
senthələ çatdırıldı demək deyil. -
2
Statusu sorğu ilə oxuyun
curl -s "https://api.clomni.ai/v1/accounts/{account_id}/whatsapp/messages/{message_id}" \ -H "Authorization: Bearer <API_ACARI>"message_idgöndərişin cavabındakıid-dir. Cavabın quruluşu mesaj göndərişinin cavabı ilə eynidir. Bu sorğunu hesabın istənilən istifadəçisinin açarı ilə göndərmək olar. Dövri yoxlamaq (polling) mümkündür, amma webhook daha səmərəlidir. -
3
Webhook qurun
Paneldə Parametrlər › İş sahəsi parametrləri › İnteqrasiyalar səhifəsində Webhook kartında Konfiqurasiya et, sonra Yeni webhook əlavə et. Serverinizin ünvanını yazın, Hadisələr siyahısında Mesaj yeniləndi (
message_updated) seçin və Webhook yarat basın. Addımlar ətraflı «Webhook qurmaq» məqaləsindədir. -
4
Webhook-da nə gəlir
{ "event": "message_updated", "id": 918234, "status": "delivered", "message_type": "outgoing", "whatsapp_message_id": "wamid.HBgMOTk0NTAxMjM0NTY3...", "conversation": { "id": 1042 }, "inbox": { "id": 159, "name": "Şirkət WhatsApp" }, "sender": { "phone_number": "+994 50 123 45 67" } }idgöndərişin cavabındakı mesaj id-sidir, öz bazanızda bu id ilə saxlayın.status:sent,delivered,read,failed. Uğursuz mesajda səbəbcontent_attributes.external_errorsahəsində gəlir.- Clomni bu sorğunu bir dəfə göndərir və təkrar etmir. Serveriniz 5 saniyə ərzində 2xx qaytarmalıdır: sorğunu öz növbənizə yazıb dərhal cavab verin.
-
5
Hər mesaj üçün öz ünvanınıza xəbər (status_callback)
Göndərişə
status_callbackbloku əlavə etsəniz, Clomni həmin mesajın vəziyyətini birbaşa sizin ünvanınıza göndərir. Paneldə heç nə qurmaq lazım deyil.{ "channel_id": 159, "phone_number": "+994501234567", "template": { "name": "otp_code", "language": "az", "parameters": { "1": "4821" } }, "source_reference": "otp-10422-1791700000", "status_callback": { "url": "https://example.com/whatsapp/status", "after_seconds": 8, "on_change": true, "secret": "<GIZLI_ACAR>" } }url(tələb olunur): yalnızhttps://. Daxili şəbəkə ünvanları qəbul olunmur, yönləndirmə izlənmir.after_seconds(1–3600): göndərişdən N saniyə sonra mesajın o andakı vəziyyəti bir dəfə göndərilir.on_change(true/false): status hər dəyişəndə (delivered,read,failed) dərhal ayrıca xəbər gedir. Meta göndərişi qəbul etməsə (məsələn, səhv nömrə),faileddə belə gəlir.after_secondsvəon_change-dən ən azı biri olmalıdır.secret(istəyə bağlı): xəbər bu açarla imzalanır. Bizdə şifrələnmiş saxlanılır, cavablarda göstərilmir.
Serverinizə gələn sorğu:
{ "event": "message_status", "trigger": "scheduled", "message_id": 918234, "source_reference": "otp-10422-1791700000", "phone_number": "+994501234567", "status": "delivered", "delivered": true, "read": false, "sent_at": "2026-10-11T08:00:01Z", "delivered_at": "2026-10-11T08:00:04Z", "read_at": null, "error": null, "after_seconds": 8, "checked_at": "2026-10-11T08:00:09Z" }trigger:scheduled(after_seconds xəbəri) və yastatus_change(on_change xəbəri).delivered: trueiki boz xətt deməkdir: mesaj telefona çatıb, telefonun interneti var idi.- N saniyədən sonra hələ
sentqalıbsa, telefon oflayndır, interneti yoxdur və ya WhatsApp uzun müddət açılmayıb. Çatandaon_changeayrıca xəbər verəcək. readyalnız müştəri oxuma bildirişini söndürməyibsə gəlir. Gəlməməsi "oxumayıb" demək deyil.- Meta statusları adətən 1–5 saniyəyə gəlir.
after_secondsüçün 8–15 saniyə məsləhətdir.
İmza və təkrar cəhd zəng webhook-ları ilə eynidir:
X-ChatX-Delivery,X-ChatX-Timestamp,X-ChatX-Signature(sha256=+ HMAC-SHA256(secret, "<timestamp>.<xam gövdə>")). Serveriniz 5 saniyə ərzində 2xx qaytarmalıdır. Bağlantı olmasa, vaxt bitsə, 429 və ya 5xx gəlsə, 10 saniyə və 1 dəqiqə sonra yenidən cəhd edirik.X-ChatX-Deliveryhər təkrarda eynidir, onunla təkrarları süzün.Toplu göndərişdə də eyni blok işləyir: xəbər hər nömrə üçün ayrıca gedir, gecikmə həmin nömrəyə göndərişdən sayılır.
GET /messages/{message_id}cavabında dadelivered_at,read_atvəstatus_callback(gizli açarsız) var. -
6
Müştərinin cavabını da alın
Mesaj yaradıldı (
message_created) hadisəsini də seçsəniz, müştərinin cavabı və şablon düyməsinə toxunması sizin sistemə də gəlir. Məhz o an 24 saatlıq pəncərə açılır: növbəti bildirişləri pulsuz mətnlə göndərməyə buradan başlayın.