Contactos

/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:

  • Verificar si un número de teléfono de tu base de datos pertenece a una cuenta de WhatsApp válida. Debes asegurarte de que la configuración de status sea valid para poder enviar un mensaje a un usuario.
  • Obtener el identificador de WhatsApp de un número de teléfono. Se necesitan los identificadores de WhatsApp para enviar mensajes y notificaciones a usuarios.

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..

Antes de empezar

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.

Limitaciones

  • Usa este punto de conexión para verificar si el número de teléfono de la base de datos de una empresa pertenece a una cuenta de WhatsApp válida.
  • La cantidad de llamadas no debe superar a la cantidad de mensajes que se envían desde el número de teléfono.

Cumplimiento de normas

Si una empresa utiliza el punto de conexión de manera incorrecta, se tomarán las siguientes medidas:

  • Todos los administradores que figuran en el administrador comercial recibirán una advertencia inicial por correo electrónico si hay sospechas de un uso indebido.
  • La empresa tendrá siete días después de haber recibido la advertencia para modificar su comportamiento.
  • Si después de este plazo las llamadas no se modificaron, el número de teléfono se inhabilitará de forma permanente.

Recomendaciones

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.

Creación

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.

Ejemplo

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.

Parámetros

Se admiten los siguientes parámetros en las llamadas POST a /v1/contacts:

Nombre Descripción

blocking

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:no_wait (predeterminado), wait

contacts

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 "+" (+) y el código de país. Para obtener más información, consulta la sección sobre formatos de número de teléfono más adelante.

force_check

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 force_check en true, se omitirá la memoria caché para garantizar que se realice una comprobación.


Valores posibles:false (predeterminado), true

Perímetros

Los siguientes perímetros están conectados a este nodo:

PerímetroDescripción

/{user-whatsapp-id}/identity

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.

Bloqueos

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ónDescripción

no_wait

El procesamiento de los números de teléfono es asincrónico.


Es posible que la respuesta contenga números con status configurado en processing. Si esto sucede, te recomendamos seguir estos pasos:

  1. Obtén una respuesta con algunos números marcados como processing.
  2. Envía una nueva solicitud de comprobación de contactos que incluya los números con el estado processing.
  3. Si el procesamiento se realiza en tu nueva solicitud, recibirás el estado correcto de ese número (válido o inválido).
  4. Si aún ves números marcados como processing, repite el paso 2 hasta obtener una respuesta por cada número.

wait

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.

Formatos de número de teléfono

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éfonoNúmero de teléfono traducido

"+1-631-555-1002"

"+16315551002"

"6315551002"

"+916315551002"

"1-631-555-1002"

"+9116315551002"

"+1 (516) 283-7151"

"+15162837151"

"+54 9 11 5612-1008"

"+5491156121008"

Campos devueltos

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

input

El valor que enviaste en el campo contacts de la solicitud.

status

Versión 2.41 y anteriores

El estado del usuario


Valores posibles:

  • processing: la entrada aún está en proceso
  • valid: el usuario de WhatsApp es válido
  • invalid: el usuario de WhatsApp no es válido
  • failed: hubo un error al procesar esta comprobación

status

Versión 2.43 y posteriores

El estado del usuario


Valores posibles:

  • processing: la entrada aún está en proceso
  • valid: finalizó la verificación de contactos y se puede proceder al envío de mensajes
  • failed: hubo un error al procesar esta comprobación

wa_id

Versión 2.41 y anteriores

El identificador de usuario de WhatsApp que se puede usar en otras llamadas. Solo se devuelve si el status es valid.

wa_id

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.

Bloquear contactos

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.

Ejemplo

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."
        }
    ]
}

Parámetros

Se admiten los siguientes parámetros en las llamadas POST a /v1/contacts/{phone_number}/block:

ConfiguraciónDescripción

reason

Opcional.

Motivo de bloqueo con formato libre. Se usará cuando se bloquee otra cuenta de WhatsApp. Debe tener menos de 60 caracteres.

phone_number

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.

Desbloquear contactos

Haz esta llamada para desbloquear un contacto.

Ejemplo

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"
        }
    ]
}

Parámetros

Se admiten los siguientes parámetros en las llamadas POST a /v1/contacts/{phone_number}/unblock:

ConfiguraciónDescripción

phone_number

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.

Lista de bloqueo

Puedes obtener una lista de tus contactos bloqueados de la siguiente manera.

Ejemplo

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
   }
}

Parámetros

Se admiten los siguientes parámetros en las llamadas GET a /v1/contacts/blocklist:

ConfiguraciónDescripción

limit

Opcional.

El rango aceptado es (0; 200]. Predeterminado: 100.

offset

Opcional.

Predeterminado: 0.

Informes

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.

Ejemplo

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."
        }
    ]
}

Parámetros

Se admiten los siguientes parámetros en las llamadas POST a /v1/contacts/{phone_number}/report:

ConfiguraciónDescripción

reason

Opcional.

Motivo de bloqueo con formato libre. Se usará cuando se bloquee otra cuenta de WhatsApp. Debe tener menos de 60 caracteres.

block

Opcional.

El valor predeterminado es False.

Indica si también hay que bloquear al contacto o solo reportarlo.

message_id

Opcional.

Identificador del mensaje que se reportará. Si no se especifica, se enviarán los últimos cinco mensajes a WhatsApp.

phone_number

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.