تم تحديث هذا المستند.
لم تكتمل الترجمة إلى اللغة ‏العربية‏ حتى الآن.
تاريخ تحديث المصدر باللغة الإنجليزية: ‏أمس

إرسال الرسائل

يمكنك استخدام API لإرسال الأنواع التالية إلى الرسائل:

يمكن تحديد كل هذه الأنواع كرد، باستثناء رسائل التفاعلات.

بنية الطلب

استخدم نقطة النهاية POST /<WHATSAPP_BUSINESS_PHONE_NUMBER_ID/messages لإرسال الرسائل لمستخدمي واتساب:

POST /<WHATSAPP_BUSINESS_PHONE_NUMBER>/messages

نص المنشور

تستخدم كل طلبات إرسال الرسائل تنسيق الكائن الأساسي العام التالي.

{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "<TO>",
  "type": "<TYPE>",
  
  /* TEXT MESSAGES ONLY */
  "text": {<TEXT>}

  /* REACTION MESSAGES ONLY */
  "reaction": {<REACTION>}

  /* MEDIA MESSAGES ONLY. FOR EXAMPLE, FOR IMAGE MEDIA: */
  "image": {<IMAGE>}

  /* LOCATION MESSAGES ONLY */
  "location": {<LOCATION>}

  /* CONTACTS MESSAGES ONLY */
  "contacts": {<CONTACTS>}

  /* INTERACTIVE MESSAGES ONLY */
  "interactive": {<INTERACTIVE>}

  /* TEMPLATE MESSAGES ONLY */
  "template": {<TEMPLATE>}

}

معلمات نص المنشور

العنصر النائبالوصفعينة من القيمة

<TO>

String (سلسلة)

معرف واتساب أو رقم هاتف العميل المطلوب إرسال الرسالة إليه. راجع تنسيقات أرقام الهواتف

+16315551234

<TYPE>

String (سلسلة)

يشير إلى نوع الرسالة.

text

<TEXT>

Object (كائن)

محتويات الرسائل النصية.

راجع الرسائل النصية.

<REACTION>

Object (كائن)

محتويات رسائل التفاعل.

راجع رسائل التفاعل

<IMAGE>

Object (كائن)

محتويات رسائل الوسائط. يجب مطابقة اسم الخاصية مع نوع رسالة الوسائط التي ترسلها (image لرسالة صورة وvideo لرسالة فيديو، إلخ.).

راجع رسائل الوسائط.

<LOCATION>

Object (كائن)

محتويات رسائل الموقع.

راجع رسائل الموقع

<CONTACTS>

Object (كائن)

رسائل جهات الاتصال.

راجع رسائل جهات الاتصال.

<INTERACTIVE>

Object (كائن)

محتويات الرسالة التفاعلية.

راجع الرسائل التفاعلية.

تصف الأمثلة في هذا المستند متطلبات حمولة بيانات نص المنشور لكل نوع رسالة.

بنية الاستجابة

عند نجاح العملية، ستستجيب API بما يلي:

{
  "messaging_product": "whatsapp",
  "contacts": [
    {
      "input": "<WHATSAPP_USER_PHONE_NUMBER>",
      "wa_id": "<WHATSAPP_USER_ID>"
    }
  ],
  "messages": [
    {
      "id": "<WHATSAPP_MESSAGE_ID>"
    }
  ]
}

معلمات الاستجابة

PlaceholderDescriptionSample Value

<WHATSAPP_USER_PHONE_NUMBER>

String

WhatsApp user's WhatsApp phone number. May not match wa_id value.

+16505551234

<WHATSAPP_USER_ID>

String

WhatsApp user's WhatsApp ID. May not match input value.

16505551234

<WHATSAPP_MESSAGE_ID>

String

WhatsApp Message ID.


This ID appears in associated messages webhooks, such as sent, read, and delivered webhooks.

wamid.HBgLMTY0NjcwNDM1OTUVAgARGBI4MjZGRDA0OUE2OTQ3RkEyMzcA

Phone Number Formats

Plus signs (+), hyphens (-), parenthesis ((,)), and spaces are supported in send message requests.

We highly recommend that you include both the plus sign and country calling code when sending a message to a customer. If the plus sign is omitted, your business phone number's country calling code is prepended to the customer's phone number. This can result in undelivered or misdelivered messages.

For example, if your business is in India (country calling code 91) and you send a message to the following customer phone number in various formats:

Number In Send Message RequestNumber Message Delivered ToOutcome

+16315551234

+16315551234

Correct number

+1 (631) 555-1234

+16315551234

Correct number

(631) 555-1234

+916315551234

Potentially wrong number

1 (631) 555-1234

+9116315551234

Potentially wrong number

الرسائل النصية

الرسائل النصية هي رسائل تحتوي على نص ومعاينة اختيارية للرابط فقط.

رسائل التفاعلات

رسائل التفاعلات هي تفاعلات بالرموز التعبيرية التي يمكنك تطبيقها على رسالة سابقة تلقيتها من مستخدم واتساب.

رسائل الوسائط

يمكنك إرسال رسائل صوتية ورسائل مستندات ورسائل صور ورسائل الملصقات والفيديو لمستخدمي واتساب.

الرسائل الصوتية

تعرض الرسائل الصوتية أيقونة مقطع صوتي ورابط للملف الصوتي. عندما يضغط مستخدم واتساب على الأيقونة، يتم تحميل عميل واتساب ويعمل على تشغيل الملف الصوتي.

رسائل المستندات

رسائل المستندات هي رسائل تعرض أيقونة مستند، ترتبط بمستند ما، والتي يمكن لمستخدم واتساب الضغط عليها للتنزيل.

رسائل الصور

على سبيل المثال، فيما يلي رسالة صورة تتضمن شرح توضيحي اختياري:

رسائل الملصقات

تعرض رسائل الملصقات صور ملصقات متحركة أو ثابتة في رسالة واتساب.

رسائل الفيديو

تعرض رسائل الفيديو معاينة صورة مصغرة لصورة الفيديو مع شرح توضيحي اختياري. عندما يضغط مستخدم واتساب على المعاينة، يتم تحميل الفيديو وعرضه على المستخدم.

أصول الوسائط

يجب تحميل أصول الوسائط في رقم هاتف النشاط التجاري الذي سيرسل الرسالة أو يجب استضافة الأصل على خادم عام وتضمين عنوان URL في طلب إرسال الرسالة.

لتقليل احتمالية وقوع الأخطاء وتجنب الطلبات غير الضرورية لخادمك العام، نوصي بتحميل أصول الوسائط واستخدام المعرفات الخاصة بها عند إرسال الرسائل.

تخزين وسائط HTTP مؤقتًا

تدعم API السحابة في واتساب تخزين وسائط HTTP مؤقتًا. إذا كنت تستخدم (link) لأصل وسائط موجود على الخادم (على عكس (id) الذي يُستخدم للأصل الذي قمت بتحميله على الخوادم)، فيمكنك إرسال تعليمات بتخزين الأصل مؤقتًا لإعادة استخدامه مع الرسائل المستقبلية عن طريق تضمين العناوين أدناه في استجابة الخادم عندما نطلب الأصل. إذا لم يتم تضمين أي من هذه العناوين، فلن يتم تخزين الأصل مؤقتًا.

Cache-Control: <CACHE_CONTROL>
Last-Modified: <LAST_MODIFIED>
ETag: <ETAG>

Cache-Control

يخبرنا العنوان Cache-Control بطريقة معالجة تخزين الأصل مؤقتًا. ندعم التوجيهات التالية:

  • max-age=n: يشير إلى عدد الثواني المستغرقة (n) لتخزين الأصل مؤقتًا. سنعيد استخدام الأصل المخزن مؤقتًا في الرسائل اللاحقة حتى يتم تجاوز هذا الوقت، وبعد ذلك سنطلب الأصل مجددًا، إذا لزم الأمر. مثال: Cache-Control: max-age=604800.
  • no-cache: يشير إلى إمكانية تخزين الأصل مؤقتًا لكن يجب تحديثه إذا كانت قيمة العنوان Last-Modified مختلفة عن الاستجابة السابقة. يتطلب العنوان Last-Modified. مثال: Cache-Control: no-cache.
  • no-store: يشير إلى تعذر تخزين الأصل مؤقتًا. مثال: Cache-Control: no-store.
  • private: يشير إلى أنه تم إضفاء طابع شخصي على الأصل للمستلم ويجب ألا يتم تخزينه مؤقتًا.

Last-Modified

يشير إلى تاريخ آخر تعديل للأصل. يتم استخدامه مع Cache-Control: no-cache. إذا كانت القيمة Last-Modified مختلفة عن الاستجابة السابقة وتم تضمين Cache-Control: no-cache في الاستجابة، فسيتم تحديث الإصدار المخزن مؤقتًا للأصل واستبداله بالأصل الموجود في الاستجابة. مثال: Date: Tue, 22 Feb 2022 22:22:22 GMT.

ETag

عنوان ETag هو سلسلة فريدة تحدد الإصدار المعين لأصل. مثال: ETag: "33a64df5". يتم تجاهل هذا العنوان ما لم يتم تضمين كل من Cache-Control وLast-Modified في الاستجابة. في هذه الحالة، سيتم تخزين الأصل مؤقتًا وفقًا للمنطق الداخلي الخاص (والذي لا نكشف عنه).

عينة من الاستجابة التي تتضمن عناوين

HTTP/1.1 200 OK
Content-Type: image/png
Content-Length: 1024
Date: Tue, 22 Feb 2022 22:22:22 GMT
ETag: "33a64df5"
Cache-Control: max-age=604800

<IMAGE_PAYLOAD>

رسائل الموقع

تسمح لك رسائل الموقع بإرسال إحداثيات خط الطول وخط العرض الخاصة بالموقع إلى مستخدم واتساب.

رسائل جهات الاتصال

لإرسال رسائل جهات اتصال، قم بتنفيذ استدعاء POST إلى /PHONE_NUMBER_ID/messages وإرفاق كائن message بالنوع type=contact. بعد ذلك، أضف كائن contacts.

عينة من الطلب:

curl -X  POST \
 'https://graph.facebook.com/v19.0/FROM_PHONE_NUMBER_ID/messages' \
 -H 'Authorization: ACCESS_TOKEN' \
 -H 'Content-Type: application/json' \
 -d '{
  "messaging_product": "whatsapp",
  "to": "PHONE_NUMBER",
  "type": "contacts",
  "contacts": [{
      "addresses": [{
          "street": "STREET",
          "city": "CITY",
          "state": "STATE",
          "zip": "ZIP",
          "country": "COUNTRY",
          "country_code": "COUNTRY_CODE",
          "type": "HOME"
        },
        {
          "street": "STREET",
          "city": "CITY",
          "state": "STATE",
          "zip": "ZIP",
          "country": "COUNTRY",
          "country_code": "COUNTRY_CODE",
          "type": "WORK"
        }],
      "birthday": "YEAR_MONTH_DAY",
      "emails": [{
          "email": "EMAIL",
          "type": "WORK"
        },
        {
          "email": "EMAIL",
          "type": "HOME"
        }],
      "name": {
        "formatted_name": "NAME",
        "first_name": "FIRST_NAME",
        "last_name": "LAST_NAME",
        "middle_name": "MIDDLE_NAME",
        "suffix": "SUFFIX",
        "prefix": "PREFIX"
      },
      "org": {
        "company": "COMPANY",
        "department": "DEPARTMENT",
        "title": "TITLE"
      },
      "phones": [{
          "phone": "PHONE_NUMBER",
          "type": "HOME"
        },
        {
          "phone": "PHONE_NUMBER",
          "type": "WORK",
          "wa_id": "PHONE_OR_WA_ID"
        }],
      "urls": [{
          "url": "URL",
          "type": "WORK"
        },
        {
          "url": "URL",
          "type": "HOME"
        }]
    }]
}'

تتضمن الاستجابة الناجحة كائنًا يحتوي على معرف مسبوق بـ wamid. استخدم المعرف المُدرج بعد البادئة wamid لتتبع حالة رسالتك.

{
  "messaging_product": "whatsapp",
  "contacts": [{
      "input": "PHONE_NUMBER",
      "wa_id": "WHATSAPP_ID",
    }]
  "messages": [{
      "id": "wamid.ID",
    }]
}

الرسائل التفاعلية

تتضمن الرسائل التفاعلية رسائل القوائم وأزرار الرد وأزرار عنوان URL للدعوة لاتخاذ إجراء ورسائل التدفقات. لإرسال رسائل تفاعلية، قم بتنفيذ استدعاء POST إلى /PHONE_NUMBER_ID/messages وإرفاق كائن رسالة بالنوع type=interactive. بعد ذلك، أضف كائن interactive.

رسائل القائمة التفاعلية

تسمح لك رسائل القائمة التفاعلية بعرض قائمة لمستخدمي واتساب تتضمن خيارات متعددة يمكن الاختيار منها.

رسائل طلب الموقع التفاعلية

تعرض رسائل طلب الموقع نصًا وزر إرسال الموقع. عندما يضغط مستخدم واتساب على الزر، تظهر شاشة مشاركة الموقع والتي يمكن للمستخدم استخدامها لمشاركة موقعه.

رسائل أزرار الرد التفاعلية

تسمح لك رسائل أزرار الرد التفاعلية بإرسال ما يصل إلى ثلاثة ردود محددة مسبقًا للمستخدمين للاختيار منها.

أزرار عنوان URL للدعوة لاتخاذ إجراء التفاعلية

قد يشعر العملاء بالتردد تجاه الضغط على عناوين URL الأولية التي تحتوي على سلاسل طويلة أو غامضة في الرسائل النصية. في هذه الحالات، يمكنك إرسال رسالة تفاعلية تتضمن نصًا وزر عنوان URL للدعوة لاتخاذ إجراء.

تسمح لك أزرار عنوان URL للدعوة لاتخاذ إجراء بتعيين أي عنوان URL على زر، حتى لا تضطر إلى تضمين عنوان URL الأولي في نص الرسالة التفاعلية.

بنية الطلب

POST /<BUSINESS_PHONE_NUMBER_ID>/messages

نص المنشور

{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "<CUSTOMER_PHONE_NUMBER>",
  "type": "interactive",
  "interactive": {
    "type": "cta_url",

    /* Header optional */
    "header": {
      "type": "text",
      "text": "<HEADER_TEXT>"
    },

    /* Body optional */
    "body": {
      "text": "<BODY_TEXT>"
    },

    /* Footer optional */
    "footer": {
      "text": "<FOOTER_TEXT>"
    },
    "action": {
      "name": "cta_url",
      "parameters": {
        "display_text": "<BUTTON_TEXT>",
        "url": "<BUTTON_URL>"
      }
    }
  }
}

خصائص النص


العنصر النائبالوصفعينة من القيمة

<CUSTOMER_PHONE_NUMBER>

String (سلسلة)

مطلوب.


معرف واتساب أو رقم هاتف العميل الذي سيتم إرسال الرسالة إليه. راجع تنسيقات أرقام الهواتف.

+15558543153

<HEADER_TEXT>

String (سلسلة)

اختياري.


نص العنوان.

Available Dates

<BODY_TEXT>

String (سلسلة)

مطلوب.


نص الرسالة.

Tap the button below to see available dates.

<FOOTER_TEXT>

String (سلسلة)

اختياري.


نص تذييل الرسالة.

Dates subject to change.

<BUTTON_TEXT>

String (سلسلة)

مطلوب.


نص الأزرار.

See Dates

<BUTTON_URL>

String (سلسلة)

مطلوب.


عنوان URL المطلوب تحميله في متصفح الويب الافتراضي للجهاز عندما يضغط عليه مستخدم واتساب.

https://www.luckyshrub.com?clickID=kqDGWd24Q5TRwoEQTICY7W1JKoXvaZOXWAS7h1P76s0R7Paec4

مثال على الطلب

curl 'https://graph.facebook.com/v19.0/106540352242922/messages' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer EAAJB...' \
-d '{
    "messaging_product": "whatsapp",
    "recipient_type": "individual",
    "to": "+16505555555",
    "type": "interactive",
    "interactive": {
        "type": "cta_url",
        "header": {
            "text": "Available Dates"
        },
        "body": {
            "text": "Tap the button below to see available dates."
        },
        "footer": {
            "text": "Dates subject to change."
        },
        "action": {
            "name": "cta_url",
            "parameters": {
                "display_text": "See Dates",
                "url": "https://www.luckyshrub.com?clickID=kqDGWd24Q5TRwoEQTICY7W1JKoXvaZOXWAS7h1P76s0R7Paec4"
            }
        }
    }
}'

مثال على الاستجابة

{
  "messaging_product": "whatsapp",
  "contacts": [
    {
      "input": "+16505555555",
      "wa_id": "+16505555555"
    }
  ],
  "messages": [
    {
      "id": "wamid.HBgLMTY1MDUwNzY1MjAVAgARGBI5QTNDQTVCM0Q0Q0Q2RTY3RTcA"
    }
  ]
}

رسائل التدفقات

بعد إنشاء دفق واتساب، يمكنك إرساله. لإرسال رسالة تتضمن دفقًا، قدمنا نوعًا جديدًا من الكائن التفاعلي يسمى flow. هذه هي الخصائص التالية للكائن التفاعلي الخاص بالتدفقات:

الخاصية النوع الوصف

interactive.type

String (سلسلة)

يجب أن تكون القيمة flow

interactive.action.name

String (سلسلة)

يجب أن تكون القيمة flow

interactive.action.parameters.mode

String (سلسلة)

يمكن أن يكون الدفق إما في وضع draft أو published. علمًا بأن published هي القيمة الافتراضية لهذا الحقل.

interactive.action.parameters.flow_message_version

String (سلسلة)

يجب أن تكون القيمة 3.

interactive.action.parameters.flow_token

String (سلسلة)

رمز الدفق الذي يتم إنشاؤه بواسطة النشاط التجاري ليكون بمثابة معرف.

interactive.action.parameters.flow_id

String (سلسلة)

المعرف الفريد للدفق المقدم من واتساب.

interactive.action.parameters.flow_cta

String (سلسلة)

النص الموجود على زر الدعوة لاتخاذ إجراء. على سبيل المثال: "التسجيل"

الحد الأقصى للأحرف - 20 حرفًا (بدون رمز تعبيري).

interactive.action.parameters.flow_action

String (سلسلة)

navigate أو data_exchange. القيمة الافتراضية هي navigate

interactive.action.parameters.flow_action_payload

String (سلسلة)

مطلوب إذا كان flow_action بالقيمة navigate. ويجب حذفه بخلاف ذلك.

interactive.action.parameters.flow_action_payload.screen

String (سلسلة)

id الخاص بالشاشة الأولى.

interactive.action.parameters.flow_action_payload.data

String (سلسلة)

اختياري. بيانات الإدخال للشاشة الأولى للدفق. يجب أن يكون كائنًا غير فارغ.

مثال على الطلب

curl -X  POST \
 'https://graph.facebook.com/v19.0/FROM_PHONE_NUMBER_ID/messages' \
 -H 'Authorization: Bearer ACCESS_TOKEN' \
 -H 'Content-Type: application/json' \
 -d '{
  "recipient_type": "individual",
  "messaging_product": "whatsapp",
  "to": "PHONE_NUMBER",
  "type": "interactive",
  "interactive": {
    "type": "flow",
    "header": {
      "type": "text",
      "text": "Flow message header"
    },
    "body": {
      "text": "Flow message body"
    },
    "footer": {
      "text": "Flow message footer"
    },
    "action": {
      "name": "flow",
      "parameters": {
        "flow_message_version": "3",
        "flow_token": "AQAAAAACS5FpgQ_cAAAAAD0QI3s.",
        "flow_id": "1",
        "flow_cta": "Book!",
        "flow_action": "navigate",
        "flow_action_payload": {
          "screen": "<SCREEN_NAME>",
          "data": { 
            "product_name": "name",
            "product_description": "description",
            "product_price": 100
          }
        }
      }
    }
  }
}'

مثال على الاستجابة

{
  "messaging_product": "whatsapp",
  "contacts": [
    {
      "Input": "PHONE_NUMBER",
      "wa_id": "WHATSAPP_ID"
    }
  ],
  "messages": [
    {
      "id": "wamid.ID"
    }
  ]
}

الردود

يمكنك إرسال أي نوع رسالة كرد على رسالة سابقة في المحادثة من خلال تضمين معرف الرسالة السابقة في الكائن context. سيتلقى المستلم الرسالة الجديدة إلى جانب فقاعة مرتبطة بالسياق تعرض محتوى الرسالة السابقة.

لن تظهر الفقاعة المرتبطة بالسياق لدى المستلمين في حالة:

  • الرد برسالة قالب ("type":"template")
  • الرد بصورة أو مقطع فيديو أو خدمة الضغط والتحدث أو مقطع صوتي، ويكون المستلم على نظام KaiOS

هذه هي الأخطاء المعروفة التي نتعامل معها.

عينة من الطلب:

curl -X  POST \
 'https://graph.facebook.com/v19.0/FROM_PHONE_NUMBER_ID/messages' \
 -H 'Authorization: ACCESS_TOKEN' \
 -d '{
   "messaging_product": "whatsapp",
   "context": {
     "message_id": "MESSAGE_ID"
   },
   "to": "<phone number> or <wa_id>",
   "type": "text",
   "text": {
     "preview_url": False,
     "body": "your-text-message-content"
   }
 }'

تتضمن الاستجابة الناجحة كائنًا يحتوي على معرف مسبوق بـ wamid. استخدم المعرف المُدرج بعد البادئة wamid لتتبع حالة رسالتك.

ملاحظة: إذا مر على الرسالة السابقة أكثر من 30 يومًا أو لم تكن مرتبطة بسياق أي رسالة في المحادثة، فسيتم إرسال الرسالة بشكل طبيعي بدلاً من إرسالها كرد.

عينة من الاستجابة:

{
  "messaging_product": "whatsapp",
  "contacts": [{
    "input": "PHONE_NUMBER",
    "wa_id": "WHATSAPP_ID",
  }]
  "messages": [{
    "id": "wamid.ID",
  }]
}

رسائل العناوين

هذه الميزة متوفرة فقط للأنشطة التجارية القائمة في سنغافورة وعملائها في سنغافورة وللأنشطة التجارية القائمة في الهند وعملائها في الهند.

توفر رسائل العناوين للمستخدمين طريقة أبسط لمشاركة عنوان الشحن مع النشاط التجاري على واتساب.

رسائل العناوين هي رسائل تفاعلية تحتوي على 4 أجزاء رئيسية: header وbody وfooter وaction. يحدد النشاط التجاري داخل مكون الإجراء الاسم "address_message" والمعلمات ذات الصلة.

يتم حاليًا دعم رسائل العناوين في البلدين التاليين: الهند وسنغافورة. يوضح الجدول أدناه الحقول المدعومة في كل بلد على وجه التحديد.

اسم الحقل التسمية المعروضة نوع الإدخال البلدان المدعومة التقييدات

name

الاسم

text (نص)

الهند، سنغافورة

بلا

phone_number

رقم الهاتف

tel

الهند، سنغافورة

أرقام الهواتف الصالحة فقط

in_pin_code

رمز التعريف الشخصي

text (نص)

الهند

الحد الأقصى للطول: 6

sg_post_code

الرمز البريدي

number (عدد)

سنغافورة

الحد الأقصى للطول: 6 أحرف

house_number

رقم الشقة/المنزل

text (نص)

الهند

بلا

floor_number

رقم الطابق

text (نص)

الهند

بلا

tower_number

رقم المبنى

text (نص)

الهند

بلا

building_name

اسم المبنى/الشقة

text (نص)

الهند

بلا

address

العنوان

text (نص)

الهند، سنغافورة

بلا

landmark_area

المعالم المميزة/المنطقة

text (نص)

الهند

بلا

unit_number

رقم الوحدة

text (نص)

سنغافورة

بلا

city

المدينة

text (نص)

الهند، سنغافورة

بلا

state

الولاية

text (نص)

الهند

بلا

عينة من استدعاء API

هذه عينة من استدعاء API لرسالة العنوان. تُعد السمة country حقلاً إلزاميًا في معلمات الإجراء. إذا لم يتم تضمينها، فسيحدث خطأ يتعلق بالتحقق.

curl -X  POST \
'https://graph.facebook.com/v15.0/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
          "messaging_product": "whatsapp",
          "recipient_type": "individual",
          "to": "PHONE_NUMBER",
          "type": "interactive",
          "interactive": {
              "type": "address_message",
              "body": {
                   "text": "Thanks for your order! Tell us what address you’d like this order delivered to."
              },
              "action": {
                   "name": "address_message",
                   "parameters": {
                      "country" :"COUNTRY_ISO_CODE"
                   }
              }
          }
    }' 

معالجة الأخطاء

إذا لم يكن كود المنطقة المرتبط برقم هاتف البلد المحدد صحيحًا، فسيتعذر على الأنشطة التجاري طلب رسالة العنوان من المستلم. على سبيل المثال، سيتعذر على الأنشطة التجاري طلب رسالة عنوان من المستلم الذي حدد البلد لتكون "سنغافورة" ولكن لديه رقم هاتف يبدأ بكود المنطقة "91".

لن تسمح رسائل العناوين بإدخال القيم في الحقول المتضاربة في الوقت نفسه. على سبيل المثال، لن تتمكن من إدخال القيم في sg_post_code عند تعيين country على "IN".

بمجرد إرسال رسالة العنوان، ينتظر النشاط التجاري حتى يقوم المستخدم بملء العنوان وإرساله مرة أخرى. تتم مشاركة العنوان الذي أدخله المستخدم عبر حدث webhook المسجّل في عملية الإعداد.

خطوات رسالة العنوان

تتمثل خطوات تنفيذ رسالة العنوان فيما يلي:

  1. يرسل النشاط التجاري رسالة عنوان إلى المستخدم، تتضمن اسم الإجراء address_message
  2. يتفاعل المستخدم مع الرسالة عن طريق النقر على زر الدعوة لاتخاذ إجراء (CTA)، مما يعمل على عرض شاشة رسالة العنوان. يقوم المستخدم بملء العنوان وإرسال النموذج
  3. بعد إرسال نموذج رسالة العنوان من جانب المستخدم، يتلقى الشريك إشعار webhook، والذي يحتوي على تفاصيل العنوان الذي تم إرساله من جانب المستخدم
عينة من رسالة عنوان في الهند
عينة من رسالة عنوان في سنغافورة

يعرض المخطط التسلسلي التالي دفقًا نموذجيًا لدمج رسالة العنوان.

معلمات الإجراءات الإضافية

بإمكان النشاط التجاري إدخال سمات إضافية مثل values أو validation_errors أو saved_addresses كجزء من معلمات الإجراءات التفاعلية. يمكنك العثور على معلومات حول كل استخدام أدناه.

معلمة الإجراء الاستخدام

values

تقوم الأنشطة التجارية بملء هذه القيم مسبقًا في حقول العنوان (مثل ملء حقل عنوان المدينة مسبقًا وإدخال القيمة "سنغافورة")

saved_addresses

بالنسبة إلى الأنشطة التجارية، يمكنها إدخال العناوين المحفوظة المرتبطة مسبقًا بالمستخدم.

بالنسبة إلى المستخدمين، يتم عرض خيار لهم يتيح اختيار العنوان المحفوظ بدلاً من ملء حقل العنوان يدويًا

validation_errors

بإمكان الأنشطة التجارية التسبب في أخطاء في حقول العناوين وسيعمل واتساب على منع المستخدم من إرسال العنوان حتى يتم حل المشكلة (المشكلات).

إرسال رسالة عنوان إلى المستخدم

يمكنك إجراء استدعاء POST إلى /PHONE_NUMBER_ID/messages باستخدام API واتساب لإرسال رسالة عنوان مشفرة تمامًا بين الطرفين إلى المستخدم:

curl -X  POST \
'https://graph.facebook.com/v15.0/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d ' {
            "messaging_product": "whatsapp",
            "recipient_type": "individual",
            "to": "PHONE_NUMBER",
            "type": "interactive",
            "interactive": {
                 "type": "address_message",
                 "body": {
                       "text": "Thanks for your order! Tell us what address you’d like this order delivered 
                        to."
                 },
                "action": {
                      "name": "address_message",
                      "parameters": "JSON Payload"
                 }
            }
     }'

لإرسال رسالة عنوان لا تتضمن أي عناوين محفوظة، سيعرض واتساب للمستخدم أو النشاط التجاري نموذج عنوان لإدخال عنوان جديد.

الهند

curl -X  POST \
'https://graph.facebook.com/v15.0/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
      "messaging_product": "whatsapp",
      "recipient_type": "individual",
      "to": "+91xxxxxxxxxx",
      "type": "interactive",
      "interactive": {
        "type": "address_message",
        "body": {
          "text": "Thanks for your order! Tell us what address you’d like this order delivered to."
        },
        "action": {
          "name": "address_message",
          "parameters": {
              "country": "IN",
              "values": {
                 "name": "CUSTOMER_NAME",
                 "phone_number": "+91xxxxxxxxxx"
              }
           }
        }
      }
   }'

سنغافورة

curl -X  POST \
'https://graph.facebook.com/v15.0/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
      "messaging_product": "whatsapp",
      "recipient_type": "individual",
      "to": "+65xxxxxxxxxx",
      "type": "interactive",
      "interactive": {
        "type": "address_message",
        "body": {
          "text": "Thanks for your order! Tell us what address you’d like this order delivered to."
        },
        "action": {
          "name": "address_message",
          "parameters": {
              "country": "SG",
              "values": {
                  "name": "CUSTOMER_NAME",
                  "phone_number": "+65xxxxxxxxxx"
              }
           }
        }
      }
   }'

لإرسال رسالة عنوان تحتوي على عناوين محفوظة، سيعرض واتساب للمستخدم أو النشاط التجاري خيارًا يتيح تحديد عنوان ما من بين العناوين المحفوظة أو إضافة خيار عنوان جديد. يمكن للمستخدمين تجاهل العنوان المحفوظ وإدخال عنوان جديد.

الهند

curl -X  POST \
'https://graph.facebook.com/v15.0/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d 
'{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "91xxxxxxxxxx",
  "type": "interactive",
  "interactive": {
    "type": "address_message",
    "body": {
      "text": "Thanks for your order! Tell us what address you’d like this order delivered to."
    },
    "action": {
      "name": "address_message",
      "parameters": {
          "country": "IN",
          "saved_addresses": [
             {
                 "id": "address1",
                 "value": {
                    "name": "CUSTOMER_NAME",
                    "phone_number": "+91xxxxxxxxxx",
                    "in_pin_code": "400063",
                    "floor_number": "8",
                    "building_name": "",
                    "address": "Wing A, Cello Triumph,IB Patel Rd",
                    "landmark_area": "Goregaon",
                    "city": "Mumbai"
                 }
             }
          ]
       }
    }
  }
}'

سنغافورة

curl -X  POST \
'https://graph.facebook.com/v15.0/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d 
'{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "+65xxxxxxxxxx",
  "type": "interactive",
  "interactive": {
    "type": "address_message",
    "body": {
      "text": "Thanks for your order! Tell us what address you’d like this order delivered to."
    },
    "action": {
      "name": "address_message",
      "parameters": {
         "country": "SG",
         "values": {
             "name": "CUSTOMER_NAME",
             "phone_number": "+65xxxxxxxxxx"
         },
         "saved_addresses": [
            {
                "id": "address1",
                "value": {
                   "name": "CUSTOMER_NAME",
                   "phone_number": "+65xxxxxxxxxx",
                   "sg_post_code": "018937",
                   "address": "9 Straits View, Marina One West Tower",
                   "unit_number": "Suite 29-00",
                   "city": "Singapore"
                }
            }
         ]
      }
    }
  }
}'

التحقق من الاستجابة

تتضمن الاستجابة الناجحة كائن messages يحتوي على معرف الرسالة التي تم إنشاؤها حديثًا.

{
  "messaging_product": "whatsapp",
  "contacts": [{
      "input": "PHONE_NUMBER",
      "wa_id": "WHATSAPP_ID",
    }]
  "messages": [{
      "id": "wamid.ID",
    }]
}

تتضمن الاستجابة غير الناجحة رسالة خطأ. ولمزيد من المعلومات، يمكنك الرجوع إلى رموز الخطأ والحالة.

إرسال رسالة عنوان تتضمن أخطاءً في التحقق

يجب إعادة إرسال رسالة العنوان إلى المستخدم في حالة وجود خطأ يتعلق بالتحقق في خادم النشاط التجاري. يجب على النشاط التجاري إعادة إرسال مجموعة القيم التي أدخلها المستخدم مسبقًا، بالإضافة إلى أخطاء التحقق المعنية لكل حقل غير صالح، كما هو موضح في عينة حمولات البيانات أدناه.

الهند

curl -X  POST \
'https://graph.facebook.com/v15.0/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d 
'{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "91xxxxxxxxxx",
  "type": "interactive",
  "interactive": {
    "type": "address_message",
    "body": {
      "text": "Thanks for your order! Tell us what address you’d like this order delivered to."
    },
    "action": {
      "name": "address_message",
      "parameters": {
          "country": "IN",
          "values": {
             "name": "CUSTOMER_NAME",
             "phone_number": "+91xxxxxxxxxx",
             "in_pin_code": "666666",
             "address": "Some other location",
             "city": "Delhi"
          },
          "validation_errors": {
             "in_pin_code": "We could not locate this pin code."
          }
       }
    }
  }
}'

سنغافورة

curl -X  POST \
'https://graph.facebook.com/v15.0/FROM_PHONE_NUMBER_ID/messages' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d 
'{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "12065550107",
  "type": "interactive",
  "interactive": {
    "type": "address_message",
    "body": {
      "text": "Thanks for your order! Tell us what address you’d like this order delivered to."
    },
    "action": {
      "name": "address_message",
      "parameters": {
           "country": "SG",
           "values": {
              "name": "CUSTOMER_NAME",
              "phone_number": "+65xxxxxxxxxx",
              "sg_post_code": "666666",
              "address": "Some other location",
              "city": "Singapore"
           },
           "validation_errors": {
              "sg_post_code": "We could not locate this pin code."
           }
        }
     }
  }
}'

تلقي إشعارات حول عمليات إرسال العناوين

ستتلقى الأنشطة التجارية إشعارات إرسال العناوين عبر أحداث webhooks، تمامًا مثل الإشعار المعروض أدناه.

{
    "messages": [
        {
           "id": "gBGGFlAwCWFvAgmrzrKijase8yA",
           "from": "PHONE_NUMBER",
           "Interactive": {
               "type":  "nfm_reply",
               "action":  "address_message",
               "nfm_reply": {
                   "name": "address_message",
                    "response_json": “<response_json from client>”,
                    "body": “<body text from client>”,
            }
           "timestamp": "1670394125",
           "type": "interactive"  
        }
    ]
}

يحتوي إشعار webhook على القيم التالية.

اسم الحقل النوع الوصف

interactive

Object (الكائن)

يحتفظ بالاستجابة من جانب العميل

type

String (سلسلة)

سيكون بالقيمة nfm_reply والتي تشير إلى وجود استجابة دفق أصلية (NFM) من جانب العميل

nfm_reply

Object (الكائن)

يحتفظ بالبيانات المستلمة من العميل

response_json

String (سلسلة)

قيم حقول العناوين الموجود دائمًا والتي يملأها المستخدم بتنسيق JSON

body (اختياري)

String (سلسلة)

النص الرئيسي من جانب العميل، ما يراه المستخدم

name (اختياري)

String (سلسلة)

سيكون بالقيمة address_message والتي تشير إلى نوع استجابة إجراء NFM من جانب العميل

يتم عرض رد رسالة العنوان كنوع استجابة NFM لطلب رسالة عنوان في الهند أدناه.

{
   "messages": [
      {
          "context": {
	  "from": "FROM_PHONE_NUMBER_ID",
	  "id": "wamid.HBgLMTIwNjU1NTAxMDcVAgARGBI3NjNFN0U5QzMzNDlCQjY0M0QA"
           },
          "from": "PHONE_NUMBER",
         "id": "wamid.HBgLMTIwNjU1NTAxMDcVAgASGCA5RDhBNENEMEQ3RENEOEEzMEI0RUExRDczN0I1NThFQwA=",
         "timestamp": "1671498855",
         "type": "interactive",
         "interactive": {
	 "type": "nfm_reply",
	"nfm_reply": {
	      "response_json": "{\"saved_address_id\":\"address1\",\"values\":{\"in_pin_code\":\"400063\",\"building_name\":\"\",\"landmark_area\":\"Goregaon\",\"address\":\"Wing A, Cello Triumph, IB Patel Rd\",\"city\":\"Mumbai\",\"name\":\"CUSTOMER_NAME\",\"phone_number\":\"+91xxxxxxxxxx\",\"floor_number\":\"8\"}}",
                    "body": "CUSTOMER_NAME\n +91xxxxxxxxxx\n 400063, Goregaon, Wing A, Cello Triumph,IB Patel Rd, Mumbai, 8",
                    "name": "address_message"
                }
            }
        }
    ]
}

الميزة غير مدعومة

إذا كان العميل لا يدعم address_message، فسيتم تجاهل الرسائل وإعادة إرسال رسالة خطأ إلى النشاط التجاري في صورة حدث webhook. يظهر أدناه إشعار webhook الذي ستتم إعادة إرساله:

{
  "statuses": [
    {
      "errors": [
        {
          "code": 1026,
          "href": "https://developers.facebook.com/docs/whatsapp/api/errors/",
          "title": "Receiver Incapable"
        }
      ],
      "id": "gBGGFlAwCWFvAgkyHMGKnRu4JeA",
      "message": {
        "recipient_id": "+91xxxxxxxxxx"
      },
      "recipient_id": "91xxxxxxxxxx",
      "status": "failed",
      "timestamp": "1670394125",
      "type": "message"
    }
  ]
}

رسائل القالب

راجع رسائل القالب.

تسلسل تسليم الرسائل المتعددة

عند إرسال سلسلة من الرسائل، لا يمكن ضمان مطابقة ترتيب تسليم الرسائل مع ترتيب طلبات API. إذا كنت بحاجة إلى ضمان تسلسل تسليم الرسائل، فتأكد من تلقي حالة delivered في حدث webhook الرسائل قبل إرسال الرسالة التالية في تسلسل الرسائل.

استكشاف الأخطاء وإصلاحها

إذا كنت تواجه مشكلات في تلقي الرسائل، فراجع الرسائل التي لم يتم تسليمها.