เมนูถาวร

เอกสารนี้จะแสดงให้คุณเห็นวิธีเพิ่มเมนูถาวรลงในประสบการณ์การส่งข้อความของคุณโดยใช้โปรแกรม

เมนูถาวรแบบซ้อนกัน

Messenger from Meta สำหรับ Android (เวอร์ชั่น 276 ขึ้นไป) จะไม่รองรับเมนูถาวรแบบซ้อนกันอีกต่อไป โดยเพจที่มีรายการเมนูแบบซ้อนกันจะแสดงเป็นรายการแบบระดับเดียวบนทุกแพลตฟอร์ม (เว็บ, iOS และ Android (เวอร์ชั่น 276 ขึ้นไป)) เราเชื่อว่าการทำเช่นนี้จะสร้างประสบการณ์ที่ดียิ่งกว่าเดิมให้กับผู้คนบน Messenger เราจะยกเลิกการรองรับเมนูแบบซ้อนกันจากทั้ง API โปรไฟล์ Messenger และ API การตั้งค่าผู้ใช้แบบกำหนดเองใน API กราฟเวอร์ชั่น 8.0 โดยจะมีการประกาศให้ทราบถึงการเปลี่ยนแปลงที่ส่งผลต่อการทำงานเป็นเวลา 2 ปีในทุกเวอร์ชั่น

วิธีการทำงาน

เมนูถาวรช่วยให้คุณสามารถสร้างและส่งเมนูฟีเจอร์หลักๆ ของธุรกิจของคุณ เช่น เวลาทำการ ตำแหน่งที่ตั้งของร้านค้า และสินค้าต่างๆ ซึ่งจะปรากฏให้เห็นตลอดเวลาในการสนทนาใน Messenger ของบุคคลกับธุรกิจของคุณ

เมื่อผู้คนคลิกที่รายการหนึ่งในเมนู ระบบจะส่งการแจ้งเตือน Webhook postback ไปยังเซิร์ฟเวอร์ของคุณ การแจ้งเตือน Webhook นี้ประกอบด้วยข้อมูลเกี่ยวกับว่ามีอะไรเปลี่ยนแปลงไปบ้างและใครเป็นผู้ดำเนินการเปลี่ยนแปลงนั้น การเลือกรายการนี้จะเป็นการเปิดหน้าต่างส่งข้อความมาตรฐานขึ้นมา คุณจะมีเวลา 24 ชั่วโมงในการตอบกลับบุคคลดังกล่าว

หากตั้งคำสั่งไว้ คำสั่งเหล่านี้จะมีผลเหนือเมนูถาวร

ข้อกำหนด

หากต้องการให้เมนูถาวรปรากฏ จำเป็นต้องมีเงื่อนไขต่อไปนี้:

  • บุคคลนั้นต้องใช้งาน Messenger เวอร์ชั่น 106 ขึ้นไปบน iOS หรือ Android
  • เพจ Facebook ที่บอท Messenger ติดตามข้อมูลต้องได้รับการเผยแพร่แล้ว
  • บอท Messenger ต้องได้รับการตั้งค่าเป็น "สาธารณะ" ในการตั้งค่าแอพ
  • บอท Messenger ต้องมีสิทธิ์การอนุญาต pages_messaging
  • บอท Messenger ต้องมีชุดปุ่มเริ่มต้นใช้งาน

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

เมนูถาวรประกอบด้วยอาร์เรย์ปุ่มต่างๆ ซึ่งประเภทปุ่มต่อไปนี้รองรับอยู่ในเมนูถาวร

การตั้งค่าเมนูถาวร

หากต้องการตั้งค่าเมนูถาวร ให้ส่งคำขอ POST ไปยัง API โปรไฟล์ Messenger เพื่อตั้งค่าคุณสมบัติ persistent_menu ของโปรไฟล์ Messenger ของบอทคุณ

เราอนุญาตให้มีปุ่มได้มากถึง 20 ปุ่มในอาร์เรย์ call_to_actions สำหรับ 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 นาที

ตัวอย่างคำขอ POST

การดำเนินการนี้จะแทนที่การตั้งค่าระดับเพจในปัจจุบันของผู้ใช้รายนี้

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>"

ตัวอย่างคำขอ GET

การดำเนินการนี้จะดึงข้อมูลการตั้งค่าระดับผู้ใช้และระดับเพจในปัจจุบัน หากไม่มีการตั้งค่าระดับผู้ใช้ ระบบจะส่งคืนการตั้งค่าระดับเพจเท่านั้น

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...
        ]  
      }
  ]
}

ตัวอย่างคำขอ DELETE

การดำเนินการนี้จะลบการตั้งค่าระดับผู้ใช้ออก โดยจะเหลือเมนูระดับเพจไว้หากมีการตั้งค่า

curl -X DELETE 'https://graph.facebook.com/v21.0/me/custom_user_settings?psid=<PSID>&params=[%22persistent_menu%22]&access_token=<PAGE_ACCESS_TOKEN>'

การปิดใช้งานเมนูต่อเนื่อง

มีบางกรณีที่ควรปิดใช้งานเมนูถาวรสำหรับบอทในปลั๊กอินแชท โดยเพิ่ม "disabled_surfaces": ["CUSTOMER_CHAT_PLUGIN"] เมื่อตั้งค่าเมนูถาวร:

ตัวอย่างเพย์โหลด API โปรไฟล์ Messenger

{
  "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 รายการเพื่อให้ผู้ใช้ได้รับประสบการณ์ที่ดีที่สุด

อย่าคาดหวังว่าเมนูจะมีข้อมูลสำหรับผู้ใช้คนใดคนหนึ่งโดยเฉพาะ ทั้งนี้เพราะเมนูจะมีลักษณะเหมือนกันสำหรับผู้ใช้บอทของคุณทุกราย ถึงแม้ว่าจะสามารถแปลเป็นภาษาท้องถิ่นได้ก็ตาม

ห้ามใส่ปุ่ม "เมนู" ในเมนูที่ส่งข้อความที่มีเมนูให้ผู้ใช้ โปรดใส่เพียงเนื้อหานั้นลงในเมนูโดยตรง เพราะนี่จุดประสงค์หลักของการใช้เมนู

ห้ามระบุการดำเนินการทั่วไปอย่าง "เริ่มใหม่" ลงในเมนู

ห้ามใช้พื้นที่เมนูหลักสำหรับใส่ข้อมูลรอง ซึ่งเป็นข้อมูลที่มีลักษณะเป็น "คำอธิบายทั่วไป" เช่น ส่วน "เกี่ยวกับ", "ข้อกำหนดในการใช้บริการ", "ความเป็นส่วนตัว" หรือ "สนับสนุนโดย" โดยไม่ได้แสดงถึงฟังก์ชั่นการทำงานหลักของบอท

การสนับสนุนสำหรับผู้พัฒนา