WhatsApp API ilə mesaj göndərmək: OTP kodu, şablon və mətn

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

Şablon da, adi mətn də bir endpointdən gedir: POST /v1/accounts/{account_id}/whatsapp/messages. Mesaj dərhal qəbul olunub növbəyə düşür, cavab 201 ilə gəlir.

Addımlar

  1. 1

    Şablonu tapın

    GET /v1/accounts/{account_id}/whatsapp/templates yalnız APPROVED şablonları qaytarır. channel_id tələb olunur, name istəyə bağlıdır.

    Hər şablonda name, language, category, parameter_format, components və example_parameters var. example_parameters şablonun gözlədiyi parametrlərin hazır skeletidir: onu kopyalayıb dəyərləri öz məlumatınızla əvəz edin. Dəyişəni əskik göndərmək Meta tərəfindən rədd edilir.

    synced_at şablonların Meta-dan sonuncu dəfə nə vaxt gətirildiyini göstərir. Yeni şablonu API görsün deyə paneldə Şablonları sinxronlaşdır basın.

  2. 2

    Sorğunun sahələri

    • channel_id (tələb olunur): WhatsApp Cloud API gələn qutusunun id-si
    • phone_number (tələb olunur): alıcının nömrəsi, beynəlxalq formatda
    • text: sərbəst mətn, yalnız pəncərə açıq olanda gedir
    • template: şablonla göndəriş, text yoxdursa tələb olunur. template.name (şablonun dəqiq adı) və template.language (az, en, tr, ru, en_US və s.) tələb olunur, template.parameters şablonun dəyişənləridir
    • fallback_template: text ilə birlikdə, pəncərə bağlı olanda işlədilir
    • conversation_status: resolved (standart), open və ya pending
    • contact.name, contact.email, contact.identifier (sizin sistemdəki müştəri id-si): istəyə bağlı
    • source_reference: idempotentlik açarı
    • status_callback: mesajın vəziyyətini öz ünvanınıza almaq üçün (url, after_seconds, on_change, secret), istəyə bağlı. Ətraflı «Mesajın çatdırılma statusunu izləmək» məqaləsindədir
  3. 3

    Doğrulama kodu (OTP) göndərin

    AUTHENTICATION kateqoriyalı şablonla göndərin. Sorğunun gövdəsi:

    {
      "channel_id": 159,
      "phone_number": "+994 50 123 45 67",
      "template": {
        "name": "verification_code",
        "language": "az",
        "parameters": { "body": { "1": "483920" } }
      },
      "contact": { "name": "Kənan Rzayev", "identifier": "crm-10422" },
      "source_reference": "otp-10422-1754582400"
    }

    Kodun etibarlılıq müddətini qısa saxlayın, 5 dəqiqə tövsiyə olunur. Bir OTP mesajı 0.036 AZN-dir.

  4. 4

    Bildiriş göndərin

    Mətni fallback_template ilə birlikdə göndərin:

    {
      "channel_id": 159,
      "phone_number": "+994 50 123 45 67",
      "text": "AZ-10422 nömrəli bağlamanız kuryerə verildi.",
      "fallback_template": {
        "name": "kargo_status",
        "language": "az",
        "parameters": { "body": { "1": "AZ-10422", "2": "kuryerdə" } }
      }
    }

    Pəncərə açıqdırsa mətn pulsuz gedir (sent_as: "session"), bağlıdırsa şablon (sent_as: "template").

  5. 5

    Şablon parametrləri

    Parametrlər şablonun hissələrinə görə qruplaşır: header, body, footer, buttons.

    parameter_format POSITIONAL-dırsa body-nin açarları {{1}}, {{2}} sırasına uyğun rəqəmlərdir, NAMED-dirsə Meta-da verdiyiniz adlardır:

    "body": { "1": "Kənan", "2": "AZ-10422" }
    "body": { "customer_name": "Kənan", "order_id": "AZ-10422" }

    Yalnız body varsa qısa forma da qəbul olunur: "parameters": { "1": "483920" }.

    • Başlıq şəkil, video və ya sənəddirsə media_url (açıq, https ünvan) və media_type göndərin: image (JPG, PNG), video (MP4), document (PDF və s., fayl adı üçün media_name).
    • Düymələr: url (parameter linkin sonuna əlavə olunur) və copy_code (kod köçürmə, ən çoxu 15 simvol). Statik linkli və sürətli cavab düymələri parametr istəmir.
    • Məbləğ üçün currency tipi (code, amount_1000, fallback_value), tarix üçün date_time (fallback_value). amount_1000 məbləğin 1000-ə vurulmuş tam ədədidir: 149.00 AZN üçün 149000.
  6. 6

    Nömrəni düzgün yazın

    Nömrəni ölkə kodu ilə yazın. Bunların hamısı eyni nəticəni verir, boşluq, defis, mötərizə və «+» özü təmizlənir:

    994501234567
    +994 50 123 45 67
    (+994) 50-123-45-67

    0501234567 səhvdir: ölkə kodu yoxdur, mesaj səhv nömrəyə gedər. Rəqəmlərin sayı 8-dən 15-ə qədər olmalıdır (E.164), yoxsa 422 qayıdır.

  7. 7

    Cavabı oxuyun

    Cavab 201 Created ilə gəlir: id (mesajın id-si), sent_as, status, external_error, whatsapp_message_id, conversation_id, conversation_status, contact_id, channel_id, content, template_name, source_reference, created_at, delivered_at, read_at, status_callback.

    status: "sent" çatdırıldı demək deyil, Meta mesajı qəbul edib. delivered və read bir neçə saniyə sonra gəlir, ona görə göndərişdən dərhal sonra müştəriyə «çatdırıldı» yazmayın.

  8. 8

    Təkrar göndərişin qarşısını alın

    Şəbəkə kəsiləndə və ya növbə iki dəfə işə düşəndə eyni sorğu təkrarlana bilər. source_reference versəniz, 24 saat ərzində eyni açarla gələn təkrar sorğu yeni mesaj yaratmır, ilk mesajı qaytarır: müştəriyə ikinci kod getmir, Meta-ya iki dəfə ödəniş olmur. Açarı öz sisteminizdə unikal seçin, məsələn otp-{istifadəçi}-{vaxt}.

  9. 9

    Kod nümunələri

    Sənədin 12-ci bölməsində dörd nümunə var:

    • Node.js: kargo bildirişi, pəncərə bağlı olanda şablona keçid
    • PHP: doğrulama kodu
    • Python: pəncərəni yoxlayıb göndərmək
    • C# (.NET): doğrulama kodu

    Hamısında açar kodun içində deyil, mühit dəyişənindədir (CLOMNI_TOKEN).

Sənəd