يرسل عميل واجهة API الخاصة بواتساب للأعمال إشعارات حول status
الرسالة بينك وبين المستخدمين. ويتم إرسال هذه الإشعارات عبر الكائن statuses
.
ستتلقى إشعارًا بحالة الرسالة عن كل رسالة يرسلها نشاطك التجاري. في الجدول التالي، انقر على السهم الموجود في العمود الأيمن للحصول على الوصف المقابل لتطبيق واتساب لكل حالة، إن وجد.
الاسم | الوصف |
---|---|
| تشير إلى حذف المستخدم للرسالة التي أرسلها. عند تلقي هذا الإشعار، يجب التأكد من حذف الرسالة من نظامك إذا تم تنزيلها من الخادم. |
| تشير إلى نجاح تسليم الرسالة التي أرسلها نشاطك التجاري إلى جهاز المستخدم. |
| تشير إلى تعذر إرسال الرسالة من جانب نشاطك التجاري. وسيتم تضمين السبب وراء تعذر الإرسال في استجابة الاستدعاء. اطّلع على وثائق رسالة الخطأ للحصول على المساعدة بشأن تصحيح الأخطاء:
|
| تشير إلى قراءة المستخدم لرسالة أرسلها النشاط التجاري. |
| تشير إلى أن حالة الرسالة التي أرسلها نشاطك التجاري "قيد النقل" داخل أنظمتنا. بالنسبة إلى مستخدمي API داخل المواقع: لتلقي إشعارات بشأن الرسائل بالحالة |
| تشير إلى أن الرسالة التي أرسلها نشاطك التجاري تحتوي على عنصر في كتالوج غير متوفر أو غير موجود. |
قد لا يعكس ترتيب هذه الإشعارات في تطبيقك التوقيت الفعلي لحالة الرسالة. اعرض الطابع الزمني لتحديد التوقيت، إذا لزم الأمر.
ليكون الإشعار بالحالة read
، يجب أن تكون الرسالة بالحالة delivered
. وفي بعض السيناريوهات، فعلى سبيل المثال عندما يكون أحد المستخدمين موجودًا في شاشة الدردشة وتصل رسالة، ستظهر الرسالة بالحالتين delivered
وread
في الوقت ذاته تقريبًا. ففي هذا السيناريو أو غيره من السيناريوهات المشابهة، لن يتم إرسال إشعار بالحالة delivered
مرة أخرى كما هو موضح ضمنيًا أنه تم تسليم الرسالة إذا تمت قراءتها. ويرجع سبب هذا السلوك إلى التحسين الداخلي.
منذ 1 فبراير 2022، أصبح الكائن statuses
الموجود في الإشعارات الصادرة يتضمن كائنين متداخلين جديدين: conversation
وpricing
. تختلف مكونات كائن التسعير والمحادثة باختلاف مكان بدء المحادثة. يمكن بدء المحادثات بواسطة المستخدم أو بواسطة النشاط التجاري أو يمكن أن تبدأ من نقطة دخول مجانية. راجع المزيد من المعلومات أدناه:
في الأمثلة التالية، ربما يكون المعرف recipient_id
هو الحقل group_id
بدلًا من ذلك. ويعتمد ذلك على ما إذا كانت الرسالة مرسلة إلى فرد أم مجموعة.
يتم تلقي حدث webhook التالي عندما يرسل النشاط التجاري رسالة كجزء من المحادثة التي بدأها المستخدم (إذا لم يتم إنشاء تلك المحادثة في نقطة إدخال مجانية):
{ "statuses": [{ "id": "ID", "recipient_id": "WHATSAPP_ID", "status": "sent", "timestamp": "TIMESTAMP", "type": "message", "conversation": { "id": "CONVERSATION_ID", "expiration_timestamp": TIMESTAMP, "origin": { "type": "user_initiated" } }, "pricing": { "pricing_model": "CBP", "billable": true, "category": "user_initiated" } }] }
يتم تلقي حدث webhook التالي عندما يرسل النشاط التجاري رسالة كجزء من المحادثة التي بدأها النشاط التجاري:
{ "statuses": [{ "id": "ID", "recipient_id": "WHATSAPP_ID", "status": "sent", "timestamp": "TIMESTAMP", "type": "message", "conversation": { "id": "CONVERSATION_ID", "expiration_timestamp": TIMESTAMP, "origin": { "type": "business_initiated" } }, "pricing": { "pricing_model": "CBP", "billable": true, "category": "business_initiated" } }] }
يتم تلقي حدث webhook التالي عندما يرسل النشاط التجاري رسالة ردًا على المحادثة التي بدأها المستخدم التي تم إنشاؤها من نقاط إدخال مجانية:
{ "statuses": [{ "id": "ID", "recipient_id": "WHATSAPP_ID", "status": "sent", "timestamp": "TIMESTAMP", "type": "message", "conversation": { "id": "CONVERSATION_ID", "expiration_timestamp": TIMESTAMP, "origin": { "type": "referral_conversion", } }, "pricing": { "pricing_model": "CBP", "billable": false, "category": "referral_conversion" } }] }
يتم تلقي حدث webhook التالي عندما يتم تسليم رسالة النشاط التجاري وتكون تلك الرسالة جزءًا من المحادثة التي بدأها المستخدم (إذا لم يتم إنشاء تلك المحادثة في نقطة إدخال مجانية):
{ "statuses": [{ "id": "ID", "recipient_id": "WHATSAPP_ID", "status": "delivered", "timestamp": "TIMESTAMP", "type": "message", "conversation": { "id": "CONVERSATION_ID", "origin": { "type": "user_initiated" } }, "pricing": { "pricing_model": "CBP", "billable": true, "category": "user_initiated" } }] }
يتم تلقي حدث webhook التالي عند تسليم رسالة النشاط التجاري وتكون تلك الرسالة جزءًا من المحادثة التي بدأها النشاط التجاري:
{ "statuses": [{ "id": "ID", "recipient_id": "WHATSAPP_ID", "status": "delivered", "timestamp": "TIMESTAMP", "type": "message", "conversation": { "id": "CONVERSATION_ID", "origin": { "type": "business_initiated" } }, "pricing": { "pricing_model": "CBP", "billable": true, "category": "business_initiated" } }] }
يتم تلقي حدث webhook التالي عند تسليم رسالة النشاط التجاري وتكون تلك الرسالة جزءًا من المحادثة التي بدأها المستخدم التي تم إنشاؤها من نقطة إدخال مجانية:
{ "statuses": [{ "id": "ID", "recipient_id": "WHATSAPP_ID", "status": "delivered", "timestamp": "TIMESTAMP", "type": "message", "conversation": { "id": "CONVERSATION_ID", "origin": { "type": "referral_conversion", } }, "pricing": { "pricing_model": "CBP", "billable": false, "category": "referral_conversion" } }] }
الاستدعاء القياسي لرسالة تمت قراءتها:
{ "statuses":[{ "id": "ID", "recipient_id": "WHATSAPP_ID", "status": "read", "timestamp": "TIMESTAMP", "type": "message" }] }
{ "statuses": [{ "errors": [{ "code": 470, "title": "Failed to send message because you are outside the support window for freeform messages to this user. Please use a valid HSM notification or reconsider." }], "id": "ID", "recipient_id": "WHATSAPP_ID", "status": "failed", "timestamp": "TIMESTAMP" }] }
{ "statuses": [{ "errors": [{ "code": 480, "title": "Failed to send message since we detect an identity change of the contact" }], "id": "ID", "recipient_id": "WHATSAPP_ID", "status": "failed", "timestamp": "TIMESTAMP" }] }
لا يتم تضمين قسم المحادثة الفرعي في الاستدعاء، إذا فشل إرسال الرسالة. ولا يتم تضمين تنشيط الفوترة أو المحادثة في هذه الحالة.
الاستدعاء القياسي لرسالة تم حذفها:
{ "statuses": [{ "id": "ID", "recipient_id": "WHATSAPP_ID", "status": "deleted", "timestamp": "TIMESTAMP", "type": "message" }] }
لا يتم تضمين قسم المحادثة الفرعي في الاستدعاء، إذا تم حذف الرسالة. ولا يتم تضمين تنشيط الفوترة أو المحادثة في هذه الحالة.
لمعرفة هذه المعلومات، راجع نظرة عامة، الرسائل.
Yes, there is a specific scenario where you can get pricing information on your webhook alert for read messages. For each sent message, there can be 3 scenarios:
Scenario | When it Happens |
---|---|
You get a webhook alert when the message is delivered (including pricing information) and another webhook alert when the message is read (not including pricing information). | This is the most common scenario. |
You get a webhook alert when the message is delivered (including pricing information). You do not get a webhook alert that the message has been read. | Common when a customer has turned off the feature that lets people know they have read a message. |
You get a webhook alert when the message is read (including pricing information). You do not get a webhook alert that the message has been delivered. | Only triggered when the user is already reading the thread with the business when the message comes in. |