El menú persistente

En este documento se muestra cómo añadir el menú persistente a tu experiencia de mensajes mediante programación.

Menú persistente anidado

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.

Funcionamiento

El 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 postback a tu servidor. La notificación del webhook contiene información acerca de los elementos seleccionados y de los usuarios responsables de ello. Esta acción de selección de elementos inicia el intervalo de mensajes estándar. Tienes 24 horas para responder al usuario.

Si hay comandos establecidos, tendrán prioridad sobre el menú persistente.

Requisitos

Para que se muestre el menú persistente, se deben cumplir las condiciones siguientes:

  • El usuario debe ejecutar Messenger, versión 106 o posteriores, en iOS o Android.
  • La página de Facebook a la que se suscribe el bot de Messenger debe estar publicada.
  • El bot de Messenger debe estar definido como "público" en la configuración de la aplicación.
  • El bot de Messenger debe tener el permiso pages_messaging.
  • El bot de Messenger debe tener un botón "Empezar" definido.

Botones admitidos

El menú persistente está formado por una matriz de botones. Los tipos de botones siguientes se admiten en el menú persistente:

Configuración del menú persistente

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"
                }
            ]
        }
    ]
}

Menú persistente anidado

Esta función se ha retirado en la versión 8.0 y posteriores.

Desactivación del editor

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.

Localización

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":[...]
}

Menú de nivel de usuario

Nueva función

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:

  • Los botones de llamada a la acción en el menú del usuario.
  • La visibilidad del editor para el usuario.

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.

Ejemplo de solicitud POST

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>"

Ejemplo de solicitud GET

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...
        ]  
      }
  ]
}

Ejemplo de solicitud DELETE

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>&params=[%22persistent_menu%22]&access_token=<PAGE_ACCESS_TOKEN>'

Deshabilitar el menú persistente

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:

Carga útil de la API de perfiles de Messenger de ejemplo

{
  "persistent_menu":[
    {
      "locale":"default",
      "disabled_surfaces": ["CUSTOMER_CHAT_PLUGIN"],
      "composer_input_disabled": false,      
      "call_to_actions":[
        {
          "title":"My Account",
          "type":"postback",
          "payload":"PAYBILL_PAYLOAD"
        }
      ]
    }
  ]
}

Prácticas recomendadas

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.

Ayuda para desarrolladores