¿Qué es un menú persistente?
Un menú persistente te permite crear y enviar un menú con las funciones principales de tu negocio, como horarios de atención, ubicaciones de tiendas y productos. Siempre estará visible durante la conversación de una persona con tu empresa en Messenger.

Botones compatibles:
El menú persistente consta de un conjunto de botones. En el menú persistente se admiten los siguientes tipos de botones:
● Botones de URL (web_url)
● Botones de devolución de llamada (postback)
Cómo agregar un menú persistente para una página específica
response = fb_set_persistent_menu("group_id", buttons), donde:
group_id - ID del bot de Facebook (se puede encontrar en el menú "Canal" de MaviBot)
buttons - un diccionario que contiene los botones
Ejemplo de cómo estructurar el diccionario de botones:
buttons = {"default": [["postback", "Botón 1", "texto_callback 1"], ["postback", "Botón 2", "texto_callback 2"], ["web_url", "Enlace del sitio", "https://mavibot.ai/"]]}
default - una clave obligatoria que define el array de botones que se mostrarán en el menú por defecto, independientemente de la localización del usuario.
El valor debe ser un array de botones. Cada botón se describe como un array separado en el siguiente formato:
["tipo_boton", "Texto de visualización del botón", "Texto de callback enviado al bot"]
Tipos de botones y su descripción:
&#xNAN;- botón de devolución de llamada:
["postback", "Texto de visualización del botón", "Texto de callback enviado al bot"]
&#xNAN;- botón de URL:
["web_url", "Texto de visualización del enlace", "https://example.com"]
Cómo configurar el menú según la localización del usuario
Puedes configurar botones para diferentes regiones agregando claves adicionales al diccionario de botones correspondientes a configuraciones regionales específicas.
Por ejemplo, para agregar botones para la configuración regional en inglés:
buttons = {"default": [["postback", "Botón 1", "texto_callback 1"], ["postback", "Botón 2", "texto_callback 2"], ["web_url", "Enlace del sitio", "https://mavibot.ai/"]], "en_EN": [["postback", "Botón", "texto_callback 1"], ["postback", "Botón 2", "texto_callback 2"], ["web_url", "Enlace", "https://mavibot.ai/"]]}
Nota: En este caso, la clave representa la configuración regional para la cual se mostrarán los botones.
Configuraciones regionales compatibles:
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
Cómo agregar un menú persistente para un usuario específico
Para hacer esto, establece el tercer parámetro de la función fb_set_persistent_menu en 1, de la siguiente manera: response = fb_set_persistent_menu('group_id', buttons, 1)
Este menú estará disponible para el usuario para quien se llamó la función.
NOTA . Actualizar un menú persistente a nivel de usuario tiene efecto en tiempo real.
Sin embargo, actualizar un menú persistente a nivel de página puede tardar hasta 24 horas.La configuración a nivel de usuario está limitada a una tasa de 10 llamadas por usuario cada 10 minutos.
Cómo deshabilitar todas las comunicaciones excepto el menú persistente
Para que el menú persistente sea la única forma en que un usuario pueda interactuar con tu bot de Messenger, debes deshabilitar el compositor.
¿Por qué harías esto?
Es útil cuando tu bot está diseñado para un propósito específico o un conjunto predefinido de opciones.
¿Cómo hacerlo?
Para deshabilitar el compositor, pasa 1 como cuarto parámetro en la función:
para deshabilitar el compositor a nivel de página (para todos los usuarios):
response = fb_set_persistent_menu('group_id', buttons, '', 1)
para deshabilitar el compositor para el usuario para quien se llama la función:
response = fb_set_persistent_menu('group_id', buttons, 1, 1)
donde:
group_id - ID del bot de Facebook (se puede encontrar en el menú "Canal" de MaviBot)
buttons - un diccionario que contiene los botones
Si tiene éxito, la función devuelve:
{"result":"success"}
De lo contrario, devuelve una descripción del error.
'Error parse buttons data' - error en el diccionario de botones
{"error":{"message":"(#100) param persistent_menu[0][call_to_actions] must be non-empty.","type":"OAuthException","code":100,"fbtrace_id":"AJtVczu7TEJJxbMfnO"}}
EJEMPLOS:
Agregar un menú para todos los usuarios:
buttons = {"default": [["postback", "Button 1", "callback_text 1"], ["postback", "Button 2", "callback_text 2"], ["web_url", "Site link", "https://mavibot.ai/"]], "en_EN": [["postback", "Button", "callback_text 1"], ["postback", "Button 2", "callback_text 2"], ["web_url", "Link", "https://mavibot.ai/"]]}
response = fb_set_persistent_menu('123456789', buttons)
Agregar un menú para todos los usuarios y hacer que este menú sea el único método de comunicación para todos:
buttons = {"default": [["postback", "Button 1", "callback_text 1"], ["postback", "Button 2", "callback_text 2"], ["web_url", "Site link", "https://mavibot.ai/"]], "en_EN": [["postback", "Button", "callback_text 1"], ["postback", "Button 2", "callback_text 2"], ["web_url", "Link", "https://mavibot.ai/"]]}
response = fb_set_persistent_menu('123456789', buttons, '', 1)
Agregar un menú para el usuario que ingresó al bloque que llama a la función:
buttons = {"default": [["postback", "Button 1", "callback_text 1"], ["postback", "Button 2", "callback_text 2"], ["web_url", "Site link", "https://mavibot.ai/"]]}
response = fb_set_persistent_menu('123456789', buttons, 1)
Agregar un menú para el usuario que ingresó al bloque que llama a la función, y hacer que este menú sea el único método de comunicación para todos los usuarios:
buttons = {"default": [["postback", "Button 1", "callback_text 1"], ["postback", "Button 2", "callback_text 2"], ["web_url", "Site link", "https://mavibot.ai/"]]}
response = fb_set_persistent_menu('123456789', buttons, 1, 1)
Eliminar el menú persistente a nivel de página (para todos los usuarios):
response = fb_delete_persistent_menu('group_id')
Si tiene éxito, la función devuelve:
{"result":"success"}
De lo contrario, devuelve una descripción del error.
'Bot not found'
Eliminar el menú persistente a nivel de usuario:
response = fb_delete_persistent_menu('group_id', 1)
Si tiene éxito, la función devuelve:
{"result":"success"}
De lo contrario, devuelve una descripción del error.
"Bot not found"


