En este documento se muestra cómo añadir el menú persistente a tu experiencia de mensajes mediante programación.
Messenger from Meta para Android (versión 276 y posteriores) ya no admitirá los menús persistentes anidados. Las páginas que contengan elementos de menú anidados se representarán como listas sin formato en todas las superficies (web, iOS y Android [versión 276 y posteriores]). Creemos que esto mejorará la experiencia de los usuarios en Messenger. La compatibilidad con los menús anidados se eliminará de la API de perfiles de Messenger y la API de configuración de usuario personalizada en la versión 8.0 de la API Graph, con un cambio de última hora de dos años en todas las versiones.
FuncionamientoEl menú persistente te permite crear y enviar un menú de las funciones principales de tu empresa, como el horario de apertura, las ubicaciones de las tiendas y los productos, y está siempre visible en la conversación de Messenger de un usuario con tu empresa. Cuando una persona hace clic en un elemento del menú, se envía una notificación del webhook |
Si hay comandos establecidos, tendrán prioridad sobre el menú persistente.
Para que se muestre el menú persistente, se deben cumplir las condiciones siguientes:
pages_messaging
.El menú persistente está formado por una matriz de botones. Los tipos de botones siguientes se admiten en el menú persistente:
web_url
: especifica que el elemento es un botón de URL.postback
: especifica que el elemento es un botón de postback.Para configurar el menú persistente, envía una solicitud POST
a la API de perfiles de Messenger para establecer la propiedad persistent_menu
del perfil de Messenger del bot.
Como reemplazo del menú de nivel anidado obsoleto, se permiten hasta 20 botones en la matriz de call_to_actions
para la API Graph, versión 8.0 y posteriores.
{
"persistent_menu": [
{
"locale": "default",
"composer_input_disabled": false,
"call_to_actions": [
{
"type": "postback",
"title": "Talk to an agent",
"payload": "CARE_HELP"
},
{
"type": "postback",
"title": "Outfit suggestions",
"payload": "CURATION"
},
{
"type": "web_url",
"title": "Shop now",
"url": "https://www.originalcoastclothing.com/",
"webview_height_ratio": "full"
}
]
}
]
}
Esta función se ha retirado en la versión 8.0 y posteriores.
Puedes desactivar el editor si quieres que el menú persistente sea la única forma de que los usuarios interactúen con el bot de Messenger. Resulta útil si el bot tiene un propósito o un conjunto de opciones muy específicos.
Para hacerlo, establece "composer_input_disabled":true
cuando crees el menú persistente.
Puedes proporcionar el texto de los botones predeterminado y localizado para el menú persistente, que se mostrará según la configuración regional del usuario.
Para hacerlo, especifica un objeto independiente en la matriz persistent_menu
de cada configuración regional. Para especificar la configuración regional de cada objeto, establece la propiedad locale
en una configuración regional admitida:
{
"locale":"default",
"call_to_actions":[...]
},
{
"locale: "zh_CN",
"call_to_actions":[...]
}
El 4 de diciembre de 2019 realizamos mejoras en el menú persistente para admitir los cambios dinámicos a fin de personalizar aún más la experiencia de las conversaciones.
Puedes reemplazar el menú persistente del nivel de página con una configuración de nivel de usuario. De este modo, tu aplicación puede controlar de forma dinámica lo siguiente:
Para activar o desactivar la configuración de nivel de usuario, se utiliza otro extremo denominado custom_user_settings
. Este extremo admite llamadas POST, GET y DELETE.
Las mismas configuraciones disponibles para el menú persistente de nivel de página se aplican al nivel de usuario. La principal diferencia es que se necesita un parámetro psid
para indicar el usuario al que se aplica este reemplazo.
NOTA: El menú persistente de nivel de usuario se actualiza en tiempo real, mientras que el menú persistente de nivel de página puede tardar 24 horas en actualizarse.
La configuración de nivel de usuario presenta una limitación de frecuencia de 10 llamadas por usuario cada 10 minutos.
Esta solicitud reemplazará la configuración de nivel de página actual de este usuario.
curl -X POST -H "Content-Type: application/json" -d '{
"psid": "<PSID>",
"persistent_menu": [
{
"locale": "default",
"composer_input_disabled": false,
"call_to_actions": [
{
"type": "postback",
"title": "Talk to an agent",
"payload": "CARE_HELP"
},
{
"type": "postback",
"title": "Outfit suggestions",
"payload": "CURATION"
},
{
"type": "web_url",
"title": "Shop now",
"url": "https://www.originalcoastclothing.com/",
"webview_height_ratio": "full"
}
]
}
]
}' "https://graph.facebook.com/v21.0
/me/custom_user_settings?access_token=<PAGE_ACCESS_TOKEN>"
Esta solicitud recuperará la configuración de nivel de página y usuario actual. Si no existe ninguna configuración de nivel de usuario, solo se devolverá la configuración de nivel de página.
curl -X GET "https://graph.facebook.com/v21.0
/me/custom_user_settings?psid=<PSID>&access_token=<PAGE_ACCESS_TOKEN>"
Resultado
{ "data": [ { "user_level_persistent_menu": [ { "locale": "default", "composer_input_disabled": false, "call_to_actions": [ { "type": "postback", "title": "Talk to an agent", "payload": "CARE_HELP" }, { "type": "postback", "title": "Outfit suggestions", "payload": "CURATION" }, { "type": "web_url", "title": "Shop now", "url": "https://www.originalcoastclothing.com/", "webview_height_ratio": "full" } ] } ], "page_level_persistent_menu": [ Original Page Menu... ] } ] }
Esta solicitud eliminará la configuración de nivel de usuario y mantendrá el menú de nivel de página si está establecido.
curl -X DELETE 'https://graph.facebook.com/v21.0
/me/custom_user_settings?psid=<PSID>¶ms=[%22persistent_menu%22]&access_token=<PAGE_ACCESS_TOKEN>'
Puede que haya casos en que sea preferible desactivar el menú persistente para el bot en el plugin de chat. Para hacerlo, añade "disabled_surfaces": ["CUSTOMER_CHAT_PLUGIN"]
al configurar el menú persistente:
{
"persistent_menu":[
{
"locale":"default",
"disabled_surfaces": ["CUSTOMER_CHAT_PLUGIN"],
"composer_input_disabled": false,
"call_to_actions":[
{
"title":"My Account",
"type":"postback",
"payload":"PAYBILL_PAYLOAD"
}
]
}
]
}
Del mismo modo que los botones, los elementos de menú pueden producir una vista web o un postback. Ten en cuenta que el menú de segundo nivel no se admite.
Utiliza el menú para los puntos de entrada a la funcionalidad del bot.
Sé descriptivo: el menú permite que los usuarios sepan qué puede hacer el bot. Permite a los usuarios conocer al instante qué podrán hacer con el bot en el futuro.
Representa de manera selectiva las funciones principales del bot e intenta limitar los elementos de menú a cinco para ofrecer la mejor experiencia de usuario.
No esperes que el menú contenga datos específicos del usuario: es igual para todos los usuarios del bot, aunque se puede localizar.
No incluyas en el menú un botón "Menú" para enviar al usuario un mensaje que contenga un menú. Simplemente, coloca el contenido directamente en el menú: es justamente para eso.
No incluyas acciones genéricas como "Reiniciar" en el menú.
No utilices el espacio del menú principal para información secundaria de estilo "colofón", como las condiciones del servicio, la política de privacidad o la expresión "con la tecnología de", de modo que pases por alto la exposición de la funcionalidad principal del bot.