Что такое постоянное меню?
Постоянное меню позволяет отображать постоянное меню с основными действиями вашего бизнеса, такими как часы работы, адреса магазинов, товары или другие часто используемые опции. Меню всегда видно во время разговора с вашим ботом Facebook Messenger.

Поддерживаемые типы кнопок
Постоянное меню поддерживает следующие типы кнопок:
-
Кнопки-ссылки (
web_url) -
Кнопки обратного вызова (
postback)
Создание постоянного меню
Используйте следующую функцию для создания постоянного меню для страницы Facebook:
response = fb_set_persistent_menu(group_id, buttons)
Параметры
| Параметр | Описание |
|---|---|
| group_id | ID бота Facebook. Вы можете найти его в разделе Канал вашего проекта MaviBot. |
| buttons | Словарь, описывающий кнопки меню. |
Структура словаря кнопок
buttons = {
"default": [
["postback", "Кнопка 1", "callback_text 1"],
["postback", "Кнопка 2", "callback_text 2"],
["web_url", "Веб-сайт", "https://mavibot.ai/"]
]
}
Ключ default обязателен. Он определяет кнопки, отображаемые для пользователей, чья локаль не имеет собственного меню.
Каждая кнопка описывается массивом:
["button_type", "Текст кнопки", "Значение"]
Поддерживаемые форматы кнопок
Кнопка обратного вызова
["postback", "Текст кнопки", "callback_text"]
| Значение | Описание |
|---|---|
| postback | Тип кнопки. |
| Текст кнопки | Текст, отображаемый на кнопке. |
| callback_text | Текст, отправляемый боту при нажатии кнопки. |
Кнопка-ссылка
["web_url", "Текст кнопки", "https://example.com"]
| Значение | Описание |
|---|---|
| web_url | Тип кнопки. |
| Текст кнопки | Текст, отображаемый на кнопке. |
| URL | Веб-сайт, открывающийся при нажатии кнопки. |
Локализация
Вы можете отображать разные меню в зависимости от локали пользователя.
Просто добавьте дополнительные ключи в словарь кнопок.
Пример:
buttons = {
"default": [
["postback", "Кнопка 1", "callback_text 1"],
["postback", "Кнопка 2", "callback_text 2"],
["web_url", "Веб-сайт", "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
Создание постоянного меню для конкретного пользователя
Чтобы создать меню, видимое только тому пользователю, для которого вызывается функция, передайте 1 в качестве третьего параметра.
response = fb_set_persistent_menu(group_id, buttons, 1)
Примечание
Постоянные меню на уровне пользователя обновляются немедленно.
Постоянные меню на уровне страницы могут обновляться до 24 часов.
Facebook также ограничивает обновления меню на уровне пользователя до 10 запросов на пользователя каждые 10 минут.
Отключение поля ввода
Вы можете отключить поле ввода Messenger, чтобы пользователи могли взаимодействовать с ботом только через постоянное меню.
Это полезно, когда бот должен разрешать только предопределенные действия.
Отключение поля ввода для всех пользователей
response = fb_set_persistent_menu(group_id, buttons, "", 1)
Отключение поля ввода для конкретного пользователя
response = fb_set_persistent_menu(group_id, buttons, 1, 1)
Параметры
| Параметр | Описание |
|---|---|
| group_id | ID бота Facebook. |
| buttons | Словарь кнопок. |
| 3-й параметр | Установите значение 1, чтобы применить меню только к текущему пользователю. Оставьте пустым, чтобы применить к странице. |
| 4-й параметр | Установите значение 1, чтобы отключить поле ввода Messenger. |
Возвращаемые значения
Если функция выполнена успешно:
{"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", "Кнопка 1", "callback_text 1"],
["postback", "Кнопка 2", "callback_text 2"],
["web_url", "Веб-сайт", "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)
Создание меню для всех пользователей и отключение поля ввода
buttons = {
"default": [
["postback", "Кнопка 1", "callback_text 1"],
["postback", "Кнопка 2", "callback_text 2"],
["web_url", "Веб-сайт", "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", "Кнопка 1", "callback_text 1"],
["postback", "Кнопка 2", "callback_text 2"],
["web_url", "Веб-сайт", "https://mavibot.ai/"]
]
}
response = fb_set_persistent_menu("123456789", buttons, 1)
Создание пользовательского меню и отключение поля ввода
buttons = {
"default": [
["postback", "Кнопка 1", "callback_text 1"],
["postback", "Кнопка 2", "callback_text 2"],
["web_url", "Веб-сайт", "https://mavibot.ai/"]
]
}
response = fb_set_persistent_menu("123456789", buttons, 1, 1)
Удаление постоянного меню
Удаление меню на уровне страницы
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