نظرة عامة
يجب أن تستخدم كل رسالة WhatsApp تبدأها الشركة قالباً معتمداً من Meta. تضيف واجهة الإرسال v2 أزرار URL ديناميكية ووسائط ترويسة لكل مستلم وأزرار COPY_CODE وقوالب AUTHENTICATION مقارنة بـ v1. تذهب جميع الإرسالات إلى POST /api/v2/whatsapp/templates/{TEMPLATE_ID}/send (بدون شرطة مائلة نهائية).
متغيرات النص
تستخدم القوالب عناصر نائبة مرقمة {{1}} {{2}} {{3}} في النص. body_params[0] يملأ {{1}} وbody_params[1] يملأ {{2}} وهكذا.
curl --request POST \
'https://app.buzzbip.com/api/v2/whatsapp/templates/1289/send' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_JWT' \
--data '{
"to": "21696816277",
"country_code": "TN",
"body_params": ["Sam", "ORD-2026-00041"]
}'- في Buzzbip، أنشئ قالباً بنص: "Hello {{1}}, your order {{2}} is confirmed."
- أرسل للمراجعة وانتظر حالة APPROVED.
- أرسل مع body_params يطابق عدد العناصر النائبة بالضبط.
ملاحظة: يجب أن يطابق عدد body_params عدد العناصر النائبة {{N}}. أي اختلاف يُرجع HTTP 400.
زر URL ديناميكي
أرسل URL فريداً لكل مستلم في زر دعوة لإجراء. يُثبت URL القالب عند الموافقة باستثناء لاحقة {{1}}. buttons[].value يستبدل تلك اللاحقة لكل مستلم. 💡 نصيحة: استخدم slug أو رمزاً قصيراً فريداً — معرف الطلب أو hash أو رمز تتبع.
curl --request POST \
'https://app.buzzbip.com/api/v2/whatsapp/templates/1296/send' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_JWT' \
--data '{
"to": "21696816277",
"country_code": "TN",
"body_params": ["Sam"],
"buttons": [
{ "index": 0, "sub_type": "url", "value": "ord-2026-00041" }
]
}'- أنشئ قالباً بزر URL: https://shop.example.com/track/{{1}}
- أرسل للمراجعة وانتظر APPROVED.
- أرسل مع buttons، index 0، sub_type "url"، value هو اللاحقة الفريدة.
ملاحظة: تسمح Meta بعنصر نائب {{1}} واحد فقط في نهاية URL. لا يمكنك استخدام {{1}}/path/{{2}}.
PDF أو صورة أو فيديو لكل مستلم
تدفق بخطوتين لإرسال ملف مختلف لكل عميل. لعدة PDF لمستلم واحد: A — دمج PDF على الخادم → رفع واحد → إرسال واحد؛ B — إرسالات متعددة: كرر الرفع+الإرسال لكل ملف؛ C — المستند الرئيسي كترويسة + ملفات إضافية كأزرار URL موقعة. ⚠️ ملاحظة: يسمح WhatsApp بمرفق ترويسة واحد فقط لكل إرسال.
curl --request POST \
'https://app.buzzbip.com/api/v2/whatsapp/media' \
--header 'Authorization: Bearer YOUR_JWT' \
--form 'file=@/path/to/invoice-sam-april.pdf'- ارفع الملف: POST /api/v2/whatsapp/media (multipart، حقل: file) → الاستجابة تحتوي media_id
- أرسل القالب مع header_media_id يساوي ذلك media_id. لنوع DOCUMENT، اضبط أيضاً document_filename.
- كرر الخطوتين 1–2 لكل مستلم بملفه الخاص.
زر COPY_CODE وOTP
نمطان فرعيان. D1: رمز ترويجي ينسخه العميل — أنشئ قالباً بزر COPY_CODE، أرسل مع buttons [{ index: 0, sub_type: "copy_code", value: "SAVE25" }], رمز مختلف لكل عميل. D2: OTP لقوالب AUTHENTICATION — أرسل بـ otp_code فقط؛ تُدخل الواجهة الرمز في النص وزر Copy Code.
curl --request POST \
'https://app.buzzbip.com/api/v2/whatsapp/templates/1299/send' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_JWT' \
--data '{
"to": "21696816277",
"country_code": "TN",
"body_params": ["Sam"],
"buttons": [{ "index": 0, "sub_type": "copy_code", "value": "SAVE25" }]
}'ملاحظة: لا يمكن دمج otp_code مع body_params أو buttons.
دمج body params والوسائط والأزرار
يمكن دمج جميع الحقول الاختيارية في إرسال واحد عندما يحتوي القالب على المكونات المطابقة.
curl --request POST \
'https://app.buzzbip.com/api/v2/whatsapp/templates/1302/send' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_JWT' \
--data '{
"to": "21696816277",
"country_code": "TN",
"body_params": ["Sam", "2026-04", "99.00 TND"],
"header_media_id": 1542,
"document_filename": "invoice-sam-april-2026.pdf",
"buttons": [
{ "index": 0, "sub_type": "url", "value": "r/sam-2026-04" }
]
}'ما التالي؟
ذات صلة: api/v2/whatsapp-templates/send-template api/v2/whatsapp-media guides/whatsapp-common-gotchas
