¿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