Persistent Menu คืออะไร?

Persistent Menu ช่วยให้คุณแสดงเมนูถาวรที่มีการดำเนินการหลักของธุรกิจของคุณ เช่น เวลาทำการ สถานที่ตั้งร้านค้า สินค้า หรือตัวเลือกอื่นๆ ที่ใช้บ่อย เมนูนี้จะแสดงอยู่เสมอในระหว่างการสนทนากับบอท Facebook Messenger ของคุณ

ประเภทปุ่มที่รองรับ

Persistent Menu รองรับประเภทปุ่มดังต่อไปนี้:

  • ปุ่ม URL (web_url)
  • ปุ่ม Callback (postback)

สร้าง Persistent Menu

ใช้ฟังก์ชันต่อไปนี้เพื่อสร้าง Persistent Menu สำหรับหน้า Facebook:

response = fb_set_persistent_menu(group_id, buttons)

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
group_id Facebook Bot ID คุณสามารถค้นหาได้ในส่วน Channel ของโปรเจกต์ MaviBot ของคุณ
buttons พจนานุกรมที่อธิบายปุ่มเมนู

โครงสร้างพจนานุกรมปุ่ม

buttons = {
    "default": [
        ["postback", "Button 1", "callback_text 1"],
        ["postback", "Button 2", "callback_text 2"],
        ["web_url", "Website", "https://mavibot.ai/"]
    ]
}

คีย์ default เป็นสิ่งที่จำเป็น โดยจะกำหนดปุ่มที่แสดงสำหรับผู้ใช้ที่ไม่มีเมนูที่กำหนดเองตามตำแหน่งที่ตั้ง

แต่ละปุ่มจะถูกอธิบายด้วยอาร์เรย์:

["button_type", "Button text", "Value"]

รูปแบบปุ่มที่รองรับ

ปุ่ม Callback

["postback", "Button text", "callback_text"]
ค่า คำอธิบาย
postback ประเภทปุ่ม
Button text ข้อความที่แสดงบนปุ่ม
callback_text ข้อความที่ส่งไปยังบอทเมื่อคลิกปุ่ม

ปุ่ม URL

["web_url", "Button text", "https://example.com"]
ค่า คำอธิบาย
web_url ประเภทปุ่ม
Button text ข้อความที่แสดงบนปุ่ม
URL เว็บไซต์ที่เปิดเมื่อคลิกปุ่ม

การปรับภาษา (Localization)

คุณสามารถแสดงเมนูที่แตกต่างกันตามตำแหน่งที่ตั้งของผู้ใช้

เพียงเพิ่มคีย์เพิ่มเติมในพจนานุกรมปุ่ม

ตัวอย่าง:

buttons = {
    "default": [
        ["postback", "Button 1", "callback_text 1"],
        ["postback", "Button 2", "callback_text 2"],
        ["web_url", "Website", "https://mavibot.ai/"]
    ],
    "en_EN": [
        ["postback", "Button", "callback_text 1"],
        ["postback", "Button 2", "callback_text 2"],
        ["web_url", "Website", "https://mavibot.ai/"]
    ]
}

ในตัวอย่างนี้ ผู้ใช้ที่มีตำแหน่งที่ตั้ง en_EN จะได้รับเมนูที่แตกต่างกัน

ตำแหน่งที่ตั้งที่รองรับ

af_ZA, ar_AR, as_IN, az_AZ, be_BY, bg_BG, bn_IN, br_FR, bs_BA, ca_ES,
cb_IQ, co_FR, cs_CZ, cx_PH, cy_GB, da_DK, de_DE, el_GR, en_GB, en_UD,
en_US, es_ES, es_LA, et_EE, eu_ES, fa_IR, ff_NG, fi_FI, fo_FO, fr_CA,
fr_FR, fy_NL, ga_IE, gl_ES, gn_PY, gu_IN, ha_NG, he_IL, hi_IN, hr_HR,
hu_HU, hy_AM, id_ID, is_IS, it_IT, ja_JP, ja_KS, jv_ID, ka_GE, kk_KZ,
km_KH, kn_IN, ko_KR, ku_TR, lt_LT, lv_LV, mg_MG, mk_MK, ml_IN, mn_MN,
mr_IN, ms_MY, mt_MT, my_MM, nb_NO, ne_NP, nl_BE, nl_NL, nn_NO, or_IN,
pa_IN, pl_PL, ps_AF, pt_BR, pt_PT, qz_MM, ro_RO, ru_RU, rw_RW, sc_IT,
si_LK, sk_SK, sl_SI, so_SO, sq_AL, sr_RS, sv_SE, sw_KE, sz_PL, ta_IN,
te_IN, tg_TJ, th_TH, tl_PH, tr_TR, tz_MA, uk_UA, ur_PK, uz_UZ, vi_VN,
zh_CN, zh_HK, zh_TW

สร้าง Persistent Menu สำหรับผู้ใช้เฉพาะ

หากต้องการสร้างเมนูที่แสดงเฉพาะผู้ใช้ที่เรียกใช้ฟังก์ชัน ให้ส่ง 1 เป็นพารามิเตอร์ที่สาม

response = fb_set_persistent_menu(group_id, buttons, 1)

หมายเหตุ

Persistent Menu ระดับผู้ใช้จะได้รับการอัปเดตทันที

Persistent Menu ระดับหน้าอาจใช้เวลาถึง 24 ชั่วโมง ในการอัปเดต

Facebook ยังจำกัดการอัปเดตเมนูระดับผู้ใช้ไว้ที่ 10 คำขอต่อผู้ใช้ทุกๆ 10 นาที


ปิดการใช้งาน Composer

คุณสามารถปิดการใช้งาน Messenger composer เพื่อให้ผู้ใช้สามารถโต้ตอบกับบอท ผ่าน Persistent Menu เท่านั้น

สิ่งนี้มีประโยชน์เมื่อบอทควรอนุญาตเฉพาะการดำเนินการที่กำหนดไว้ล่วงหน้าเท่านั้น

ปิดการใช้งาน Composer สำหรับผู้ใช้ทั้งหมด

response = fb_set_persistent_menu(group_id, buttons, "", 1)

ปิดการใช้งาน Composer สำหรับผู้ใช้เฉพาะ

response = fb_set_persistent_menu(group_id, buttons, 1, 1)

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
group_id Facebook Bot ID
buttons พจนานุกรมปุ่ม
พารามิเตอร์ที่ 3 ตั้งค่าเป็น 1 เพื่อใช้เมนูกับผู้ใช้ปัจจุบันเท่านั้น เว้นว่างไว้เพื่อใช้กับหน้า
พารามิเตอร์ที่ 4 ตั้งค่าเป็น 1 เพื่อปิดการใช้งาน Messenger composer

ค่าที่ส่งกลับ

หากฟังก์ชันทำงานสำเร็จ:

{"result":"success"}

มิฉะนั้น จะส่งคืนคำอธิบายข้อผิดพลาด

ตัวอย่าง:

Error parse buttons data

หรือ

{
  "error": {
    "message": "(#100) param persistent_menu[0][call_to_actions] must be non-empty.",
    "type": "OAuthException",
    "code": 100,
    "fbtrace_id": "AJtVczu7TEJJxbMfnO"
  }
}

ตัวอย่าง

สร้างเมนูสำหรับผู้ใช้ทั้งหมด

buttons = {
    "default": [
        ["postback", "Button 1", "callback_text 1"],
        ["postback", "Button 2", "callback_text 2"],
        ["web_url", "Website", "https://mavibot.ai/"]
    ],
    "en_EN": [
        ["postback", "Button", "callback_text 1"],
        ["postback", "Button 2", "callback_text 2"],
        ["web_url", "Website", "https://mavibot.ai/"]
    ]
}

response = fb_set_persistent_menu("123456789", buttons)

สร้างเมนูสำหรับผู้ใช้ทั้งหมดและปิดการใช้งาน Composer

buttons = {
    "default": [
        ["postback", "Button 1", "callback_text 1"],
        ["postback", "Button 2", "callback_text 2"],
        ["web_url", "Website", "https://mavibot.ai/"]
    ],
    "en_EN": [
        ["postback", "Button", "callback_text 1"],
        ["postback", "Button 2", "callback_text 2"],
        ["web_url", "Website", "https://mavibot.ai/"]
    ]
}

response = fb_set_persistent_menu("123456789", buttons, "", 1)

สร้างเมนูสำหรับผู้ใช้ปัจจุบัน

buttons = {
    "default": [
        ["postback", "Button 1", "callback_text 1"],
        ["postback", "Button 2", "callback_text 2"],
        ["web_url", "Website", "https://mavibot.ai/"]
    ]
}

response = fb_set_persistent_menu("123456789", buttons, 1)

สร้างเมนูผู้ใช้และปิดการใช้งาน Composer

buttons = {
    "default": [
        ["postback", "Button 1", "callback_text 1"],
        ["postback", "Button 2", "callback_text 2"],
        ["web_url", "Website", "https://mavibot.ai/"]
    ]
}

response = fb_set_persistent_menu("123456789", buttons, 1, 1)

ลบ Persistent Menu

ลบเมนูระดับหน้า

response = fb_delete_persistent_menu(group_id)

การตอบกลับที่สำเร็จ:

{"result":"success"}

ข้อผิดพลาดที่อาจเกิดขึ้น:

Bot not found

ลบเมนูระดับผู้ใช้

response = fb_delete_persistent_menu(group_id, 1)

การตอบกลับที่สำเร็จ:

{"result":"success"}

ข้อผิดพลาดที่อาจเกิดขึ้น:

Bot not found