/v1/contacts
Usa el nodo contacts
para administrar los usuarios de WhatsApp en tu base de datos validándolos antes de enviar mensajes y verifica la identidad de los usuarios con claves de identidad.
Con el nodo contacts
puedes hacer lo siguiente:
status
sea valid
para poder enviar un mensaje a un usuario. A partir de la versión 2.39.1, el nodo messages
se puede usar directamente con un número de teléfono, sin necesidad de traducirlo primero a un identificador de WhatsApp mediante el nodo contacts
.
A partir de la versión 2.43, adaptamos el nodo contacts
para que ya no proporcione más información sobre el estado de un número de teléfono. Sin importar si un usuario cuenta con WhatsApp, siempre se devolverá en la respuesta status
como valid
y un wa_id.
.
Debes brindar a tus clientes la opción de suscribirse a las comunicaciones de WhatsApp con tu empresa. Tu empresa es la que administra el proceso de suscripción. Después de que un cliente se suscriba, usa el nodo contacts
para validar el número registrado. Si quieres obtener más información, consulta Cómo conseguir que el usuario acepte recibir mensajes por WhatsApp.
Si una empresa utiliza el punto de conexión de manera incorrecta, se tomarán las siguientes medidas:
La práctica recomendada es comprobar los contactos antes de enviar cada mensaje. Sin embargo, no hace falta comprobarlos para responder a un mensaje entrante de un cliente; basta con usar wa_id
para responder el mensaje de inmediato. El almacenamiento en caché de los resultados no tiene ningún costo adicional.
Antes de enviar mensajes a usuarios que se hayan suscrito, envía una solicitud POST
al punto de conexión /v1/contacts
a fin de crear una solicitud de validación de usuario para la cuenta de WhatsApp. En la llamada, incluye una lista de números de teléfono que desees validar.
POST /v1/contacts { "blocking": "wait" | "no_wait", "contacts": [ "16315551000", "+1 631 555 1001", "6315551002", "+1 (631) 555-1004", "1-631-555-1005" ], "force_check": false | true }
Recibirás una respuesta con el status
actual de los números solicitados y los identificadores de WhatsApp (wa_id
):
{ "contacts": [ { "wa_id": "16315551000", "input": "16315551000", "status": "valid" }, { "wa_id": "16315551001", "input": "+1 631 555 1001", "status": "processing" # Only applicable when request is non-blocking }, { "input": "6315551002", "status": "invalid" }, { "input": "+163155588", "status": "failed" } }
Guarda los identificadores de WhatsApp de los números que devuelva el parámetro status
con el valor valid
. Los usuarios válidos son aquellos que tienen una cuenta de WhatsApp. Utiliza los identificadores de WhatsApp para enviar mensajes y notificaciones.
Repite estos pasos con frecuencia para administrar tu lista de usuarios válidos. Los resultados se almacenan en caché en la base de datos del cliente de la API de instalaciones locales de WhatsApp Business durante siete días.
Se admiten los siguientes parámetros en las llamadas POST
a /v1/contacts
:
Nombre | Descripción |
---|---|
| Opcional. Indica si la solicitud debe esperar a que finalice el proceso o no antes de devolver una respuesta. Consulta Bloqueos a continuación para obtener más información. Valores posibles: |
| Obligatorio. La matriz de números de teléfono que se validarán. Los números pueden tener cualquier formato de número de teléfono estándar. El formato recomendado de los números de teléfono de contacto es con un signo "+" ( |
| Opcional. Indica si debe consultarse la memoria caché de contactos o no. Por lo general, la información de contacto se guarda en la memoria caché durante 7 días. Si se configura el parámetro Valores posibles: |
Los siguientes perímetros están conectados a este nodo:
Perímetro | Descripción |
---|---|
Usa este perímetro para administrar las identidades de los usuarios. Si quieres obtener más información, consulta Cómo interpretar el cambio de identidad en WhatsApp Business. |
El parámetro blocking
tiene dos opciones: no_wait
y wait
. Si el parámetro blocking
no se especifica en una llamada, será no_wait
de forma predeterminada.
El parámetro blocking
determina si la solicitud debe esperar a que finalice el procesamiento (sincrónico) o no (asincrónico).
Configuración | Descripción |
---|---|
| El procesamiento de los números de teléfono es asincrónico. Es posible que la respuesta contenga números con
|
| El procesamiento de los números es sincrónico. Verás el estado final de todos los contactos luego de la sincronización con el servidor. Esta configuración hace que el bloque de consultas espere a que se hayan comprobado todos los números para devolver los resultados. Esto puede llevar algo de tiempo. |
Los números de teléfono de la solicitud contacts
pueden estar en cualquier formato que permita el marcado.
Si no hay un signo más (+
) delante del número de teléfono, el código de país se determina usando el número con el que está registrado tu cliente de la API de instalaciones locales de WhatsApp Business. Por lo tanto, los números de teléfono asociados con otro código de país producirán un error.
La práctica recomendada es siempre especificar el código del país con el número de teléfono y colocar un signo más (+
) adelante.
Ten en cuenta que el código de país se puede usar aunque el número que aparece después de +
no sea válido. Te recomendamos validar los números de teléfono antes de usar la API de instalaciones locales para obtener un comportamiento predecible.
Aquí se proporcionan algunos ejemplos en los que se demuestra este comportamiento, suponiendo que el cliente de la API de instalaciones locales de WhatsApp Business está registrado con un número de teléfono de la India (es decir, el código de país es +91
):
Número de teléfono | Número de teléfono traducido |
---|---|
|
|
|
|
|
|
|
|
|
|
La carga útil de respuesta de contacts
incluye la misma matriz de números de teléfono que se envió en la solicitud con las propiedades input
, status
y wa_id
.
Nombre | Descripción |
---|---|
| El valor que enviaste en el campo |
Versión 2.41 y anteriores | El estado del usuario Valores posibles:
|
Versión 2.43 y posteriores | El estado del usuario Valores posibles:
|
Versión 2.41 y anteriores | El identificador de usuario de WhatsApp que se puede usar en otras llamadas. Solo se devuelve si el |
Versión 2.43 y posteriores | El identificador de usuario de WhatsApp, que puede o no ser válido. Como no existe garantía de que el valor sea válido, evita usar este valor en las llamadas subsiguientes. |
Además del estado de processing
, debes ver un estado HTTP de 200 OK
.
Si se envía un mensaje de plantilla a un número de teléfono que no dispone de una cuenta de WhatsApp, recibirás un mensaje de error en el que se indicará "Usuario no válido" y el código de error 1013
.
Si hay otros errores en la respuesta, consulta Mensajes de error y de estado para obtener más información.
El bloqueo se puede considerar una función defensiva, que permite evitar que las personas malintencionadas continúen realizando acciones ofensivas. Para bloquear un contacto, es necesario que este te haya enviado un mensaje en las últimas 24 horas.
Envía una llamada de la API a /v1/contacts/{phone_number}/block
con un motivo para bloquear a otra cuenta de WhatsApp.
POST /v1/contacts/+16315551000/block { "reason": "Optional string(0;60). Freeform block reason. Will be used when another WhatsApp account is being blocked" }
Una respuesta tiene estado HTTP 200
y ningún objeto "errors".
Una respuesta fallida tiene este aspecto:
{ "errors": [ { "code": 2048, "title": "Not engaged contact", "details": "Invalid Request. This contact hasn't engaged with you in the last 24 hrs." } ] }
Se admiten los siguientes parámetros en las llamadas POST a /v1/contacts/{phone_number}/block
:
Configuración | Descripción |
---|---|
| Opcional. Motivo de bloqueo con formato libre. Se usará cuando se bloquee otra cuenta de WhatsApp. Debe tener menos de 60 caracteres. |
| Obligatorio. Los números pueden tener cualquier formato de número de teléfono estándar. El formato recomendado de los números de teléfono de contacto es con un signo (+) y el código de país. Para obtener más información, consulta Formatos de los números de teléfono. |
Haz esta llamada para desbloquear un contacto.
Envía una llamada de la API a /v1/contacts/{phone_number}/unblock
.
POST /v1/contacts/+16315551000/unblock
Una respuesta tiene estado HTTP 200
y ningún objeto "errors".
Una respuesta fallida tiene este aspecto:
{ "errors": [ { "code": 1009, "title": "Parameter value is not valid", "details": "Provided WhatsApp ID is not valid. Please provide a valid WhatsApp ID or a phone number with a country code" } ] }
Se admiten los siguientes parámetros en las llamadas POST a /v1/contacts/{phone_number}/unblock
:
Configuración | Descripción |
---|---|
| Obligatorio. Los números pueden tener cualquier formato de número de teléfono estándar. El formato recomendado de los números de teléfono de contacto es con un signo (+) y el código de país. Para obtener más información, consulta Formatos de los números de teléfono. |
Puedes obtener una lista de tus contactos bloqueados de la siguiente manera.
Envía una llamada de la API a /v1/contacts/blocklist
para recibir una lista paginada de tus contactos bloqueados.
GET /v1/contacts/blocklist?limit=10&offset=0
Recibirás una respuesta con una página de tu lista de bloqueo junto con información de paginación.
{ "contacts": [ { "wa_id": "16315551000@s.whatsapp.net" } ], "pagination": { "limit": 10, "offset": 0, "total": 1 } }
Se admiten los siguientes parámetros en las llamadas GET a /v1/contacts/blocklist
:
Configuración | Descripción |
---|---|
| Opcional. El rango aceptado es (0; 200]. Predeterminado: 100. |
| Opcional. Predeterminado: 0. |
Los informes proporcionan señales fundamentales para crear una solución preventiva contra las personas malintencionadas. Antes de reportar un contacto, es necesario que este te haya enviado un mensaje en las últimas 24 horas.
Envía una llamada de la API a /v1/contacts/{phone_number}/report
que contenga un motivo, si estás bloqueando a otra cuenta de WhatsApp.
POST /v1/contacts/+16315551000/block { "reason": "Optional string(0;60). Freeform block reason. Will be used when another WhatsApp account is being blocked", "block": "true | false optional boolean with default of false", "message_id": "message-id. Optional reported message id" }
Una respuesta tiene estado HTTP 200
y ningún objeto "errors".
Una respuesta fallida tiene este aspecto:
{ "errors": [ { "code": 2048, "title": "Not engaged contact", "details": "Invalid Request. This contact hasn't engaged with you in the last 24 hrs." } ] }
Se admiten los siguientes parámetros en las llamadas POST a /v1/contacts/{phone_number}/report
:
Configuración | Descripción |
---|---|
| Opcional. Motivo de bloqueo con formato libre. Se usará cuando se bloquee otra cuenta de WhatsApp. Debe tener menos de 60 caracteres. |
| Opcional. El valor predeterminado es Indica si también hay que bloquear al contacto o solo reportarlo. |
| Opcional. Identificador del mensaje que se reportará. Si no se especifica, se enviarán los últimos cinco mensajes a WhatsApp. |
| Obligatorio. Los números pueden tener cualquier formato de número de teléfono estándar. El formato recomendado de los números de teléfono de contacto es con un signo (+) y el código de país. Para obtener más información, consulta Formatos de los números de teléfono. |