El menú persistente

En estos documentos, se muestra cómo añadir programáticamente el menú persistente a tu experiencia de mensajería.

Menú persistente anidado

Messenger from Meta para Android (versión 276 o posterior) dejará de ser compatible con los menús persistentes anidados. Las páginas que contienen elementos de menú anidados no se renderizarán como listas simples en todas las superficies (web, iOS y la versión 276 o posterior de Android). Creemos que esto optimizará aún más la experiencia de las personas en Messenger. Se eliminará la compatibilidad de los menús anidados de la API de perfiles de Messenger y de la API de configuración de usuario de cliente en la versión 8.0 de la API Graph, con un cambio radical para todas las versiones en 2 años.

Cómo funciona

El menú persistente te permite crear y enviar un menú con las principales características de tu negocio, como horas de operación, ubicaciones de las tiendas y productos. Este menú está siempre visible en la conversación de Messenger de una persona con tu negocio.

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 incluirá información sobre las modificaciones realizadas y la persona que las introdujo. Esta acción de selección de elementos abre una ventana de mensajes estándar. Dispones de 24 horas para responder a la persona.

Si se configuran comandos, estos tendrán prioridad sobre el menú persistente.

Requisitos

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

  • La persona debe tener la versión 106 (o posterior) de Messenger en iOS o Android.
  • La página de Facebook a la que está suscrito el bot debe estar publicada.
  • El bot de Messenger debe estar configurado como "Público" en la configuración de la app.
  • El bot de Messenger debe tener el permiso pages_messaging.
  • El bot de Messenger debe tener el botón "Empezar" configurado.

Botones admitidos

El menú persistente se compone de una matriz de botones. Se admiten los siguientes tipos de botones en el menú persistente:

Configurar el menú persistente

Para configurar el menú persistente, envía una solicitud POST a la API de perfiles de Messenger para configurar la propiedad persistent_menu del perfil de Messenger de tu bot.

Como reemplazo del menú de nivel anidado obsoleto, permitimos utilizar hasta 20 botones en la matriz call_to_actions para la versión 8.0 o posterior de la API Graph.

{
    "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 opción quedó obsoleta en la versión 8.0 o posterior.

Desactivar el editor

También tienes la opción de desactivar el editor para que el menú persistente sea la única manera que tenga el usuario de interactuar con tu bot de Messenger. Esto es útil si tu bot tiene un propósito o un conjunto de opciones muy específicos.

Para ello, configura "composer_input_disabled":true cuando crees el menú persistente.

Localización

Puedes usar texto predeterminado o localizado en los botones del menú persistente, que se mostrará según la configuración regional de las personas.

Para hacerlo, especifica otro objeto en la matriz persistent_menu para la configuración regional. A fin de especificar la configuración regional de cada objeto, establece un idioma admitido para la propiedad locale:

{
  "locale":"default",
  "call_to_actions":[...]
},
{
  "locale: "zh_CN",
  "call_to_actions":[...]
}

Menú de nivel del usuario

Nueva función

El 4 de diciembre de 2019 introdujimos mejoras al menú persistente para ayudar a los cambios dinámicos en el nivel del usuario a fin de seguir personalizando la experiencia de conversación.

Puedes reemplazar el menú persistente en el nivel de la página con una configuración de nivel del usuario, lo que permite que tu app controle lo siguiente de manera dinámica:

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

Para activar o desactivar la configuración de nivel del usuario, se utiliza un punto de conexión diferente denominado custom_user_settings. Este punto de conexión admite llamadas POST, GET y DELETE.

Las mismas configuraciones disponibles para el menú persistente de nivel de la página se aplican al nivel del usuario. La principal diferencia es que se necesita un parámetro psid para indicar el usuario al que se aplica este reemplazo.

NOTA: La actualización del menú persistente de nivel del usuario se efectúa en tiempo real, mientras que la actualización del menú persistente de nivel de la página puede demorar hasta 24 horas.

La configuración del nivel del usuario tiene un límite de frecuencia de 10 llamadas por usuario durante 10 minutos.

Ejemplo de solicitud POST

Sobrescribirá la configuración de nivel de la página actual para 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/v19.0/me/custom_user_settings?access_token=<PAGE_ACCESS_TOKEN>"

Ejemplo de solicitud GET

Recuperará la configuración actual de nivel de la página y del usuario. Si no existe una configuración de nivel del usuario, solo se devolverán las del nivel de la página.

curl -X GET "https://graph.facebook.com/v19.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

Eliminará la configuración de nivel del usuario, pero dejará el menú de nivel de la página, siempre que se encuentre configurado.

curl -X DELETE 'https://graph.facebook.com/v19.0/me/custom_user_settings?psid=<PSID>&params=[%22persistent_menu%22]&access_token=<PAGE_ACCESS_TOKEN>'

Desactivación del menú persistente

En algunos casos, puede ser preferible desactivar el menú persistente del bot en el plugin de chat. Para hacerlo, agrega "disabled_surfaces": ["CUSTOMER_CHAT_PLUGIN"] cuando configures el menú persistente:

Ejemplo de la carga de la API de perfiles de Messenger

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

Al igual que los botones, los elementos del menú pueden generar una vista web o un postback. Ten en cuenta que no se admiten menús de segundo nivel.

Usa el menú para crear puntos de entrada a las funciones de tu bot.

Sé descriptivo: el menú brinda a las personas información sobre lo que puede hacer tu bot. De esta manera, los usuarios pueden saber inmediatamente para qué pueden contactar a tu bot en el futuro.

Sé selectivo a la hora de mostrar las funciones principales de tu bot: limita los elementos del menú a 5 para ofrecer la mejor experiencia de usuario.

No esperes que el menú contenga datos específicos del usuario, ya que, si bien se puede localizar, será el mismo para todas las personas que usen tu bot.

No coloques un botón "Menú" en el menú que envíe al usuario un mensaje que contenga un menú. Coloca directamente el contenido en el menú; esa es la finalidad.

No agregues acciones genéricas (como "Reiniciar") en el menú.

No uses el espacio destacado del menú para información secundaria o de colofón, como las condiciones del servicio, la política de privacidad o información sobre ti o sobre la tecnología que utilizas. No descuides la explicación de las funciones principales de tu bot.

Ayuda para desarrolladores