¿Qué es un Menú Persistente?
Un Menú Persistente te permite mostrar un menú permanente con las acciones principales de tu negocio, como horarios de atención, ubicaciones de tiendas, productos u otras opciones de uso frecuente. El menú siempre está visible durante una conversación con tu bot de Facebook Messenger.

Tipos de Botones Soportados
El Menú Persistente soporta los siguientes tipos de botones:
-
Botones URL (
web_url) -
Botones de devolución de llamada (
postback)
Crear un Menú Persistente
Usa la siguiente función para crear un Menú Persistente para una página de Facebook:
response = fb_set_persistent_menu(group_id, buttons)
Parámetros
| Parámetro | Descripción |
|---|---|
| group_id | ID del Bot de Facebook. Puedes encontrarlo en la sección Canal de tu proyecto MaviBot. |
| buttons | Diccionario que describe los botones del menú. |
Estructura del Diccionario de Botones
buttons = {
"default": [
["postback", "Botón 1", "texto_de_devolución_1"],
["postback", "Botón 2", "texto_de_devolución_2"],
["web_url", "Sitio web", "https://mavibot.ai/"]
]
}
La clave default es obligatoria. Define los botones mostrados para los usuarios cuya configuración regional no tiene un menú personalizado.
Cada botón se describe mediante un arreglo:
["tipo_de_botón", "Texto del botón", "Valor"]
Formatos de Botones Soportados
Botón de Devolución de Llamada
["postback", "Texto del botón", "texto_de_devolución"]
| Valor | Descripción |
|---|---|
| postback | Tipo de botón. |
| Texto del botón | Texto mostrado en el botón. |
| texto_de_devolución | Texto enviado al bot cuando se hace clic en el botón. |
Botón URL
["web_url", "Texto del botón", "https://ejemplo.com"]
| Valor | Descripción |
|---|---|
| web_url | Tipo de botón. |
| Texto del botón | Texto mostrado en el botón. |
| URL | Sitio web que se abre al hacer clic en el botón. |
Localización
Puedes mostrar diferentes menús según la configuración regional del usuario.
Simplemente agrega claves adicionales al diccionario de botones.
Ejemplo:
buttons = {
"default": [
["postback", "Botón 1", "texto_de_devolución_1"],
["postback", "Botón 2", "texto_de_devolución_2"],
["web_url", "Sitio web", "https://mavibot.ai/"]
],
"en_EN": [
["postback", "Botón", "texto_de_devolución_1"],
["postback", "Botón 2", "texto_de_devolución_2"],
["web_url", "Sitio web", "https://mavibot.ai/"]
]
}
En este ejemplo, los usuarios con la configuración regional en_EN recibirán un menú diferente.
Configuraciones Regionales Soportadas
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
Crear un Menú Persistente para un Usuario Específico
Para crear un menú que sea visible solo para el usuario para el cual se llama la función, pasa 1 como tercer parámetro.
response = fb_set_persistent_menu(group_id, buttons, 1)
Nota
Los Menús Persistentes a nivel de usuario se actualizan inmediatamente.
Los Menús Persistentes a nivel de página pueden tardar hasta 24 horas en actualizarse.
Facebook también limita las actualizaciones de menú a nivel de usuario a 10 solicitudes por usuario cada 10 minutos.
Deshabilitar el Compositor
Puedes deshabilitar el compositor de Messenger para que los usuarios interactúen con el bot solo a través del Menú Persistente.
Esto es útil cuando el bot solo debe permitir acciones predefinidas.
Deshabilitar el Compositor para Todos los Usuarios
response = fb_set_persistent_menu(group_id, buttons, "", 1)
Deshabilitar el Compositor para un Usuario Específico
response = fb_set_persistent_menu(group_id, buttons, 1, 1)
Parámetros
| Parámetro | Descripción |
|---|---|
| group_id | ID del Bot de Facebook. |
| buttons | Diccionario de botones. |
| 3er parámetro | Establécelo en 1 para aplicar el menú solo al usuario actual. Déjalo vacío para aplicarlo a la página. |
| 4to parámetro | Establécelo en 1 para deshabilitar el compositor de Messenger. |
Valores de Retorno
Si la función se completa exitosamente:
{"result":"success"}
De lo contrario, se devuelve una descripción del error.
Ejemplo:
Error al analizar los datos de los botones
o
{
"error": {
"message": "(#100) param persistent_menu[0][call_to_actions] must be non-empty.",
"type": "OAuthException",
"code": 100,
"fbtrace_id": "AJtVczu7TEJJxbMfnO"
}
}
Ejemplos
Crear un Menú para Todos los Usuarios
buttons = {
"default": [
["postback", "Botón 1", "texto_de_devolución_1"],
["postback", "Botón 2", "texto_de_devolución_2"],
["web_url", "Sitio web", "https://mavibot.ai/"]
],
"en_EN": [
["postback", "Botón", "texto_de_devolución_1"],
["postback", "Botón 2", "texto_de_devolución_2"],
["web_url", "Sitio web", "https://mavibot.ai/"]
]
}
response = fb_set_persistent_menu("123456789", buttons)
Crear un Menú para Todos los Usuarios y Deshabilitar el Compositor
buttons = {
"default": [
["postback", "Botón 1", "texto_de_devolución_1"],
["postback", "Botón 2", "texto_de_devolución_2"],
["web_url", "Sitio web", "https://mavibot.ai/"]
],
"en_EN": [
["postback", "Botón", "texto_de_devolución_1"],
["postback", "Botón 2", "texto_de_devolución_2"],
["web_url", "Sitio web", "https://mavibot.ai/"]
]
}
response = fb_set_persistent_menu("123456789", buttons, "", 1)
Crear un Menú para el Usuario Actual
buttons = {
"default": [
["postback", "Botón 1", "texto_de_devolución_1"],
["postback", "Botón 2", "texto_de_devolución_2"],
["web_url", "Sitio web", "https://mavibot.ai/"]
]
}
response = fb_set_persistent_menu("123456789", buttons, 1)
Crear un Menú de Usuario y Deshabilitar el Compositor
buttons = {
"default": [
["postback", "Botón 1", "texto_de_devolución_1"],
["postback", "Botón 2", "texto_de_devolución_2"],
["web_url", "Sitio web", "https://mavibot.ai/"]
]
}
response = fb_set_persistent_menu("123456789", buttons, 1, 1)
Eliminar un Menú Persistente
Eliminar el Menú a Nivel de Página
response = fb_delete_persistent_menu(group_id)
Respuesta exitosa:
{"result":"success"}
Posible error:
Bot no encontrado
Eliminar un Menú a Nivel de Usuario
response = fb_delete_persistent_menu(group_id, 1)
Respuesta exitosa:
{"result":"success"}
Posible error:
Bot no encontrado