Envío de SMS en PHP: revisión de bibliotecas API y soluciones listas
En las aplicaciones web modernas, el envío de mensajes SMS sigue siendo una función demandada: confirmación de registro, autenticación de dos factores, notificaciones sobre el estado del pedido. En este artículo, analizaremos cómo implementar el envío de SMS en PHP utilizando bibliotecas API y servicios populares. Consideraremos tanto los SDK oficiales como las soluciones ligeras basadas en cURL.
1. Elección del proveedor de SMS y la biblioteca
Antes de comenzar, debe registrarse en uno de los servicios de SMS y obtener una clave API. Para PHP, existen varias opciones probadas:
- sms.ru – servicio ruso popular con una API simple y una biblioteca oficial para PHP.
- Twilio – gigante internacional con un potente SDK para PHP (twilio/sdk).
- ClickSend – servicio universal con soporte para REST API.
- Clase simple con cURL – si no desea agregar dependencias externas.
2. Instalación de bibliotecas a través de Composer
Para trabajar con Twilio o ClickSend, lo más conveniente es usar Composer. Ejemplo de instalación:
composer require twilio/sdkcomposer require clicksend/clicksend-phpPara sms.ru, la biblioteca oficial también se instala a través de Composer:
composer require smsru/smsruSi prefiere no usar un gestor de dependencias, puede descargar los archivos PHP manualmente desde GitHub o escribir su propia clase con cURL.
3. Ejemplo de envío de SMS a través de sms.ru
El servicio sms.ru proporciona una API simple y clara. A continuación se muestra un ejemplo de envío de un mensaje utilizando la biblioteca oficial:
<?phprequire_once 'vendor/autoload.php';
use SMSRU\\SMSRU;
$sms = new SMSRU('SU_CLAVE_API');
$data = new stdClass();$data->to = '79123456789'; // Número del destinatario$data->text = 'Mensaje de prueba'; // Texto del SMS$data->from = 'MiSitio'; // Nombre del remitente (firma)
$response = $sms->send_one($data);
if ($response->status == 'OK') { echo "Mensaje enviado. ID: " . $response->sms_id;} else { echo "Error: " . $response->status_text;}?>Importante: previamente, en el panel de control de sms.ru, debe registrar la firma del remitente y recargar el saldo.
4. Envío de SMS a través del SDK de Twilio
Twilio es uno de los servicios más confiables para envíos internacionales. Ejemplo de código en PHP:
<?phprequire_once 'vendor/autoload.php';
use Twilio\\Rest\\Client;
$account_sid = 'SU_ACCOUNT_SID';$auth_token = 'SU_AUTH_TOKEN';$twilio_number = '+1234567890'; // Número obtenido en Twilio
$client = new Client($account_sid, $auth_token);
$message = $client->messages->create( '+79123456789', // Número del destinatario [ 'from' => $twilio_number, 'body' => '¡Saludos desde Twilio y PHP!' ]);
echo "Enviado con ID: " . $message->sid;?>Twilio admite comunicación bidireccional, webhooks y verificación del estado de entrega.
5. Implementación sin bibliotecas externas (cURL)
Si no desea usar Composer, puede escribir una función universal con cURL. Ejemplo para sms.ru:
<?phpfunction sendSms($api_key, $phone, $message) { $url = 'https://sms.ru/sms/send'; $params = [ 'api_id' => $api_key, 'to' => $phone, 'msg' => $message, 'json' => 1 ];
$ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $params); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch); curl_close($ch);
return json_decode($response, true);}
$result = sendSms('