Facebook Messenger

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

  • Um aplicativo do Facebook

  • Uma página 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 o aplicativo do Facebook que você usará para o canal:
    1. No seu navegador, vá para https://developers.facebook.com/apps/.
    2. Selecione a guia Meus Aplicativos e clique em Criar Aplicativo.
    3. Na página Detalhes do aplicativo do assistente de Criação de Aplicativo, informe o nome que você deseja usar para o aplicativo e o endereço de e-mail que você deseja usar como contato do aplicativo. Em seguida, clique em Próximo.
    4. Na página Casos de uso, em Filtrar por, selecione Mensagens de negócios. Em seguida, selecione Envolver-se com clientes no Messenger no Meta e clique em Próximo.
    5. Clique no restante das páginas do assistente e, na página Visão Geral, clique em Criar Aplicativo.
  3. Depois que o aplicativo for criado, selecione-o (no lado esquerdo da página Meus Aplicativos) e, na seção Definições do Aplicativo, selecione Básico.
  4. Copie o valor do campo Segredo do aplicativo e cole-o em algum lugar conveniente no seu sistema.

    Você precisará do segredo do aplicativo posteriormente para preencher a configuração de seu canal no Facebook.

  5. Na seção Página do aplicativo, clique em Criar nova Página.
  6. Na página Criar uma Página, preencha os campos obrigatórios e clique em Criar Página.
    Observação

    O nome da página deve conter o nome do aplicativo.
  7. Gere um Token de Acesso:
    1. Selecione Ferramentas > Explorador de API de Gráfico.
    2. Na seção Token de Acesso da página, para Meta App, selecione o nome do seu aplicativo.
    3. Para o campo Usuário ou Página, selecione Obter Token.
    4. Na seção Permissões, clique em Adicionar uma Permissão e selecione as seguintes permissões:
      • business_management
      • pages_manage_metadata
      • pages_messaging
      • pages_show_list
    5. Clique em Gerar Token de Acesso.
  8. 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.

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.

  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.
    Segue a descrição da ilustração 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 console do Facebook Messenger, vá para o projeto que você criou inicialmente para o webhook.
  2. Selecione Definições da API do Messenger para abrir a página Configuração da API do Messenger.
  3. No campo URL de CallBack, cole o URL do Webhook obtido na página Canais do Digital Assistant.
  4. No campo Verificar Token na console do Messenger, cole o Token de Verificação na página Canais do Digital Assistant.
  5. Na seção Campos do Webhook, selecione os eventos de callback messages e messaging_postbacks.
  6. Clique em Verificar e Salvar.
  7. Inscreva-se na página:
    1. Na seção Gerar tokens de acesso da página Configuração da API do Messenger, selecione a página do Facebook do seu canal.
    2. Clique em Adicionar Assinatura.
    3. Na caixa de diálogo Editar Assinaturas da Página, verifique se messages e messaging_postbacks estão selecionados e clique em Confirm.

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

Com a configuração do Canal do Facebook e das mensagens concluída, você pode testar seu bot usando sua página no Facebook, o Facebook Messenger (https://www.messenger.com/) e o aplicativo do Facebook Messenger no seu dispositivo.

  1. Vá para https://www.messenger.com/.
  2. Na interface do Messenger, informe o nome da sua página para procurar a página.
  3. Comece a conversar com seu assistente digital (ou habilidade standalone).

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.