Menu persistente

Este documento mostra como adicionar o menu persistente à sua experiência de mensagem de forma programática.

Menu persistente aninhado

O app Messenger para Android (v276 e superiores) não será mais compatível com menus persistentes aninhados. As Páginas que tiverem itens de menu aninhado serão renderizadas como listas simples em todas as plataformas (web, iOS e Android v276 e superiores). Acreditamos que as pessoas terão uma experiência ainda melhor no Messenger dessa forma. O suporte a menus aninhados será removido da API do Perfil do Messenger e da API de Configurações Personalizadas de Usuário na Graph API v8.0, com uma alteração disruptiva de dois anos em todas as versões.

Como funciona

Com o menu persistente, é possível criar e enviar um menu com informações importantes (como horário de funcionamento, endereços de lojas e produtos), que fica sempre visível nas conversas do Messenger com sua empresa.

Quando uma pessoa clica em um item no menu, você recebe uma notificação de webhook postback. A notificação contém informações sobre o item selecionado e o responsável. Essa ação abre a janela de mensagens padrão de 24 horas.

Se definidos, os comandos terão prioridade sobre o menu persistente.

Requisitos

Estas são as condições para que o menu persistente apareça:

  • A pessoa precisa estar executando o Messenger v106 ou superior em um dispositivo Android ou iOS.
  • A Página do Facebook em que o bot do Messenger está inscrito precisa estar publicada.
  • O bot do Messenger precisar estar definido como “público” nas configurações do app.
  • O bot do Messenger precisa ter a permissão pages_messaging.
  • O bot do Messenger precisa ter um botão começar definido.

Botões compatíveis

O menu persistente é composto por uma matriz de botões. Estes tipos de botão são compatíveis com o menu persistente:

Como configurar o menu persistente

Para configurar o menu persistente, envie uma solicitação POST à API do Perfil do Messenger a fim de definir a propriedade persistent_menu do perfil do Messenger do seu bot.

Como forma de substituir o menu no nível aninhado que foi descontinuado, permitimos até 20 botões na matriz call_to_actions na versão 8.0 e superiores da Graph API.

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

Menu persistente aninhado

O recurso foi descontinuado na versão 8.0 e superiores.

Como desabilitar o compositor

Caso você prefira que o menu persistente seja a única forma de interagir com seu bot, desabilite o compositor. Isso será útil se o bot tiver um conjunto de opções ou um propósito muito específico.

Para isso, defina "composer_input_disabled":true ao criar o menu persistente.

Localização

É possível fornecer texto localizado e padrão para os botões do menu persistente que serão exibidos na localidade de uma pessoa.

Para isso, especifique um objeto separado na matriz persistent_menu para cada localidade. Para especificar a localidade de cada objeto, defina a propriedade locale como uma localidade compatível:

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

Menu do nível do usuário

Novo recurso

Em 4 de dezembro de 2019, implementamos melhorias no menu persistente para oferecer compatibilidade com as alterações dinâmicas a fim de personalizar ainda mais a experiência de conversa.

É possível substituir o menu persistente no nível da Página por uma configuração no nível do usuário. Isso permite que seu app controle de maneira dinâmica:

  • os botões de clique para ação no menu do usuário;
  • a visibilidade do compositor para o usuário.

Para habilitar ou desabilitar a configuração no nível do usuário, é usado o ponto de extremidade custom_user_settings. Esse ponto de extremidade é compatível com chamadas POST, GET e DELETE.

As mesmas configurações disponíveis para o menu persistente no nível da Página são aplicadas no nível do usuário. A principal diferença é que, para indicar o usuário ao qual a substituição se aplica, é necessário um parâmetro psid.

Observação: a atualização do menu persistente no nível do usuário acontece em tempo real; no nível da Página, ela pode levar até 24 horas.

As configurações no nível do usuário têm um limite de taxa de 10 chamadas por usuário a cada 10 minutos.

Exemplo de solicitação POST

Esta solicitação substituirá as configurações atuais no nível da página para o usuário.

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

Exemplo de solicitação GET

Esta solicitação recuperará as configurações atuais no nível da página e do usuário. Se não houver configurações no nível do usuário, apenas aquelas no nível da página serão retornadas.

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

Exemplo de solicitação DELETE

Esta solicitação removerá as configurações no nível do usuário, deixando o menu no nível da página (se configurado).

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

Como desabilitar o menu persistente

Em alguns casos, talvez seja melhor desabilitar o menu persistente do bot no plugin de bate-papo. Para fazer isso, adicione "disabled_surfaces": ["CUSTOMER_CHAT_PLUGIN"] ao definir o menu persistente:

Exemplo de carga da API do Perfil do 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"
        }
      ]
    }
  ]
}

Boas práticas

Assim como os botões, os itens de menu podem gerar um webView ou postback. Vale lembrar que o menu no segundo nível não é compatível.

Use o menu para pontos de entrada na funcionalidade do seu bot.

Descreva: o menu informa o que seu bot pode fazer. Com ele, os usuários sabem na hora para que assuntos eles podem consultar o bot no futuro.

Selecione com cuidado as funções principais do bot e tente limitar os itens do menu a 5 para garantir a melhor experiência do usuário.

Não espere que o menu contenha dados específicos do usuário: ele será o mesmo para todos que usarem o bot, mas ele pode ser localizado.

Não inclua um botão “Menu” no menu que envia para o usuário uma mensagem com um menu. Coloque esse conteúdo diretamente no menu, é para isso que ele serve.

Não inclua ações genéricas como “Reiniciar” no menu.

Não use espaço valioso do menu para informações secundárias do tipo “notas de rodapé”, como seção “Sobre”, termos de serviço, política de privacidade ou “com tecnologia”, deixando de lado o foco na funcionalidade principal do bot.

Suporte ao desenvolvedor