Menu cố định

Tài liệu này hướng dẫn cách thêm Menu cố định vào trải nghiệm nhắn tin của bạn theo lập trình.

Menu cố định lồng nhau

Messenger from Meta dành cho Android (v276 trở lên) sẽ không hỗ trợ menu cố định lồng nhau nữa. Những trang chứa các mục menu lồng nhau sẽ hiển thị dưới dạng danh sách phẳng trên mọi giao diện (web, iOS và Android (v276 trở lên)). Chúng tôi tin rằng thay đổi này sẽ tạo ra trải nghiệm tốt hơn nữa cho mọi người trên Messenger. Chúng tôi sẽ không còn hỗ trợ menu lồng nhau trên cả API Trang cá nhân Messenger lẫn API Cài đặt người dùng tùy chỉnh trong API Đồ thị v8.0, thông qua sự thay đổi quan trọng trong 2 năm trên mọi phiên bản.

Cách hoạt động

Với Menu cố định, bạn có thể tạo và gửi một menu gồm các tính năng chính của doanh nghiệp - chẳng hạn như giờ làm việc, vị trí cửa hàng và sản phẩm - để menu này luôn hiển thị trong cuộc trò chuyện trên Messenger của người dùng với doanh nghiệp bạn.

Khi người dùng nhấp vào một mục trong menu, hệ thống sẽ gửi thông báo webhook postback đến máy chủ của bạn. Thông báo webhook này chứa thông tin về mục được chọn và người chọn. Hành động chọn mục này sẽ mở ra khoảng thời gian nhắn tin tiêu chuẩn. Bạn có 24 giờ để trả lời người dùng đó.

Nếu bạn đặt Lệnh, chúng sẽ được ưu tiên hơn so với Menu cố định.

Yêu cầu

Menu cố định sẽ hiển thị nếu đáp ứng các điều kiện sau:

  • Người dùng phải đang chạy Messenger v106 trở lên trên iOS hoặc Android.
  • Trang Facebook mà bot Messenger đăng ký phải ở trạng thái đã đăng.
  • Bot Messenger phải được đặt ở chế độ "công khai" trong phần cài đặt ứng dụng.
  • Bot Messenger phải có quyền pages_messaging.
  • Bot Messenger phải được thiết lập một nút bắt đầu.

Nút được hỗ trợ

Menu cố định bao gồm một mảng nút. Các loại nút sau được hỗ trợ trong menu cố định:

Thiết lập menu cố định

Để thiết lập menu cố định, hãy gửi yêu cầu POST đến API Trang cá nhân Messenger để đặt thuộc tính persistent_menu của trang cá nhân Messenger cho bot.

Để thay thế menu lồng nhau đã ngừng hoạt động, chúng tôi cho phép tối đa 20 nút trong mảng call_to_actions đối với API Đồ thị v8.0 trở lên.

{
    "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"
                }
            ]
        }
    ]
}

Menu cố định lồng nhau

Tính năng này đã ngừng hoạt động trên v8.0 trở lên.

Tắt trình biên soạn

Bạn có thể tắt trình biên soạn để biến menu cố định thành cách duy nhất cho người dùng tương tác với bot Messenger. Việc này khá hữu ích nếu bot của bạn có mục đích hoặc nhóm tùy chọn rất cụ thể.

Để thực hiện việc này, hãy đặt "composer_input_disabled":true khi bạn tạo menu cố định.

Bản địa hóa

Bạn có thể cung cấp văn bản nút mặc định cũng như đã bản địa hóa cho menu cố định. Văn bản này sẽ hiển thị dựa trên ngôn ngữ của người dùng.

Để thực hiện việc này, hãy chỉ định một đối tượng riêng trong mảng persistent_menu cho từng ngôn ngữ. Để chỉ định ngôn ngữ cho từng đối tượng, hãy đặt thuộc tính locale thành ngôn ngữ được hỗ trợ:

{
  "locale":"default",
  "call_to_actions":[...]
},
{
  "locale: "zh_CN",
  "call_to_actions":[...]
}

Menu cấp độ người dùng

Tính năng mới

Vào ngày 04/12/2019, chúng tôi đã cải tiến menu cố định để hỗ trợ các thay đổi tự động nhằm cá nhân hóa hơn nữa trải nghiệm trò chuyện.

Bạn có thể ghi đè menu cố định ở cấp độ Trang bằng một tùy chọn cài đặt ở cấp độ người dùng. Nhờ đó, ứng dụng của bạn có thể tự động kiểm soát:

  • Thao tác nhấp của người dùng vào các nút hành động trên menu.
  • Chế độ hiển thị trình biên soạn cho người dùng.

Để bật hoặc tắt tùy chọn cài đặt ở cấp độ người dùng, một điểm cuối khác có tên custom_user_settings sẽ được sử dụng. Điểm cuối này hỗ trợ các lệnh gọi POST, GET và DELETE.

Các cấu hình tương tự có sẵn cho menu cố định ở cấp độ Trang sẽ được áp dụng ở cấp độ người dùng. Điểm khác biệt chính đó là cần có thông số psid để cho người dùng biết rằng việc ghi đè này sẽ được áp dụng.

LƯU Ý: Quá trình cập nhật menu cố định ở cấp độ người dùng diễn ra theo thời gian thực, trong khi quá trình cập nhật menu cố định ở cấp độ trang có thể mất đến 24 giờ.

Các cài đặt ở cấp độ người dùng được giới hạn tốc độ ở 10 lệnh gọi/người dùng/10 phút.

Ví dụ về yêu cầu POST

Yêu cầu này sẽ ghi đè các tùy chọn cài đặt hiện tại ở cấp độ trang cho người dùng này.

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

Ví dụ về yêu cầu GET

Yêu cầu này sẽ truy xuất các tùy chọn cài đặt hiện tại ở cấp độ trang và người dùng. Nếu không có tùy chọn cài đặt nào ở cấp độ người dùng, chỉ các tùy chọn cài đặt ở cấp độ trang sẽ được trả về.

curl -X GET "https://graph.facebook.com/v21.0/me/custom_user_settings?psid=<PSID>&access_token=<PAGE_ACCESS_TOKEN>"

Kết quả

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

Ví dụ về yêu cầu DELETE

Yêu cầu này sẽ gỡ các cài đặt ở cấp độ người dùng, để lại menu ở cấp độ Trang nếu đã đặt.

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

Vô hiệu hóa menu cố định

Trong một số trường hợp, bạn nên tắt menu cố định cho bot của mình trong Plugin chat. Để thực hiện việc này, hãy thêm "disabled_surfaces": ["CUSTOMER_CHAT_PLUGIN"] khi bạn đặt menu cố định:

Phần tải dữ liệu API Trang cá nhân Messenger mẫu

{
  "persistent_menu":[
    {
      "locale":"default",
      "disabled_surfaces": ["CUSTOMER_CHAT_PLUGIN"],
      "composer_input_disabled": false,      
      "call_to_actions":[
        {
          "title":"My Account",
          "type":"postback",
          "payload":"PAYBILL_PAYLOAD"
        }
      ]
    }
  ]
}

Cách làm tốt nhất

Giống như các nút, các mục menu có thể tạo ra chế độ xem web hoặc yêu cầu đăng lại. Hãy lưu ý rằng menu phụ không được hỗ trợ.

Dùng menu cho các điểm bắt đầu sử dụng chức năng của bot.

Mô tả rõ ràng: menu cho mọi người biết bot của bạn có thể làm gì. Menu cho người dùng biết ngay lập tức những vấn đề họ có thể liên hệ với bot của bạn trong tương lai.

Chọn lọc trình bày các chức năng cốt lõi của bot và cố gắng giới hạn số mục menu ở 5 để mang lại trải nghiệm tốt nhất cho người dùng.

Đừng kỳ vọng menu chứa dữ liệu dành riêng cho người dùng: menu giống nhau đối với tất cả những người sử dụng bot, mặc dù có thể được bản địa hóa.

Không đặt nút ''Menu'' vào menu gửi cho người dùng một tin nhắn có chứa menu nào đó. Chỉ đặt trực tiếp nội dung đó vào menu – mục đích của menu là vậy!

Không đặt các hành động chung chung như ''Khởi động lại'' trong menu.

Không sử dụng thành phần của menu chính cho menu phụ, những thông tin kiểu "chuyên mục" như về điều khoản dịch vụ, chính sách quyền riêng tư hoặc ''bên cung cấp'' mà quên hiển thị chức năng chính của bot.

Hỗ trợ nhà phát triển