Obtener datos del punto final de la API de contactos

Nathan Begbie Actualizado por Nathan Begbie

Los datos de contacto cambian a medida que las personas interactúan con su servicio. Así es como se obtiene información actualizada a través de la API.

Hacia finales de septiembre de 2022, realizamos algunos cambios en el punto final de la API de contactos. Si utilizó el punto final antes, asegúrese de leer primero acerca de los 3 cambios clave.

Aquí hay un ejemplo de cómo recuperar detalles de contacto a través de la API

Imagine que tenemos un solo usuario que nos envía mensajes (Bob) y un campo de perfil personalizado llamado `current_ Savings`. El lunes 12 de septiembre de 2022, nos envían un mensaje para decirnos que sus ahorros actuales son de $100. Si ejecutamos lo siguiente el martes (13), podríamos consultar estos datos de esta manera:

# solicitar un cursor para los datos
$ curl -X POST "https://whatsapp.turn.io/v1/data/contacts/cursor" \
-H "Autorización: Token al portador" \
-H "Tipo de contenido: aplicación/json" \
-H "aceptar: application/vnd.v1+json"
-d '
{
# inicio del lunes 12
"desde": "2022-09-12T00:00:00.000Z",
# por un periodo de 24 horas
"hasta": "2022-09-13T00:00:00.000Z"
}
> {
"cursor": "an-example-cursor-1234",
"expires_at": "2022-09-14T17:47:18.318218Z"
}
# solicitar los datos usando el cursor dado
$ curl -X GET "https://whatsapp.turn.io/v1/data/contacts/cursor/an-example-cursor-1234" \
-H 'Autorización: Token al portador' \
-H "Aceptar: aplicación/vnd.v1+json" \
> {
"datos": [
{
"detalles": {
"cumpleaños": "1988-06-14T18:15:35.873852Z",
"idioma": "eng",
"ubicación": nulo,
"nombre": "bob",
"opted_in": falso,
"opted_in_at": nulo,
"apellido": nulo,
"whatsapp_id": "44623456700",
"nombre_perfil_whatsapp": "bob",
"ahorro_actual": 100
},
"id": 1,
"insertado_en": "20222-09-12T08:30:00.000Z",
"number_id": 1,
"actualizado_en": "20222-09-12T08:30:00.000Z",
"uuid": "f6c4e666-81ad-430e-aea5-1ba33e6f4c35"
}
]
}

¡Genial! Entonces tenemos los datos y podemos almacenarlos en nuestro lago de datos o base de datos de análisis.

Ahora, imagina que Bob vuelve a enviar un mensaje el martes para decir que sus ahorros han aumentado a $120. Si solicitamos los datos para el mismo período de tiempo (lunes), el miércoles 14, ya no recibiremos ningún dato para Bob:

# solicitar un cursor para los datos
$ curl -X POST "https://whatsapp.turn.io/v1/data/contacts/cursor" \
-H "Autorización: Token al portador" \
-H "Tipo de contenido: aplicación/json" \
-H "aceptar: application/vnd.v1+json"
-d '
{
# inicio del lunes 12
"desde": "2022-09-12T00:00:00.000Z",
# por un periodo de 24 horas
"hasta": "2022-09-13T00:00:00.000Z"
}
> {
"cursor": "otro-cursor-de-ejemplo-5678",
"expires_at": "2022-09-16T17:48:18.763987Z"
}
# solicitar los datos
curl -X GET "https://whatsapp.turn.io/v1/data/contacts/cursor/an-example-cursor-1234" \
-H 'Autorización: Token al portador' \
-H "Aceptar: aplicación/vnd.v1+json" \
> {
"datos": []
}

En cambio, si queremos datos actualizados, debemos solicitar los datos del día siguiente:

# solicitar un cursor para los datos
$ curl -X POST "https://whatsapp.turn.io/v1/data/contacts/cursor" \
-H "Autorización: Token al portador" \
-H "Tipo de contenido: aplicación/json" \
-H "aceptar: application/vnd.v1+json"
-d '
{
# inicio del martes 13
"desde": "2022-09-13T00:00:00.000Z",
# por un período de 24 horas
"hasta": "2022-09-14T00:00:00.000Z"
}
> {
"cursor": "todavía-otro-cursor-de-ejemplo-9876",
"expires_at": "2022-09-16T17:48:18.763987Z"
}
# solicitar los datos usando el cursor dado
$ curl -X OBTENER "https://whatsapp.turn.io/v1/data/contacts/cursor/yet-another-example-cursor-9876" \
-H 'Autorización: Token al portador' \
-H "Aceptar: aplicación/vnd.v1+json" \
> {
"datos": [
{
"detalles": {
"cumpleaños": "1988-06-14T18:15:35.873852Z",
"idioma": "eng",
"ubicación": nulo,
"nombre": "bob",
"opted_in": falso,
"opted_in_at": nulo,
"apellido": nulo,
"whatsapp_id": "44623456700",
"whatsapp_profile_name": "bob",
# ¡tenga en cuenta el cambio de valor aquí!
"current_ Savings": 120
},
"id": 1,
"insertado_en": "20222-09-12T08:30:00.000Z",
"número_id": 1,
"actualizado_en": "20222-09-13T10:00:00.000Z",
"uuid": "f6c4e666-81ad-430e-aea5-1ba33e6f4c35"
}
]
}

Nota: No debería necesitar solicitar los datos utilizando el intervalo de tiempo del número para obtener datos de contacto actualizados, a menos que los solicite por primera vez. 

Vea más llamadas de ejemplo en la documentación de API.

¿Cómo lo hicimos?

Cómo marcar mensajes como leídos

Las llamadas API devuelven el estado 200 para mensajes fuera de la ventana de conversación

Contacto