Procesamiento de lenguajes naturales para la plataforma de Messenger

El procesamiento de lenguajes naturales (NLP) te permite extraer y comprender elementos de información significativa de los mensajes que tu empresa recibe (entre otros, fechas y horas). Puedes usar esta información para identificar la intención de implementar la experiencia de mensajes necesaria para la conversación.

Mediante el NLP integrado de Meta, se reducen las llamadas a la API que cuentan para los límites de frecuencia de mensajes.

Cómo funciona

Antes de la entrega de un mensaje a tu empresa, el NLP integrado de Meta lo analiza para detectar significado y extraer información usando Wit.ai de Meta, además de un nivel de confianza que indica la probabilidad de que el analizador acierte. A continuación, el mensaje se transmite a tu empresa de la forma habitual, junto con cualquier información significativa, entidades y rasgos detectados en el mensaje. Por ejemplo, si un mensaje contiene una frase como “hola, mañana a las 2 p. m.”, obtienes un rasgo que incluye el saludo y una entidad con la marca de tiempo.

La identificación de idiomas se habilita de forma automática con el NLP integrado, y la fecha y hora se localizan de forma automática según la configuración regional del perfil de la persona.

Wit.ai

Wit.ai es la app que analiza el mensaje y crea las entidades a partir del mensaje de una persona. Puedes usar la app Wit.ai predeterminada para los idiomas admitidos o crear tu propia app Wit.ai para cada idioma que desees admitir. Cuando la plataforma de Messenger recibe un mensaje, primero recupera el idioma detectado principal y usa la app Wit.ai asociada para extraer las entidades. Si no hay una app Wit.ai vinculada al idioma detectado principal, se usará el modelo de idioma predeterminado.

Consulta nuestra documentación de Wit.ai para obtener más información sobre las apps de Wit.ai y para crear y probar tu propia app de Wit.ai personalizada, además de una lista de idiomas admitidos .

Agregar el NLP a tu página

Existen dos maneras de agregar el NLP a la página de tu empresa: con el panel de la app Meta o mediante programación.

Panel de apps

Para agregar el NLP integrado usando el panel de apps , en Productos dirígete a Messenger > Configuración y desplázate hacia abajo hasta la sección NLP integrado. Selecciona la página de Facebook en el menú desplegable y marca ACTIVAR. Luego, selecciona el modelo de idioma, que incluye una opción para agregar varios idiomas. La configuración avanzada te permite seleccionar la versión del NLP, el indicador detallado para obtener más información sobre entidades y los n mejores valores de cada intención y rasgo que desees recibir. Esta configuración también determina el número de configuraciones regionales devueltas.

Los ejemplos aleatorios de las conversaciones pasadas en la bandeja de entrada de la página se compilarán y aparecerán en una app de Wit.ai recién creada. Los ejemplos estarán disponibles de inmediato para el etiquetado en la app de Wit.ai.

Método que incluye programación

Para agregar el NLP mediante programación, necesitarás lo siguiente:

  • Un token de acceso a la página solicitado por una persona que puede realizar la tarea MESSAGING en la página
  • El identificador de la página
  • Los permisos pages_messaging y pages_manage_metadata.

Envía una solicitud POST al punto de conexión /PAGE-ID/nlp_configs con el parámetro nlp_enabled fijado en true para habilitar el NLP para la página. También puedes incluir el parámetro model para establecer un idioma que no sea el predeterminado (inglés).

Consulta la referencia del NLP de página para obtener más información.

Ejemplo de solicitud

El formato se modificó para facilitar la lectura.
curl -i -X POST "https://graph.facebook.com/v21.0/me/nlp_configs
      ?nlp_enabled=true
      &model=PORTUGUESE 
      &access_token=PAGE-ACCESS-TOKEN"

Puedes aplicar el parámetro custom_token para usar tu app de Wit.ai personalizada y actualizar los parámetros de NLP con solicitudes POST. Para deshabilitar el NLP, envía una solicitud POST con el parámetro nlp_enabled fijado en false.

Notificación de webhook

El webhook de mensaje ahora contiene dos campos de NLP cuando el NLP integrado está habilitado: nlp y nlpv2. El campo nlp es un campo heredado que usa una convención de nombres obsoleta para los nombres de entidades y rasgos. El campo nlpv2 usa nombres simplificados para entidades y rasgos, como se muestra a continuación.

El campo nlp se eliminará el 18 de junio de 2024.

Si el NLP integrado está habilitado, las entidades y los rasgos de NLP pertinentes se incluirán en la notificación de webhooks message en cada objeto de mensaje.

Entidades y rasgos

La plataforma de Messenger devuelve las siguientes entidades de forma predeterminada.

InformaciónEntidad

Cantidad de dinero

amount_of_money

Fecha y hora

datetime

Distancia

distance

Duración

duration

Dirección de correo electrónico

email

Ubicación

location

Número de teléfono

phone_number

Cantidad

quantity

Temperatura

temperature

URL

url

Volumen

volume

Rasgos integrados

La plataforma de Messenger devuelve los siguientes rasgos de forma predeterminada.

InformaciónRasgo

Despedida (solo en inglés)

bye

Saludo (solo en inglés)

greetings

Percepción

sentiment

Agradecimiento (solo en inglés)

thanks

Consulta la documentación de Wit.ia para obtener más información sobre entidades, rasgos y otros aspectos disponibles.

Ejemplo de notificación

El siguiente ejemplo corresponde a un mensaje que incluye la frase "nos vemos mañana a las 4 p. m." e incluiría las entidades datetime y sentiment después del análisis:

{...,
  "entities": {
    "datetime:datetime": [
      {
        "id": "340464963587159",
        "name": "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": {
    "sentiment": [
      {
        "id": "5ac2b50a-44e4-466e-9d49-bad6bd40092c",
        "value": "neutral",
        "confidence": 0.6162
      }
    ]
  }

Analizar un mensaje de NLP

En tus webhooks messages, puedes responder a un mensaje haciendo uso del NLP predeterminado. Por ejemplo, si tienes una función handleMessage() que responde a cada mensaje que se recibe, puedes usar la entidad greetings para enviar una respuesta adecuada:

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, 'greetings');
  if (greeting && greeting.confidence > 0.8) {
    sendResponse('Hi there!');
  } else { 
    // default logic
  }
}