Cómo Programar Mensajes En WhatsApp Con PHP La Guía Fácil

3 de enero de 2025

En este tutorial aprenderás a programar la entrega de mensajes usando la API.

Hay dos maneras de programar la entrega de un mensaje para una hora y/o día posterior: especificando el día y la hora exactos en los que quieres que se envíe o indicando cuántos minutos, horas o días deseas retrasar la entrega diferida.

Si quieres enviar mensajes desde código, puedes usar cualquier lenguaje de programación para realizar solicitudes HTTPS a la API. A continuación encontrarás el probador de API en vivo con ejemplos de código listos para usar en varios lenguajes de programación.

Requisitos

  • Tener un número de WhatsApp ya vinculado a la plataforma y en línea.
  • Número de teléfono del destinatario con prefijo internacional en formato E164. Ejemplo: +12345678909. Puedes validar el número de teléfono aquí.

Endpoint de la API

En este tutorial usaremos el siguiente endpoint de la API:

Preparar la solicitud

URL objetivo de la API (POST)

https://api.wassenger.com/v1/messages

Encabezados HTTPS requeridos

Content-Type: application/json
Token: ENTER API KEY HERE

Enviar un mensaje en una fecha específica en formato ISO8601

Ejemplo del cuerpo de la solicitud en formato JSON

<?php
$curl = curl_init();
curl_setopt_array($curl, [
  CURLOPT_URL => 'https://api.wassenger.com/v1/messages',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS => json_encode([
    'phone' => '+12345678909',
    'message' =>
      'This is a scheduled message to be sent to a phone number in 10 minutes',
    'deliverAt' => '2025-01-03T10:11:24.323Z',
  ]),
  CURLOPT_HTTPHEADER => [
    'Content-Type: application/json',
    'Token: API TOKEN GOES HERE',
  ],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
  echo 'cURL Error #:' . $err;
} else {
  echo $response;
}

También puedes enviar mensajes programados a un chat grupal:

<?php
$curl = curl_init();
curl_setopt_array($curl, [
  CURLOPT_URL => 'https://api.wassenger.com/v1/messages',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS => json_encode([
    'group' => '${group_ID@g.us}',
    'message' =>
      'This is a scheduled message to be sent tomorrow to a group chat.Date format is based on ISO 8601 format with default UTC time zone',
    'deliverAt' => '2025-01-04T10:01:24.323Z',
  ]),
  CURLOPT_HTTPHEADER => [
    'Content-Type: application/json',
    'Token: API TOKEN GOES HERE',
  ],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
  echo 'cURL Error #:' . $err;
} else {
  echo $response;
}

Retrasar la entrega de mensajes por minutos, horas o días

Ejemplo del cuerpo de la solicitud en formato JSON

Valores de ejemplo válidos serían: 1m = en 1 minuto, 2h = en 2 horas, 15d = en 15 días.

Los valores deben ser números enteros, así que si necesitas programar un mensaje para 1,5 horas, por ejemplo, debes especificar 90m = en 90 minutos

<?php
$curl = curl_init();
curl_setopt_array($curl, [
  CURLOPT_URL => 'https://api.wassenger.com/v1/messages',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS => json_encode([
    'phone' => '+12345678909',
    'message' =>
      'This is a scheduled message to be sent to a phone number in 10 minutes',
    'schedule' => [
      'delayTo' => '1h',
    ],
  ]),
  CURLOPT_HTTPHEADER => [
    'Content-Type: application/json',
    'Token: API TOKEN GOES HERE',
  ],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
  echo 'cURL Error #:' . $err;
} else {
  echo $response;
}

Alternativamente, puedes retrasar la entrega del mensaje por una cantidad dada de segundos:

<?php
$curl = curl_init();
curl_setopt_array($curl, [
  CURLOPT_URL => 'https://api.wassenger.com/v1/messages',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS => json_encode([
    'phone' => '+12345678909',
    'message' =>
      'This is a scheduled message to be sent to a phone number in 10 minutes',
    'schedule' => [
      'delayTo' => '180',
    ],
  ]),
  CURLOPT_HTTPHEADER => [
    'Content-Type: application/json',
    'Token: API TOKEN GOES HERE',
  ],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
  echo 'cURL Error #:' . $err;
} else {
  echo $response;
}

Pruebas en vivo de la API

Ahora puedes jugar, depurar y probar la API en vivo directamente desde tu navegador, explorar y probar más ejemplos de la API y obtener con un clic fragmentos de código listos para usar disponibles en más de 15 lenguajes de programación 😎

¿Tienes preguntas? Por favor consulta las preguntas frecuentes a continuación.

Preguntas frecuentes

Cómo enviar mensajes a múltiples números de teléfono

Solo tienes que enviar múltiples solicitudes a la API, una por cada número de teléfono destinatario.

Por ejemplo, si quieres enviar un mensaje a 10 números de teléfono, deberías enviar 10 solicitudes HTTPS independientes a la API.

No existe una opción para enviar múltiples mensajes en una sola solicitud a la API.

¿Qué tipo de mensajes se pueden enviar?

Puedes enviar distintos tipos de mensajes, incluyendo texto, imágenes, videos, emojis, audio, gifs, ubicaciones geográficas y documentos a través de la API.

Consulta otros tutoriales para más información.

Cómo validar si un número de teléfono puede recibir mensajes de WhatsApp

Puedes validar si un número de teléfono dado está vinculado a una cuenta de WhatsApp y puede recibir mensajes.

La API proporciona un endpoint que puede validar si un número de teléfono dado existe en WhatsApp o no.

El único requisito es tener al menos un número de WhatsApp conectado a la plataforma en tu cuenta actual.

Para más detalles, por favor consulta la documentación del endpoint de la API aquí.

Antes de verificar si un número de teléfono existe en WhatsApp, también puedes validar y normalizar el formato de una lista de números de teléfono usando el endpoint validador de números. Este endpoint solo valida el formato correcto E164, pero no comprueba si el número de teléfono existe efectivamente en WhatsApp o no.

Nota: El número de validaciones de comprobación en WhatsApp está limitado por mes según tu plan de suscripción. Por favor consulta la tabla de precios para más detalles sobre los límites.

¿Buscas más respuestas? Consulta las preguntas frecuentes ampliadas.

Recursos útiles adicionales

Documentación de la API

Para más detalles sobre el endpoint de la API, por favor consulta el documento donde encontrarás todos los detalles sobre los parámetros aceptados en la solicitud, posibles respuestas de éxito o error y ejemplos de código listos para usar en múltiples lenguajes de programación.

https://app.wassenger.com/docs/#tag/Messages

Ready to transform your WhatsApp communication?

Start automating your customer interactions today with Wassenger

Get Started Free