Processamento de Linguagem Natural na plataforma do Messenger

O Processamento de Linguagem Natural (PLN) permite que você compreenda e extraia informações relevantes (data, hora, entre outras) de mensagens recebidas pela empresa. Essas informações podem ser usadas para identificar a intenção e implementar a experiência de troca de mensagens necessária na conversa.

Ao usar o PLN integrado da Meta, é possível reduzir o número de chamadas de API registradas no limite de volume de mensagens.

Como funciona

Antes da entrega da mensagem à empresa, o PLN integrado da Meta a analisa para ajudar a detectar o significado e extrair as informações. Isso é feito por meio do Wit.ai da Meta e de um nível de confiança que indica a probabilidade de o analisador estar correto. Depois, a mensagem é transmitida à empresa normalmente, com as informações relevantes, entidades e características detectadas. Por exemplo, se a menagem exibir uma frase como "olá, amanhã às 14h", você receberá uma característica com a saudação e uma entidade com o registro de data e hora.

No PLN integrado, a identificação do idioma é ativada automaticamente. Já as informações de data e hora são transmitidas de acordo com a localização do perfil da pessoa.

Wit.ai

A partir da mensagem de uma pessoa, o app Wit.ai analisa o texto e cria as entidades. É possível usar o padrão do Wit.ai para idiomas compatíveis ou criar o próprio app Wit.ai no idioma que você quiser. Quando a plataforma do Messenger recebe uma mensagem, o idioma principal é detectado para que o app Wit.ai associado a ele seja usado com o objetivo de extrair as entidades. Se não houver um app Wit.ai vinculado ao idioma principal detectado, o modelo-padrão de idioma será usado.

Consulte a documentação sobre o Wit.ai para ver mais informações sobre os apps, a criação e o teste de apps Wit.ai personalizados , além de uma lista de idiomas compatíveis .

Adicionar o PLN à sua Página

Há duas maneiras de adicionar o PLN à Página da sua empresa: por meio do Painel de Aplicativos da Meta ou de forma programática.

Painel de Aplicativos

Para adicionar o PLN integrado usando o Painel de Aplicativos , em Produtos, navegue até Messenger > Configurações e role a tela até a seção PLN integrado. Selecione a Página do Facebook no menu suspenso e alterne o botão para ON. Selecione o Language Model, que inclui uma opção para adicionar diversos idiomas. Nas Configurações avançadas, é possível selecionar a versão de PLN, o sinalizador detalhado para mais informações sobre as entidades e os melhores valores de n para cada intenção e característica que você quer receber. Essa configuração também especifica o número de localidades detectadas que são retornadas.

As amostras aleatórias de conversas anteriores na Caixa de Entrada da Página serão compiladas e exibidas em um novo app Wit. Essas amostras ficarão disponíveis para marcação no app Wit.ai imediatamente.

Modo programático

Para adicionar o PLN de forma programática, você precisará do seguinte:

  • Um token de acesso à Página solicitado de uma pessoa que pode executar a tarefa MESSAGING na Página
  • A identificação da Página
  • As permissões pages_messaging e pages_manage_metadata

Envie uma solicitação POST ao ponto de extremidade /PAGE-ID/nlp_configs com o parâmetro nlp_enabled definido como true para ativar o PLN na Página. Também é possível incluir o parâmetro model para definir um idioma diferente do padrão, que é o inglês.

Para ver mais informações, consulte a referência sobre PLN em Páginas .

Exemplo de solicitação

Texto formatado para facilitar a leitura.
curl -i -X POST "https://graph.facebook.com/LATEST-GRAPH-API-VERSION/me/nlp_configs
      ?nlp_enabled=true
      &model=PORTUGUESE 
      &access_token=PAGE-ACCESS-TOKEN"

Você pode incluir o parâmetro custom_token para usar o app Wit.ai personalizado e atualizar os parâmetros de PLN com solicitações POST. Para desativar o PLN, envie uma solicitação POST com o parâmetro nlp_enabled definido como false.

Notificação de webhook

Caso o PLN integrado esteja ativado, as entidades e as características pertinentes do PLN serão incluídas na notificação de webhooks message para cada objeto de mensagem.

Entidades e características

Por padrão, a plataforma do Messenger retorna as entidades a seguir.

InformaçõesEntidade

Quantia em dinheiro

wit$amount_of_money:amount_of_money

Data/hora

wit$datetime:$datetime

Distância

wit$distance:distance

Duração

wit$duration:duration

Endereço de email

wit$email:email

Localização

wit$location:location

Número de telefone

wit$phone_number:phone_number

Quantidade

wit$quantity:quantity

Temperatura

wit$temperature:temperature

URL

wit$url:url

Volume

wit$volume:volume

Características incorporadas

Por padrão, a plataforma do Messenger retorna as características a seguir.

InformaçõesCaracterística

Despedida (somente em inglês)

wit$bye

Saudações (somente em inglês)

wit$greetings

Sentimento

wit$sentiment

Agradecimento (somente em inglês)

wit$thanks

Visite a documentação sobre Wit.ai para saber mais sobre entidades e características disponíveis, além de outras informações.

Exemplo de notificação

O exemplo a seguir mostra uma mensagem que inclui a frase "até amanhã às 16h", com as entidades wit$datetime e wit$sentiment depois da análise:

{...,
  "entities": {
    "wit$datetime:datetime": [
      {
        "id": "340464963587159",
        "name": "wit$datetime",
        "role": "datetime",
        "start": 8,
        "end": 23,
        "body": "tomorrow at 4pm",
        "confidence": 0.9704,
        "entities": [],
        "type": "value",
        "grain": "hour",
        "value": "2020-06-16T16:00:00.000-07:00",
        "values": [
          {
            "type": "value",
            "grain": "hour",
            "value": "2020-06-16T16:00:00.000-07:00"
          }
        ]
      }
    ]
  },
  "traits": {
    "wit$sentiment": [
      {
        "id": "5ac2b50a-44e4-466e-9d49-bad6bd40092c",
        "value": "neutral",
        "confidence": 0.6162
      }
    ]
  }

Analisar uma mensagem em PLN

Nos Webhooks de messages, é possível responder a uma mensagem aproveitando o PLN-padrão. Por exemplo, se houver uma função handleMessage() que responda a cada mensagem recebida, a entidade greetings poderá ser usada para enviar uma resposta adequada:

function firstTrait(nlp, name) {
  return nlp && nlp.entities && nlp.traits[name] && nlp.traits[name][0];
}

function handleMessage(message) {
  // check greeting is here and is confident
  const greeting = firstTrait(message.nlp, 'wit$greetings');
  if (greeting && greeting.confidence > 0.8) {
    sendResponse('Hi there!');
  } else { 
    // default logic
  }
}