Enviar mensajes a grupos de WhatsApp usando PHP

24 de julio de 2024

Este tutorial te enseñará cómo enviar mensajes a grupos de WhatsApp usando la API.

Ya sea que estés coordinando un proyecto, construyendo una comunidad o gestionando soporte al cliente, Wassenger facilita reunir a las personas en torno a intereses y objetivos comunes. Con Wassenger, puedes gestionar y dinamizar tus grupos de WhatsApp, manteniendo a todos conectados e informados.

La potente API y las herramientas de automatización de Wassenger aumentan la comodidad y accesibilidad de los grupos de WhatsApp, asegurando la mejor comunicación y colaboración. Comparte mensajes de texto, videos, imágenes y notas de voz en un entorno dinámico para el intercambio de ideas y actualizaciones en tiempo real. Con Wassenger, mantenerse conectado con tu comunidad nunca ha sido tan eficiente ni efectivo.

Te enseñaremos en unos pocos pasos:

🤩 🤖 Wassenger es una plataforma de comunicación completa y una solución de API para WhatsApp. Explora más de 100+ casos de uso de la API y automatiza cualquier cosa en WhatsApp registrándote para una prueba gratuita y comienza en minutos!

Si necesitas enviar mensajes desde código, puedes usar cualquier lenguaje de programación para realizar solicitudes HTTPS a la API. A continuación está 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.
  • ID del grupo de WhatsApp (WID) que puedes encontrar de dos maneras:

Cómo obtener el ID del grupo de WhatsApp

Puedes obtener el ID del grupo de WhatsApp usando uno de estos métodos:

  1. Web: ve a ajustes del número > Grupos > Copia el WID del grupo.
  2. API: consulta los grupos disponibles en tu número usando este endpoint.

Endpoint de la API

Usaremos el siguiente endpoint de la API para enviar mensajes a un grupo:

🖥️ ¿Buscas un ejemplo de código? Ve al probador de API en vivo y obtén ejemplos de código listos para usar en más de 15 lenguajes de programación, incluidos Python, JavaScript, PHP, C#, Java, Ruby, Go, Powershell, cURL y más.

Enviar mensajes automatizados con PHP

  • 🔑 Configuración: la clave de la API, el ID del grupo y el mensaje se almacenan en variables.
  • 🛠️ Cliente y Solicitud: Un http\Client y una http\Client\Request.
  • 📝 Cuerpo: El cuerpo del mensaje se crea como un objeto JSON y se agrega al cuerpo de la solicitud.
  • 🔒 Encabezados: Se añaden encabezados para Content-Type y Token a la solicitud.
  • 📤 Envío de la Solicitud: La solicitud se encola y se envía. Se verifica la respuesta para ver si fue exitosa y se imprimen mensajes apropiados según el estado de la respuesta.
// Examples requires to have installed pecl_http package, a simple and elegant HTTP client for PHP.
// Install it by running: pecl install pecl_http
// More information: https://pecl.php.net/package/pecl_http/3.2.0
<?php
$client = new http\Client();
$request = new http\Client\Request();
$body = new http\Message\Body();
$body->append(
  json_encode([
    'group' => '1203630298136324@g.us',
    'message' => 'Sample group message',
  ])
);
$request->setRequestUrl('https://api.wassenger.com/v1/messages');
$request->setRequestMethod('POST');
$request->setBody($body);
$request->setHeaders([
  'Content-Type' => 'application/json',
  'Token' => 'API_TOKEN_GOES_HERE',
]);
$client->enqueue($request)->send();
$response = $client->getResponse();
echo $response->getBody();

🤩 🤖 Wassenger es una solución completa de API para WhatsApp. Regístrate para una prueba gratuita de 7 días y comienza en minutos!

Enviar mensajes automatizados con PHP (cURL)

  • 📲 Variables dinámicas: la clave de la API, el ID del grupo y el mensaje se almacenan en variables.
  • ⚙️ Configuración de cURL: curl_setopt_array se usa para configurar las opciones de cURL, incluyendo la URL, los encabezados, el método de la solicitud y el cuerpo de la solicitud.
  • 💻 Codificación JSON: La carga útil se crea usando json_encode para incorporar variables dinámicas.
  • ⚠️ Ejecución y manejo de errores: curl_exec ejecuta la solicitud y cualquier error se captura con curl_error. Luego se imprime la respuesta o el error.
<?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' => '120363029813632@g.us',
    'message' => 'Sample group message',
  ]),
  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;
}

Enviar imágenes a un chat de grupo con PHP (cURL)

<?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' => '120363029813632@g.us',
    'message' => 'This is a caption for an image message',
    'media' => [
      'url' => 'https://picsum.photos/seed/picsum/600/400',
      'viewOnce' => null,
    ],
  ]),
  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;
}

Enviar videos a un chat de grupo con PHP (cURL)

<?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' => '120363029813632@g.us',
    'message' => 'This is a caption for a video message',
    'media' => [
      'url' => 'https://download.samplelib.com/mp4/sample-5s.mp4',
      'viewOnce' => null,
    ],
  ]),
  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;
}

Enviar audio a un chat de grupo con PHP (cURL)

<?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' => '120363029813632@g.us',
    'media' => [
      'url' => 'https://download.samplelib.com/mp3/sample-9s.mp3',
      'format' => 'ptt',
    ],
  ]),
  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;
}

Enviar un documento a un chat de grupo con PHP (cURL)

<?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' => '120363029813632@g.us',
    'media' => [
      'url' => 'https://www.africau.edu/images/default/sample.pdf',
      'expiration' => '30d',
    ],
  ]),
  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;
}

🤩 🤖 Wassenger es una solución completa de API para WhatsApp. Regístrate para una prueba gratuita de 7 días y comienza en minutos!

Pruebas en vivo de la API

Puedes probar en vivo y jugar con la API directamente desde tu navegador.

Una vez que termines de probar, obtén el ejemplo de código autogenerado en tu lenguaje de programación preferido y estarás listo para comenzar.

Prueba nuestro probador API-Live ahora

🤩 🤖 Wassenger es una plataforma de comunicación completa y una solución de API para WhatsApp. Explora más de 100+ casos de uso de la API y automatiza cualquier cosa en WhatsApp registrándote para una prueba gratuita y comenzando en minutos!

FAQ

¿Puedo usar Wassenger para enviar mensajes de marketing?

Como quizá sepas, WhatsApp tiene políticas estrictas sobre el envío de mensajes de marketing no solicitados, contenido ilícito o spam.

El envío de mensajes de marketing o cualquier mensaje no solicitado a usuarios no está permitido y pondría tu número de WhatsApp en alto riesgo de ser bloqueado.

La comunicación por WhatsApp no es apropiada para todos los casos de negocio, por lo que recomendamos diseñar una estrategia de comunicación legítima y aprobada por los usuarios para evitar problemas.

Por favor, lee nuestras directrices sobre las mejores prácticas de comunicación y cómo prevenir que te bloqueen.

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

Tienes que enviar numerosas solicitudes a la API, una por cada número de teléfono objetivo.

Por ejemplo, para enviar un mensaje a 10 números de teléfono, debes enviar 10 solicitudes HTTPS independientes a la API.

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

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, consulta la documentación del endpoint de la API aquí.

Antes de comprobar 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.

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

¿Buscas más respuestas? Consulta las FAQs extendidas.

Recursos útiles adicionales

Documentación de la API 🖥️

Para más detalles sobre el endpoint de la API, consulta la documentación donde encontrarás todos los detalles sobre los parámetros de solicitud aceptados, 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/operation/createMessage

Ready to transform your WhatsApp communication?

Start automating your customer interactions today with Wassenger

Get Started Free