يوضح لك هذا المستند كيفية إضافة القائمة الثابتة برمجيًا إلى تجربة المراسلة.
لن يدعم Messenger from Meta لنظام Android (الإصدار 276 والإصدارات الأحدث) القوائم الثابتة المتداخلة بعد الآن. كما ستظهر الصفحات التي تتضمن عناصر قائمة متداخلة كقوائم عمودية على جميع المنصات (الويب وأنظمة iOS وAndroid (الإصدار 276 والإصدارات الأحدث)). ونعتقد أن ذلك سيؤدي إلى إنشاء تجربة أفضل للأشخاص على Messenger. ستتم إزالة دعم القوائم المتداخلة من API الملف الشخصي في Messenger وAPI إعدادات المستخدم المخصصة في الإصدار 8.0 من واجهة Graph API، مع إجراء تغيير عاجل لمدة عامين على جميع الإصدارات.
طريقة العملتسمح لك القائمة الثابتة بإنشاء قائمة بالميزات الرئيسية للنشاط التجارية وإرسالها، مثل ساعات العمل ومواقع المتاجر والمنتجات وتظل مرئية في محادثة الشخص على Messenger مع النشاط التجاري. عندما ينقر الشخص على عنصر في القائمة، يتم إرسال إشعار webhook |
إذا تم تعيين الأوامر، فستكون لها الأولوية على القائمة الثابتة.
لإظهار القائمة الثابتة، يجب استيفاء العناصر التالية:
pages_messaging
.تتكون القائمة الثابتة من مصفوفة من الأزرار. ويتم دعم أنواع الأزرار التالية في القائمة الثابتة:
web_url
: يحدد العنصر على أنه زر عنوان URL.postback
: يحدد العنصر على أنه زر رد جاهز.لتعيين القائمة الثابتة، أرسل طلب POST
إلى API الملف الشخصي على Messenger لتعيين الخاصية persistent_menu
في الملف الشخصي لبرنامجك التلقائي في Messenger.
كبديل لقائمة المستوى المتداخل التي تم إيقاف استخدامها، نسمح باستخدام 20 زرًا كحد أقصى في المصفوفة call_to_actions
لواجهة Graph API بالإصدار 8.0 والإصدارات الأحدث.
{
"persistent_menu": [
{
"locale": "default",
"composer_input_disabled": false,
"call_to_actions": [
{
"type": "postback",
"title": "Talk to an agent",
"payload": "CARE_HELP"
},
{
"type": "postback",
"title": "Outfit suggestions",
"payload": "CURATION"
},
{
"type": "web_url",
"title": "Shop now",
"url": "https://www.originalcoastclothing.com/",
"webview_height_ratio": "full"
}
]
}
]
}
تم إيقاف استخدام هذه الميزة في الإصدار 8.0 والإصدارات الأحدث.
يمكنك تعطيل أداة الإنشاء لجعل القائمة الثابتة هي الطريقة الوحيدة أمام أي شخص للتفاعل مع البرنامج التلقائي في Messenger. ويُعد هذا الأمر مفيدًا إذا كان برنامجك التلقائي لديه غرض محدد للغاية أو مجموعة من الخيارات.
لإجراء ذلك، يمكنك تعيين "composer_input_disabled":true
عند إنشاء القائمة الثابتة.
يمكنك توفير نص افتراضي ومترجَم للزر في القائمة الثابتة ليتم عرضه استنادًا إلى الإعدادات المحلية للشخص.
للقيام بذلك، حدد كائنًا منفصلاً في المصفوفة persistent_menu
لكل إعداد محلي. لتحديد الإعداد المحلي لكل كائن، يمكنك تعيين الخاصية locale
على إعداد محلي مدعوم:
{
"locale":"default",
"call_to_actions":[...]
},
{
"locale: "zh_CN",
"call_to_actions":[...]
}
في 4 ديسمبر 2019، أجرينا تحسينات على القائمة الثابتة لدعم التغييرات الديناميكية بغرض إضفاء طابع شخصي أكبر على تجربة المحادثة.
يمكنك تجاوز القائمة الثابتة على مستوى الصفحة باستخدام إعداد على مستوى المستخدم. ويتيح ذلك لتطبيقك التحكم الديناميكي في:
لتمكين الإعداد على مستوى المستخدم أو تعطيله، يتم استخدام نقطة نهاية مختلفة تُسمى custom_user_settings
. وتدعم نقطة النهاية هذه استدعاءات POST وGET وDELETE.
تنطبق التكوينات نفسها المتوفرة في القائمة الثابتة على مستوى الصفحة على مستوى المستخدم. ويكمن الاختلاف الرئيسي في أنه يلزم توفير المعلمة psid
للإشارة إلى المستخدم الذي ينطبق عليه هذا التجاوز.
ملاحظة: يتم تحديث القائمة الثابتة على مستوى المستخدم في الوقت الفعلي، بينما قد يستغرق تحديث القائمة الثابتة على مستوى الصفحة ما يصل إلى 24 ساعة.
يتم تقييد معدلات استدعاء الإعدادات على مستوى المستخدم إلى 10 استدعاءات لكل مستخدم في كل 10 دقائق.
سيؤدي ذلك إلى تجاوز الإعدادات الحالية على مستوى الصفحة لهذا المستخدم.
curl -X POST -H "Content-Type: application/json" -d '{
"psid": "<PSID>",
"persistent_menu": [
{
"locale": "default",
"composer_input_disabled": false,
"call_to_actions": [
{
"type": "postback",
"title": "Talk to an agent",
"payload": "CARE_HELP"
},
{
"type": "postback",
"title": "Outfit suggestions",
"payload": "CURATION"
},
{
"type": "web_url",
"title": "Shop now",
"url": "https://www.originalcoastclothing.com/",
"webview_height_ratio": "full"
}
]
}
]
}' "https://graph.facebook.com/v21.0
/me/custom_user_settings?access_token=<PAGE_ACCESS_TOKEN>"
سيؤدي ذلك إلى استرداد الإعدادات الحالية على مستوى المستخدم والصفحة. وإذا لم تتوفر إعدادات على مستوى المستخدم، فسيتم إرجاع الإعدادات على مستوى الصفحة فقط.
curl -X GET "https://graph.facebook.com/v21.0
/me/custom_user_settings?psid=<PSID>&access_token=<PAGE_ACCESS_TOKEN>"
النتيجة
{ "data": [ { "user_level_persistent_menu": [ { "locale": "default", "composer_input_disabled": false, "call_to_actions": [ { "type": "postback", "title": "Talk to an agent", "payload": "CARE_HELP" }, { "type": "postback", "title": "Outfit suggestions", "payload": "CURATION" }, { "type": "web_url", "title": "Shop now", "url": "https://www.originalcoastclothing.com/", "webview_height_ratio": "full" } ] } ], "page_level_persistent_menu": [ Original Page Menu... ] } ] }
سيؤدي ذلك إلى إزالة الإعدادات على مستوى المستخدم والاحتفاظ بالقائمة على مستوى الصفحة في حالة تعيينها.
curl -X DELETE 'https://graph.facebook.com/v21.0
/me/custom_user_settings?psid=<PSID>¶ms=[%22persistent_menu%22]&access_token=<PAGE_ACCESS_TOKEN>'
قد تتوفر بعض الحالات التي يكون من الأفضل فيها تعطيل القائمة الثابتة لبرنامجك التلقائي في المكون الإضافي للدردشة. ولإجراء ذلك، أضف "disabled_surfaces": ["CUSTOMER_CHAT_PLUGIN"]
عند تعيين قائمتك الثابتة:
{
"persistent_menu":[
{
"locale":"default",
"disabled_surfaces": ["CUSTOMER_CHAT_PLUGIN"],
"composer_input_disabled": false,
"call_to_actions":[
{
"title":"My Account",
"type":"postback",
"payload":"PAYBILL_PAYLOAD"
}
]
}
]
}
يمكن لأزرار أعجبني وعناصر القائمة إنشاء طريقة عرض ويب أو رد جاهز. وتذكّر أن قائمة المستوى الثاني غير مدعومة.
استخدم القائمة في نقاط الدخول إلى وظائف برنامجك التلقائي.
قدّم وصفًا واضحًا: تتيح قائمتك للأشخاص معرفة ما يمكن أن يفعله برنامجك التلقائي. وتتيح للمستخدمين على الفور معرفة الإجراءات التي قد يستخدمون برنامجك التلقائي من أجلها في المستقبل.
كن انتقائيًا لتمثيل الوظائف الأساسية لبرنامجك التلقائي وحاول تقييد عناصر القائمة عند 5 عناصر للحصول على أفضل تجربة للمستخدم.
لا تتوقع أن تحتوي القائمة على بيانات خاصة بالمستخدم: فهي متطابقة بالنسبة للجميع، إلا أنه يمكن تطويعها محليًا.
تجنب وضع الزر "القائمة" ضمن القائمة والذي يرسل رسالة إلى المستخدم تحتوي على قائمة. ولكن كل ما عليك هو وضع المحتوى مباشرةً في القائمة، فهذا هو الغرض من القائمة!
تجنب وضع إجراءات عامة مثل "إعادة التشغيل" في القائمة.
تجنب استخدام بنية القائمة الرئيسية للحصول على معلومات ثانوية بنمط "بيانات النشر" (colophon) مثل حول أو شروط الخدمة أو سياسة الخصوصية أو "برعاية"، أو تجاهل الكشف عن الوظائف الرئيسية لبرنامجك التلقائي.