Facebook Messenger

Você precisará do seguinte para configurar o canal do Facebook Messenger:
  • Uma conta de Desenvolvedor do Facebook

  • Uma página do Facebook

  • Um aplicativo do Facebook

  • Um token de acesso à página

  • Um ID do segredo do aplicativo

  • O URL do webhook

  • Um token de verificação

Para executar seu assistente digital (ou uma habilidade standalone) no Facebook Messenger, primeiro você precisa configurar uma página e um aplicativo do Facebook. Você pode saber mais sobre isso na documentação da Plataforma de Mensagens do Facebook.

Veja como funciona em um nutshell. A página do Facebook hospeda seu assistente digital. Os usuários batem papo com o assistente digital nessa página quando utilizam a janela de chat em um browser de desktop. Quando eles usam um dispositivo móvel, os usuários interagem com o assistente digital diretamente por meio do próprio Facebook Messenger. Nesse cenário, o aplicativo do Facebook permite que o assistente digital obtenha as mensagens tratadas pelo Facebook Messenger.

Para criar um canal do Facebook Messenger, você precisa de artefatos gerados pelo Oracle Digital Assistant e pelo Facebook Messenger.

No Oracle Digital Assistant, você precisará:

  • do URL do webhook que conecta seu assistente digital ao Facebook Messenger
  • do token de verificação que permite ao Facebook Messenger identificar o assistente digital

No Facebook Messenger, você precisará:

  • do token de acesso à página
  • do ID do segredo do aplicativo

Como você precisa transferir esses artefatos entre o Digital Assistant e o Facebook Messenger, será necessário alternar entre essas duas plataformas ao configurar o canal.

Etapa 1: Configurar o Facebook Messenger

Comece gerando o Segredo do Aplicativo e o token de Acesso à Página no Facebook Messenger.

  1. Faça log-in na sua conta do desenvolvedor do Facebook.

  2. Crie uma página do Facebook que hospede seu bot. A descrição, as imagens e a primeira página que você adicionar à página identificarão seu bot para seus usuários.

  3. Em seguida, crie o aplicativo do Facebook que você vinculará a essa página. Como esse é um aplicativo do Messenger, escolha Aplicativos para Messenger e, em seguida, clique em Criar ID do Aplicativo.
    Veja a seguir a descrição da configuração fbapp.png
    Descrição da configuração da ilustração-fbapp.png

    Se você não tiver escolhido a opção Aplicativos para Messenger nessa caixa de diálogo (por exemplo, se você estiver criando um aplicativo de teste), clique em Adicionar Produto na barra de navegação esquerda, escolha Mensageiro na página Configuração do Produto e clique em Conceitos Básicos.
    Veja a seguir a descrição da extensão product.png
    Descrição da ilustração add-product.png

  4. Na página Painel de Controle do aplicativo do Facebook, copie o segredo do aplicativo e cole em algum lugar conveniente no seu sistema.
    Veja a seguir a descrição da facebook-dashboard.png
    Descrição da ilustração facebook-dashboard.png

    Você precisará do segredo do aplicativo para concluir a configuração do seu canal do Facebook.

  5. No Painel de Controle do seu aplicativo, gere o Token de Acesso à Página selecionando sua página do Facebook.
    Veja a seguir a descrição da página-acesso-token.png
    Descrição da ilustração page-access-token.png

  6. Copie o token de acesso e cole-o em algum lugar conveniente.

    Você usará esse token, que dá ao seu Aplicativo do Facebook acesso à API de Mensagens do Facebook, para concluir sua definição de canal no Digital Assistant.

Observação

As Alterações na API de Perfil do Usuário do Facebook exigem que você agora tenha de solicitar permissões para determinados campos de perfil do usuário para qualquer aplicativo do Facebook que você criou antes ou depois de 26 de julho de 2018. Sem as permissões a seguir, o nome do usuário será preenchido como string numérica aleatória.
  • pages_messaging

  • pages_user_locale

  • pages_user_timezone

Se você criou o aplicativo antes de 26 de julho, terá até 29 de janeiro de 2019 para aplicar as permissões. Se você criou seu aplicativo após 26 de julho de 2018, será necessário adicionar essas permissões o mais rápido possível. Você pode defini-las na seção Revisão do Aplicativo para Messenger da página Messenger.

Etapa 2: Criar o Canal no Digital Assistant

Preencha a caixa de diálogo Criar Canal fornecendo as chaves Token de Acesso à Página e Segredo do Aplicativo no Facebook.
  1. No Digital Assistant, clique em Canais no menu esquerdo e escolha Usuários.
  2. Em seguida, clique em Adicionar Canal para abrir a caixa de diálogo Criar Canal.

  3. Dê um nome ao canal.

  4. Escolha Facebook Messenger como o tipo de canal.
    A seguir, descrição de create-channel-dialog-started.png
    Descrição da ilustração create-channel-dialog-started.png

  5. No campo Token de Acesso à Página, cole o token de acesso à página gerado anteriormente no procedimento Configurar Facebook Messenger.

  6. No campo Segredo do Aplicativo, cole o segredo do aplicativo que você copiou anteriormente no procedimento Configurar Facebook Messenger.

  7. Clique em Criar.

  8. Na página Canais, copie o Token de Verificação e o URL do WebHook e cole-os em algum lugar conveniente no seu sistema. Você precisará deles para configurar o webhook do Facebook.
    A seguir, descrição do fb-channel-complete.png
    Descrição da ilustração fb-channel-complete.png

Etapa 3: Configurar o Webhook do Facebook Messenger

No Facebook Messenger, defina o URL de Callback usando o URL do Webhook gerado pelo Digital Assistant na etapa anterior.
  1. No Facebook Messenger, certifique-se de ter selecionado o projeto que você criou inicialmente para o webhook.



  2. Clique em Messenger e escolha Definições .
    A seguir, descrição de fb-navbar.png
    Descrição da ilustração fb-navbar.png

  3. Clique em Inscrever-se em Eventos para abrir a caixa de diálogo Nova Inscrição em Página.

  4. Copie o URL do Webhook que você obteve na página Canais do Digital Assistant e cole-o no campo URL de CallBack na caixa de diálogo Nova Inscrição em Página.

  5. Copie o Token de Verificação gerado pelo Digital Assistant e cole-o no campo Token de Verificação.

  6. Em Campos de Inscrição, selecione os eventos de callback messages e messaging_postbacks.

    O evento messages é acionado sempre que alguém envia uma mensagem para sua página do Facebook.

  7. Clique em Verificar e Salvar.
  8. Inscreva-se na página:
    1. Na seção Webhooks das definições do Messenger, selecione a página Facebook do seu assistente digital (ou habilidade standalone).

    2. Clique em Inscrever-se.

    .

    Dica:

    Talvez seja necessário reiniciar seu webhook clicando primeiro em Cancelar Inscrição e depois em Inscrever-se.

Etapa 4: Ativar o Canal do Facebook

Com a configuração concluída, você está pronto para ativar o canal do Facebook.

  • No Digital Assistant, selecione o canal e ative o controle Canal Ativado.
  • Clique em ícone da lista drop-down Rotear para... e selecione o assistente digital ou a habilidade que deseja associar ao canal.

Agora você pode testar o bot pelo canal.

Etapa 5: Testar seu Bot no Facebook Messenger

Concluída a configuração de mensagens e do Canal do Facebook, você pode testar seu bot usando sua página do Facebook, o Facebook Messenger (https://www.messenger.com/) e o aplicativo do Facebook Messenger no seu telefone (Esta é uma imagem do ícone Aplicativo do Facebook.). Depois de localizar seu bot na pesquisa, você está pronto para começar a bater papo com ele. Você pode ver as alterações que faz no fluxo de diálogo em tempo real.
Veja a seguir a descrição do teste bot.png
Descrição da ilustração test-bot.png

Menu Persistente

O Facebook Messenger permite que você crie um menu persistente ao lado do campo Mensagem. Consulte https://developers.facebook.com/docs/messenger-platform/send-messages/persistent-menu/ para obter detalhes sobre o recurso.

Este é um exemplo que mostra itens do menu persistente para "Order Pizza" e "Order Pasta":



Criar um Item de Menu Persistente

Para adicionar itens do menu persistente do Facebook para um assistente digital ou uma habilidade standalone, faça o seguinte:

  1. Certifique-se de que você tenha todos os pré-requisitos, inclusive um botão de inicialização.

    Esses pré-requisitos estão listados aqui: https://developers.facebook.com/docs/messenger-platform/send-messages/persistent-menu/#requirements

  2. Adicione uma ação para cada item de menu no array call_to_actions do menu persistente do Facebook, conforme descrito geralmente em https://developers.facebook.com/docs/messenger-platform/send-messages/persistent-menu/#set_menu.
  3. Defina os itens do menu persistente com uma chamada POST para a API da Plataforma Messenger.

    O URI de solicitação é https://graph.facebook.com/v2.6/me/messenger_profile?access_token=<PAGE_ACCESS_TOKEN>, em que <PAGE_ACCESS_TOKEN> é o token de acesso à página do seu aplicativo do Facebook.

Itens do Menu Persistente para um Assistente Digital

Este é o formato do POST para a API da Plataforma Messenger para adicionar itens do menu persistente do Facebook para um assistente digital:

{
  "persistent_menu":[
    {
      "locale":"default",
      "composer_input_disabled": false,
      "call_to_actions":[
            {
              "title":"menu item display name",
              "type":"postback",
              "payload":"{\"action\":\"system.textReceived\",\"variables\": {\"system.text\": \"utterance that contains the skill's invocation name\"}}"
            }
          ]
    }
  ]
}

Para o payload, use uma ação system.textReceived que transmita uma declaração do Facebook Messenger para o assistente digital por meio de uma variável system.text. Essa declaração deve conter o nome da chamada da habilidade de destino (isto é, uma chamada explícita) para garantir o roteamento adequado.

Aqui está um exemplo de criação de dois itens do menu persistente para sua habilidade no Facebook Messenger ("Order Pizza" e "Order Pasta"):

{
  "persistent_menu":[
    {
      "locale":"default",
      "composer_input_disabled": false,
      "call_to_actions":[
            {
              "title":"Order Pizza",
              "type":"postback",
              "payload":"{\"action\":\"system.textReceived\",\"variables\": {\"system.text\": \"Order pizza from Pizza Joe \"}"
            },
            {
              "title":"Order Pasta",
              "type":"postback",
              "payload":"{\"action\":\"system.textReceived\",\"variables\": {\"system.text\": \"Order pasta from Pizza Joe \"}"
            }
          ]
    }
  ]
}

Itens do Menu Persistente para uma Habilidade Standalone

Este é o formato do POST para a API da Plataforma Messenger para adicionar itens do menu persistente do Facebook para uma habilidade standalone:

{
  "persistent_menu":[
    {
      "locale":"default",
      "composer_input_disabled": false,
      "call_to_actions":[
            {
              "title":"menu item display name",
              "type":"postback",
              "payload":"{\"action\":\"action name\",\"variables\": {}"
            }
          ]
    }
  ]
}

O payload é o nome do evento mapeado para o fluxo que você deseja acionar no fluxo de caixas de diálogo da habilidade.

E depois você mencionaria essa ação da ajuda no menu persistente do Facebook.

{
  "persistent_menu":[
    {
      "locale":"default",
      "composer_input_disabled": false,
      "call_to_actions":[
            {
              "title":"Help",
              "type":"postback",
              "payload":"{\"action\":\"help\",\"variables\": {}"
            }
          ]
    }
  ]
}

Capacidades Suportadas

Os canais do Facebook Messenger no Digital Assistant suportam as seguintes capacidades:

  • texto (envio e recebimento)
  • imagens (envio e recebimento)
  • arquivos (envio e recebimento)
  • emojis (envio e recebimento)
  • localização, mas obsoleto (envio e recebimento)
  • links
  • postbacks
  • solicitações de localização
  • propriedades personalizadas
  • componentes de carrossel
  • componentes de lista

Se você estiver direcionando sua habilidade para vários canais com diferentes recursos de formatação e sintaxe, poderá usar a marcação HTML básica em suas mensagens. Se você fizer isso, essa marcação será automaticamente convertida para o formato de markdown do Facebook Messenger quando a mensagem for transmitida para o canal. Isso é particularmente útil se você estiver direcionando suas habilidades para outros canais, além do Facebook Messenger. Consulte Formatação de Rich Text em Canais.

Restrições de Mensagens

Os canais do Facebook Messenger no Digital Assistant têm as seguintes restrições de mensagens:

  • Mensagens de Texto
    • Tamanho máximo da mensagem de texto: 640 caracteres. Se o tamanho exceder 640, o texto será dividido em várias mensagens.
    • Tamanho máximo do label de ação do texto: 20 caracteres
    • Tipos de ações de texto permitidos: Postback, Chamada, URL
    • Número máximo de ações de texto: 3. Se houver mais ações de texto, a mensagem será convertida em vários cartões horizontais, com o mesmo texto usado como título de cada cartão, cada um contendo até 3 ações.
  • Cartões Horizontais
    • Tamanho máximo do título: 80 caracteres
    • Tamanho máximo da descrição: 80 caracteres
    • Tamanho máximo do label de ação do cartão: 20 caracteres
    • Número máximo de cartões: 10
    • Número máximo de ações do cartão: 3. Se o número de ações do cartão passar de 3, o cartão será duplicado para renderizar o restante das ações.
    • Número mínimo de ações do cartão: 0.
    • Número máximo de ações da lista de cartões: 0
    • Pelo menos uma descrição, imagem ou ação é necessária?: Sim
    • Tipos de ações de cartão permitidas: Postback, Chamada, URL, Compartilhamento
    • Tipos de ações de lista de cartões permitidos: N/A
  • Cartões Verticais
    • Não suportado
  • Mensagens de Anexo
    • Suportado?: Sim
    • Ações de anexo permitidas?: Não
  • Botões de Ação
    • Tamanho máximo do label de ação global: 20 caracteres
    • Número máximo de ações globais: 11
    • Tipos de ações globais permitidas: Postback

Extensões de Canal do Facebook Messenger

Para canais do Facebook Messenger, você pode estender a funcionalidade dos componentes de Resposta Comum com recursos específicos do Facebook.

Acesse as extensões usando o elemento channelCustomProperties nos metadados do componente Resposta Comum e definindo as propriedades apropriadas. O código tem o seguinte formato:

...
            channelCustomProperties:
            - channel: "facebook"
              properties:
                PROPERTY_NAME: "PROPERTY_VALUE"
...

Estas são as propriedades personalizadas disponíveis para canais do Facebook Messenger:

Nome da Propriedade Valores permitidos Aplica-se a... Descrição
top_element_style
  • compact
  • large
Itens de resposta com os seguintes atributos:
  • type: "cards"
  • cardLayout: "vertical"
Determina como a imagem do primeiro cartão é renderizada. Consulte https://developers.facebook.com/docs/messenger-platform/send-messages/template/list/#cover_image para obter detalhes.

Se não for especificado, o Oracle Digital Assistant padronizará essa propriedade como compact, que é o oposto do padrão do Facebook.

image_aspect_ratio
  • horizontal
  • square
Itens de resposta com os seguintes atributos:
  • type: "cards"
  • cardLayout: "horizontal"
A taxa de proporção usada para renderizar imagens. O padrão é horizontal (1.91:1). square define a taxa de proporção como 1:1. Consulte https://developers.facebook.com/docs/messenger-platform/reference/template/generic#attachment
sharable
  • true
  • false
Itens de resposta do tipo cards. Defina como true para ativar o botão de compartilhamento nativo no Messenger para a mensagem modelo. O padrão é false. Consulte https://developers.facebook.com/docs/messenger-platform/reference/template/generic#attachment
webview_height_ratio
  • compact
  • tall
  • full
Qualquer um dos seguintes:
  • Um cartão no qual a propriedade "url" é especificada
  • Uma action em que "type": "url"
A altura da webview que é aberta ao tocar no botão URL ou a altura do cartão ao tocar na propriedade url especificada. Consulte https://developers.facebook.com/docs/messenger-platform/reference/buttons/url#properties
messenger_extensions
  • true
  • false
Qualquer um dos seguintes:
  • Um cartão no qual a propriedade "url" é especificada
  • Uma action em que "type": "url"
O Messenger Extensions permite que você integre firmemente experiências na webview com a experiência do Messenger, tornando a funcionalidade agregada acessível na webview. Consulte https://developers.facebook.com/docs/messenger-platform/reference/messenger-extensions-sdk
fallback_url Um URL válido Qualquer um dos seguintes:
  • Um cartão no qual a propriedade "url" é especificada
  • Uma action em que "type": "url"
O URL a ser usado em clientes que não suportam o Messenger Extensions. Se não for definido, url será usado como fallback. Isso só poderá ser especificado se messenger_extensions for verdadeiro. Consulte https://developers.facebook.com/docs/messenger-platform/reference/buttons/url#properties
webview_share_button
  • hide
Qualquer um dos seguintes:
  • Um cartão no qual a propriedade "url" é especificada
  • Uma action em que "type": "url"
Defina como hide para desativar o botão de compartilhamento na webview (para informações confidenciais). Isso não afeta os compartilhamentos iniciados pelo desenvolvedor que está usando o Extensions.
share_contents O formato segue o que é usado na API de Envio do Facebook Messenger
  • Uma action em que "type": "share"
A mensagem que você deseja que o destinatário do compartilhamento veja, se for diferente daquela que tem o botão anexado. Consulte https://developers.facebook.com/docs/messenger-platform/reference/buttons/share#properties

Veja um exemplo de propriedades personalizadas definidas no nível do item de resposta (top_element_style) e no nível de cartões (webview_height_ratio e fallback_url):

responseItems:
  - type: "cards"
    cardLayout: "vertical"
    cards:
      - title: "${pizzas.name}"
        description: "${pizzas.description}"
        imageUrl: "${pizzas.image}"
        url: "${pizzas.moreInfo}"
        iteratorVariable: "pizzas"
        channelCustomProperties:
          - channel: "facebook"
            properties:
              webview_height_ratio: "compact"
              fallback_url: "http://www.oracle.com"
    channelCustomProperties:
      - channel: "facebook"
        properties:
          top_element_style: "large"
...

Para obter informações gerais adicionais sobre channelCustomProperties, consulte Extensões Específicas do Canal.