/v1/contacts
Usa el nodo contacts
para administrar los usuarios de WhatsApp de tu base de datos mediante una validación previa al envío de mensajes y una verificación de su identidad con hashes de identidad.
Con el nodo contacts
puedes hacer lo siguiente:
status
sea valid
para poder enviar mensajes 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 tener que traducirlo antes a un identificador de WhatsApp mediante el nodo contacts
.
A partir de la versión 2.43, vamos a reutilizar el nodo contacts
para que deje de proporcionar información de estado sobre un número de teléfono. Independientemente de si un usuario tiene WhatsApp, siempre devolverá valid
para status
en la respuesta y un wa_id.
Debes presentar una opción a los clientes para que acepten participar en conversaciones de WhatsApp con tu empresa. Tu empresa es responsable de mantener este proceso de consentimiento. Cuando el cliente otorgue su consentimiento, usa el nodo contacts
para validar el número registrado. Consulta Obtener el consentimiento para WhatsApp a fin de obtener más información.
Si una empresa usa el extremo de forma indebida, se llevarán a cabo las acciones siguientes:
Recomendamos comprobar los contactos antes de enviarles mensajes. Sin embargo, no es necesario que lo hagas cuando respondas a mensajes entrantes de clientes, ya que puedes responder de inmediato con el campo wa_id
proporcionado. No existe ningún coste adicional, ya que los resultados están almacenados en caché.
Antes de enviar mensajes a los usuarios que hayan otorgado su consentimiento, envía una solicitud POST
al extremo /v1/contacts
para crear una solicitud de validación del usuario de la cuenta de WhatsApp. En la llamada, incluye una lista de los números de teléfono que quieras 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 valor actual de status
de los números solicitados y sus 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 devuelvan el campo status
establecido en valid
. Los usuarios válidos son aquellos que tienen una cuenta de WhatsApp. Usa los identificadores de WhatsApp para enviar mensajes y notificaciones.
Repite estos pasos de manera regular para administrar tu lista de usuarios válidos. Los resultados se almacenan en caché en la base de datos del cliente de la API local de WhatsApp Business durante siete días.
Los parámetros siguientes son compatibles con las llamadas POST
a /v1/contacts
:
Nombre | Descripción |
---|---|
| Opcional. Indica si la solicitud debe esperar a que se complete el procesamiento antes de devolver una respuesta. Para obtener más información, lee la sección Bloqueo que se incluye a continuación. Valores posibles: |
| Obligatorio. Matriz de números de teléfono que estás validando. Los números pueden tener cualquier formato de número de teléfono estándar. El formato recomendado para los números de teléfono de contacto incluye un signo más ( |
| Opcional. Indica si se debe comprobar la caché de contactos. La información de contacto normalmente se almacena en caché durante siete días. Al establecer el parámetro Valores posibles: |
Los perímetros siguientes están conectados a este nodo:
Perímetro | Descripción |
---|---|
Usa este perímetro para administrar las identidades de los usuarios. Consulta Explicación del cambio de identidad de WhatsApp Business para obtener más información. |
Hay dos opciones para el parámetro blocking
: no_wait
y wait
. Si el parámetro blocking
no se especifica en una llamada, el valor predeterminado es no_wait
.
El parámetro blocking
determina si la solicitud debe esperar a que se termine el procesamiento (síncrona) o no (asíncrona).
Configuración | Descripción |
---|---|
| El procesamiento de los números de teléfono es asíncrono. La respuesta puede incluir algunos números con el campo
|
| El procesamiento de los números es síncrono. Ves el estado final de todos los contactos después de la sincronización con el servidor. Esta configuración hace que el bloqueo de la consulta espere hasta que se hayan comprobado todos los números para devolver los resultados. La operación puede tardar cierto tiempo. |
Los números de teléfono de la solicitud contacts
pueden estar en cualquier formato que se pueda marcar.
Cuando no se incluye un signo más (+
) al principio del número de teléfono, el código de país se determina mediante el número de teléfono con el que está registrado tu cliente de la API local de WhatsApp Business, de modo que se producirá un error en los números de teléfono asociados a un código de país distinto.
En todos los casos, la práctica recomendada consiste en especificar el código de país con el número de teléfono y añadir de forma explícita un signo más (+
) como prefijo.
Ten en cuenta que el código de país se puede seguir usando si el número que va después de +
no es válido. Se recomienda validar los números de teléfono antes de usarlos en la API local para obtener un comportamiento predecible.
A continuación, se incluyen algunos ejemplos en los que se muestra este comportamiento. En ellos, se supone que el cliente de la API local 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 la respuesta de contacts
contiene la misma matriz de números de teléfono enviada en la solicitud con las propiedades input
, status
y wa_id
:
Nombre | Descripción |
---|---|
| Valor enviado en el campo |
Versión 2.41 y anteriores | Estado del usuario. Valores posibles:
|
Versión 2.43 y posteriores | Estado del usuario. Valores posibles:
|
Versión 2.41 y anteriores | Identificador de usuario de WhatsApp que se puede usar en otras llamadas. Solo se devuelve si el valor de |
Versión 2.43 y posteriores | Identificador de usuario de WhatsApp devuelto, que puede ser válido o no. Como no hay ninguna garantía de que el valor sea válido, evita usarlo en las llamadas posteriores. |
Junto con el estado processing
, deberías ver el estado HTTP 200 OK
.
Si se envía un mensaje de plantilla a un número de teléfono sin cuenta de WhatsApp, recibirás un mensaje de error en el que se indica “El usuario no es válido” con el código de error 1013
.
Para otros errores en la respuesta, consulta Mensajes de error y de estado.
El bloqueo se puede considerar una función defensiva para impedir que personas malintencionadas prosigan sus acciones nocivas. Para bloquear un contacto, tiene que haberte enviado un mensaje en las últimas 24 horas.
Envía una llamada a la API a /v1/contacts/{phone_number}/block
con un motivo para bloquear 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 correcta tiene el estado HTTP 200
y ningún objeto “errors”.
Las respuestas que no se completan correctamente tienen este aspecto:
{ "errors": [ { "code": 2048, "title": "Not engaged contact", "details": "Invalid Request. This contact hasn't engaged with you in the last 24 hrs." } ] }
Los parámetros siguientes son compatibles con las llamadas POST a /v1/contacts/{phone_number}/block
:
Configuración | Descripción |
---|---|
| Opcional. Motivo de bloqueo sin formato. 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 para los números de teléfono de contacto incluye un signo más (+) y el código de país. Para obtener más información, consulta Formatos de número de teléfono. |
Realiza esta llamada para desbloquear un contacto.
Envía una llamada a la API a /v1/contacts/{phone_number}/unblock
.
POST /v1/contacts/+16315551000/unblock
Una respuesta correcta tiene el estado HTTP 200
y ningún objeto “errors”.
Las respuestas que no se completan correctamente tienen 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" } ] }
Los parámetros siguientes son compatibles con 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 para los números de teléfono de contacto incluye un signo más (+) y el código de país. Para obtener más información, consulta Formatos de número de teléfono. |
Sigue los pasos siguientes para obtener una lista de los contactos bloqueados.
Envía una llamada a la API a /v1/contacts/blocklist
para recibir una lista paginada de los contactos bloqueados.
GET /v1/contacts/blocklist?limit=10&offset=0
Recibirás una respuesta con una página de la lista de bloqueo junto con información sobre la paginación.
{ "contacts": [ { "wa_id": "16315551000@s.whatsapp.net" } ], "pagination": { "limit": 10, "offset": 0, "total": 1 } }
Los parámetros siguientes son compatibles con las llamadas GET a /v1/contacts/blocklist
:
Configuración | Descripción |
---|---|
| Opcional. El intervalo aceptado es (0; 200). Valor predeterminado: 100. |
| Opcional. Valor predeterminado: 0. |
Los informes proporcionan señales cruciales para crear una solución preventiva contra personas malintencionadas. Para poder denunciar a un contacto, tiene que haberte enviado un mensaje en las últimas 24 horas.
Envía una llamada a la API a /v1/contacts/{phone_number}/report
con un motivo si bloqueas 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 correcta tiene el estado HTTP 200
y ningún objeto “errors”.
Las respuestas que no se completan correctamente tienen este aspecto:
{ "errors": [ { "code": 2048, "title": "Not engaged contact", "details": "Invalid Request. This contact hasn't engaged with you in the last 24 hrs." } ] }
Los parámetros siguientes son compatibles con las llamadas POST a /v1/contacts/{phone_number}/report
:
Configuración | Descripción |
---|---|
| Opcional. Motivo de bloqueo sin formato. Se usará cuando se bloquee otra cuenta de WhatsApp. Debe tener menos de 60 caracteres. |
| Opcional. El valor predeterminado es Indica si también se debe bloquear el contacto o solo denunciarlo. |
| Opcional. Identificador de mensaje que se denunciará. Si no se especifica, los últimos cinco mensajes se enviarán a WhatsApp. |
| Obligatorio. Los números pueden tener cualquier formato de número de teléfono estándar. El formato recomendado para los números de teléfono de contacto incluye un signo más (+) y el código de país. Para obtener más información, consulta Formatos de número de teléfono. |