Что такое постоянное меню?

Постоянное меню позволяет отображать постоянное меню с основными действиями вашего бизнеса, такими как часы работы, адреса магазинов, товары или другие часто используемые опции. Меню всегда видно во время разговора с вашим ботом 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