В этом документе объясняется, как добавить постоянное меню в интерфейс обмена сообщениями программным путем.
В приложении Messenger from Meta для Android (версии 276 и более поздних) прекращена поддержка вложенных постоянных меню. Пункты вложенных меню на содержащих их страницах на всех платформах (в браузерах, iOS и Android версий 276 и более поздних) будут отображаться в виде одноуровневых списков. Мы считаем, это сделает Messenger ещё удобнее для пользователей. Поддержка вложенных меню будет убрана из API Messenger Profile и API индивидуально настраиваемых параметров пользователей в версии 8.0 API Graph (изменения во всех версиях вступают в силу через 2 года).
Принцип работыПостоянное меню позволяет создавать и отправлять перечень важных сведений о вашей компании, например часы работы, адреса магазинов и предлагаемые товары. Это меню всегда видно пользователю в переписке с вашей компанией в Messenger. Когда пользователь выбирает пункт в меню, на ваш сервер отправляет уведомление Webhooks |
Если задан параметр Команды, он имеет приоритет над постоянным меню.
Для работы постоянного меню должны выполняться следующие условия:
pages_messaging
;Постоянное меню представляет собой ряд кнопок. Поддерживаются следующие кнопки:
web_url
— указывает, что элемент представляет собой кнопку с URL;postback
— указывает, что элемент представляет собой кнопку обратной передачи.Чтобы настроить постоянное меню, отправьте запрос POST
к API Messenger Profile и установите свойство persistent_menu
профиля Messenger вашего бота.
Вместо упраздняемых вложенных меню мы позволяем добавить до 20 кнопок в массиве call_to_actions
для API Graph 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.
При необходимости можно отключить поле для публикаций, чтобы люди могли взаимодействовать с ботом только через постоянное меню. Это пригодится, если бот имеет узкую специализацию или предлагает ограниченные возможности.
Чтобы отключить поле для публикаций, задайте параметр "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"
}
]
}
]
}
Как и кнопки, элементы меню могут запускать веб-представление или обратную передачу. Помните, что меню второго уровня не поддерживаются.
Используйте меню в качестве точек входа в функции бота.
Подробно расскажите людям, что может делать ваш бот. Так пользователи сразу смогут понять, чем им поможет бот.
Выберите основные функции своего бота и постарайтесь, чтобы в меню не было более пяти пунктов.
Меню не может содержать данные для конкретного человека. Оно выглядит одинаково для всех (однако его можно локализовать).
Не добавляйте кнопку "Меню", которая отправляет человеку сообщение с меню. Просто добавьте в меню нужный контент.
Не добавляйте в меню общие действия, например "Перезапустить".
Не добавляйте в основное меню второстепенную информацию, например сведения о компании, условия обслуживания, политику конфиденциальности или "От...", вместо основных функций бота.