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.
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 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 .
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.
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.
Para agregar el NLP mediante programación, necesitarás lo siguiente:
MESSAGING
en la páginapages_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.
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
.
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.
La plataforma de Messenger devuelve las siguientes entidades de forma predeterminada.
Información | Entidad |
---|---|
Cantidad de dinero |
|
Fecha y hora |
|
Distancia |
|
Duración |
|
Dirección de correo electrónico |
|
Ubicación |
|
Número de teléfono |
|
Cantidad |
|
Temperatura |
|
URL |
|
Volumen |
|
La plataforma de Messenger devuelve los siguientes rasgos de forma predeterminada.
Información | Rasgo |
---|---|
Despedida (solo en inglés) |
|
Saludo (solo en inglés) |
|
Percepción |
|
Agradecimiento (solo en inglés) |
|
Consulta la documentación de Wit.ia para obtener más información sobre entidades, rasgos y otros aspectos disponibles.
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
}
]
}
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
}
}