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

Постоянное меню позволяет создать и отправить меню основных функций вашего бизнеса, таких как часы работы, расположение магазинов и товары. Оно всегда будет видно во время общения человека с вашей компанией в Messenger.

Поддерживаемые кнопки:

Постоянное меню состоит из набора кнопок. В постоянном меню поддерживаются следующие типы кнопок:

● Кнопки URL (web_url)
● Кнопки обратного вызова (postback)

Как добавить постоянное меню для конкретной страницы

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 - обязательный ключ, определяющий массив кнопок, которые будут отображаться в меню по умолчанию, независимо от локализации пользователя.
Значение должно быть массивом кнопок. Каждая кнопка описывается как отдельный массив в следующем формате:
["тип_кнопки", "Текст кнопки", "Текст обратного вызова, отправляемый боту"]

Типы кнопок и их описание:
&#xNAN;- кнопка обратного вызова:
["postback", "Текст кнопки", "Текст обратного вызова, отправляемый боту"]
&#xNAN;- кнопка URL:
["web_url", "Текст ссылки", "https://example.com"]

Как настроить меню на основе локализации пользователя

Вы можете настроить кнопки для разных регионов, добавив дополнительные ключи в словарь кнопок, соответствующие определенным локалям.

Например, чтобы добавить кнопки для английской локали:

buttons = {"default": [["postback", "Кнопка 1", "callback_text 1"], ["postback", "Кнопка 2", "callback_text 2"], ["web_url", "Ссылка на сайт", "https://mavibot.ai/"]], "en_EN": [["postback", "Кнопка", "callback_text 1"], ["postback", "Кнопка 2", "callback_text 2"], ["web_url", "Ссылка", "https://mavibot.ai/"]]}

Примечание: В этом случае ключ представляет собой локаль, для которой будут отображаться кнопки.

Поддерживаемые локали:
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

Как добавить постоянное меню для конкретного пользователя

Для этого установите третий параметр функции fb_set_persistent_menu в 1, например: response = fb_set_persistent_menu('group_id', buttons, 1)

Это меню будет доступно пользователю, для которого была вызвана функция.

ПРИМЕЧАНИЕ . Обновление постоянного меню на уровне пользователя вступает в силу в реальном времени.

Однако обновление постоянного меню на уровне страницы может занять до 24 часов.

Настройки на уровне пользователя ограничены частотой 10 вызовов на пользователя каждые 10 минут.

Как отключить все способы связи, кроме постоянного меню

Чтобы сделать постоянное меню единственным способом взаимодействия пользователя с вашим ботом Messenger, необходимо отключить композер.

Зачем это делать?

Это полезно, когда ваш бот предназначен для конкретной цели или предопределенного набора опций.

Как это сделать?

Чтобы отключить композер, передайте 1 в качестве четвертого параметра функции:

чтобы отключить композер на уровне страницы (для всех пользователей):
response = fb_set_persistent_menu('group_id', buttons, '', 1)
чтобы отключить композер для пользователя, для которого вызывается функция:
response = fb_set_persistent_menu('group_id', buttons, 1, 1)
где:
group_id - ID бота Facebook (можно найти в меню "Канал" MaviBot)
buttons - словарь, содержащий кнопки

В случае успеха функция возвращает:
{"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", "Кнопка", "callback_text 1"], ["postback", "Кнопка 2", "callback_text 2"], ["web_url", "Ссылка", "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", "Кнопка", "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)

Добавление меню для пользователя, который вошел в блок, вызывающий функцию, и установка этого меню как единственного способа связи для всех пользователей:

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"