Envío de SMS en PHP: Revisión de bibliotecas API y ejemplos de integración
El envío de mensajes SMS sigue siendo una función demandada para aplicaciones web: autenticación de dos factores, notificaciones de pedidos, campañas de marketing. En PHP, esta tarea se resuelve a través de la API de servicios de terceros. En este artículo, analizaremos bibliotecas populares, formas de conectarlas y proporcionaremos ejemplos de código funcionales.
1. Servicios populares y sus bibliotecas PHP
La elección del proveedor depende de la región, el precio y los requisitos de entrega. Consideremos tres opciones:
- Twilio — líder internacional, proporciona un SDK para PHP (twilio/sdk). Adecuado para proyectos globales.
- SMS Aero — servicio ruso con una API REST simple y una biblioteca PHP oficial.
- smsc.ru — otro servicio nacional popular con tarifas bajas y scripts listos para usar.
2. Instalación mediante Composer
La mayoría de las bibliotecas modernas se instalan a través de Composer. Ejemplo para Twilio:
composer require twilio/sdkPara SMS Aero use:
composer require smsaero/smsaero-phpSi usa smsc.ru, puede prescindir de Composer — simplemente copie su clase PHP desde GitHub.
3. Ejemplo de envío de SMS a través de Twilio
La biblioteca Twilio requiere Account SID y Auth Token, que obtiene en su panel de control.
<?phprequire_once 'vendor/autoload.php';
use Twilio\\Rest\\Client;
// Sus datos$sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";$token = "your_auth_token";$twilio = new Client($sid, $token);
// Envío de SMS$message = $twilio->messages ->create( "+71234567890", // número del destinatario [ "from" => "+15017122661", // número del remitente (comprado en Twilio) "body" => "¡Hola! Este es un SMS de prueba de Twilio." ] );
echo "¡Mensaje enviado! SID: " . $message->sid;?>4. Envío de SMS a través de SMS Aero (API REST)
SMS Aero utiliza una clave API y un inicio de sesión. La biblioteca proporciona una interfaz conveniente:
<?phprequire_once 'vendor/autoload.php';
use Smsaero\\Smsaero;
$client = new Smsaero('your_email@example.com', 'your_api_key');
// Envío de mensaje$response = $client->send('71234567890', 'Mensaje de prueba de SMS Aero');
if ($response->success) { echo "SMS enviado. ID: " . $response->id;} else { echo "Error: " . $response->error;}?>5. Trabajar con smsc.ru (sin Composer)
Para smsc.ru puede usar solicitudes HTTP directas o su clase ya preparada. Ejemplo simple mediante cURL:
<?php$login = "your_login";$password = "your_password";$phones = "71234567890";$message = "¡Saludos desde smsc.ru!";
$url = "https://smsc.ru/sys/send.php?login=" . urlencode($login) . "&psw=" . urlencode($password) . "&phones=" . urlencode($phones) . "&mes=" . urlencode($message) . "&fmt=3"; // fmt=3 — respuesta en JSON
$ch = curl_init($url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);$response = curl_exec($ch);curl_close($ch);
$data = json_decode($response, true);if ($data['error'] ?? false) { echo "Error: " . $data['error'];} else { echo "SMS enviado. ID: " . $data['id'];}?>6. Manejo de errores y registro
Al enviar SMS es importante manejar correctamente los errores. Problemas típicos:
- Credenciales incorrectas (401 Unauthorized).
- Saldo insuficiente.
- Número en lista negra.
- Exceder los límites de envío.
Ejemplo de manejo de excepciones para Twilio:
<?phptry { $message = $twilio->messages->create(...); // registro de éxito error_log("SMS enviado: " . $message-&g También en la biblioteca
Puppeteer para JavaScript (Node.js): guía completa con ejemplos
Biblioteca WebSocket Ratchet para PHP: creación en tiempo real en el sitio web
Criptografía en PHP: cifrado y hash (guía práctica)
charm/bubbletea para Go: guía completa con ejemplos