Envío de SMS en C++: API con biblioteca LibCurl y solicitudes REST

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Envío de SMS en C++: Guía completa para usar la API con la biblioteca LibCurl



El envío de mensajes SMS es una de las funciones clave de las aplicaciones modernas: desde la autenticación de dos factores hasta las notificaciones de estado de pedidos. En el ecosistema de C++ no existen herramientas integradas para trabajar con pasarelas SMS, sin embargo, con la ayuda de la biblioteca universal libcurl y las solicitudes HTTP estándar, se puede integrar fácilmente cualquier API REST de un proveedor de SMS. En este artículo, analizaremos cómo escribir una función robusta para enviar SMS en C++ usando la biblioteca LibCurl, y veremos ejemplos típicos para servicios populares (Twilio, SMS Aero, Bytehand).



¿Por qué LibCurl?

LibCurl es una biblioteca multiplataforma para la transferencia de datos a través de varios protocolos (HTTP, HTTPS, FTP, etc.). Soporta:

  • Solicitudes GET, POST, PUT, DELETE
  • SSL/TLS (HTTPS)
  • Trabajo con encabezados y cuerpo de la solicitud
  • Procesamiento de respuestas del servidor

Para enviar SMS, basta con realizar una solicitud POST a la API del proveedor seleccionado, pasando los parámetros necesarios (número de teléfono, texto, clave API). LibCurl se encarga de todo el trabajo de bajo nivel con sockets y cifrado.



Instalación de la biblioteca

En la mayoría de las distribuciones de Linux, LibCurl se puede instalar a través del gestor de paquetes:

sudo apt-get install libcurl4-openssl-dev  # Ubuntu/Debiansudo yum install libcurl-devel             # CentOS/RHEL

Para Windows, puede descargar las DLL precompiladas desde el sitio oficial o usar vcpkg:

vcpkg install curl

Inclusión en el código:

#include <curl/curl.h>#include <string>#include <json/json.h>  // si usa JSON (nlohmann/json)


Estructura básica de la función SMS

Crearemos una función universal sendSms que recibe la URL de la API, la clave, el número de destinatario y el texto del mensaje. Para trabajar con JSON, es conveniente usar la biblioteca nlohmann/json (solo cabecera, no requiere compilación).



#include <iostream>#include <string>#include <curl/curl.h>#include <nlohmann/json.hpp>

using json = nlohmann::json;

// Callback para escribir la respuesta del servidorstatic size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp) { ((std::string*)userp)->append((char*)contents, size * nmemb); return size * nmemb;}

bool sendSms(const std::string& url, const std::string& apiKey, const std::string& phone, const std::string& message) { CURL *curl; CURLcode res; std::string readBuffer;

curl_global_init(CURL_GLOBAL_DEFAULT); curl = curl_easy_init();

if(!curl) return false;

// Formamos el cuerpo JSON de la solicitud json payload; payload["phone"] = phone; payload["text"] = message; payload["api_key"] = apiKey;

std::string jsonStr = payload.dump();

// Configuración de la solicitud HTTP struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Content-Type: application/json"); headers = curl_slist_append(headers, "Accept: application/json");

curl_easy_setopt(curl, CURLOPT_URL, url.c_str()); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, jsonStr.c_str()); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);

// Ejecutamos la solicitud res = curl_easy_perform(curl);

// Limpieza curl_easy_cleanup(curl); curl_global_cleanup();

if(res != CURLE_OK) { std::cerr << "Error curl: " << curl_easy_strerror(res) << std::endl; return false; }

// Parseamos la respuesta (ejemplo para Twilio) try { json response = json::parse(readBuffer); if(response.co

Recommendations