Envío de SMS en Rust: revisión de bibliotecas API

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 Rust: Revisión de API y bibliotecas

Rust es un lenguaje de programación de sistemas moderno que combina alto rendimiento y seguridad de memoria. Aunque el ecosistema de Rust es más joven que el de Python o JavaScript, ya cuenta con todas las herramientas necesarias para la integración con servicios de SMS. En este artículo, veremos cómo enviar mensajes SMS desde aplicaciones Rust utilizando API y bibliotecas populares.



Enfoques principales para el envío de SMS

Existen dos formas principales de enviar SMS desde Rust:

  • Uso de un cliente HTTP — llamada directa a la API REST del proveedor de SMS (Twilio, Vonage, SMS-Centro, etc.)
  • Uso de crates especializados — bibliotecas listas que envuelven la API del proveedor en una interfaz conveniente de Rust


Opción 1: Envío de SMS a través de la API de Twilio

Twilio es uno de los servicios más populares para enviar SMS. Para trabajar con él, necesitarás reqwest (cliente HTTP) y serde (serialización/deserialización JSON).



// Cargo.toml[dependencies]reqwest = { version = "0.12", features = ["json"] }serde = { version = "1.0", features = ["derive"] }serde_json = "1.0"tokio = { version = "1", features = ["full"] }

// main.rsuse reqwest::Client;use serde::{Deserialize, Serialize};

#[derive(Serialize)]struct TwilioSmsRequest { To: String, From: String, Body: String,}

#[derive(Deserialize, Debug)]struct TwilioSmsResponse { sid: String, status: String,}

#[tokio::main]async fn main() -> Result<(), Box<dyn std::error::Error>> { let account_sid = "YOUR_TWILIO_ACCOUNT_SID"; let auth_token = "YOUR_TWILIO_AUTH_TOKEN"; let from_number = "+1234567890"; // Número comprado en Twilio let to_number = "+0987654321";

let client = Client::new(); let url = format!("https://api.twilio.com/2010-04-01/Accounts/{}/Messages.json", account_sid);

let request_body = TwilioSmsRequest { To: to_number.to_string(), From: from_number.to_string(), Body: "¡Hola desde Rust!".to_string(), };

let response = client .post(&url) .basic_auth(account_sid, Some(auth_token)) .form(&request_body) .send() .await?;

let sms_response: TwilioSmsResponse = response.json().await?; println!("¡SMS enviado! SID: {}, Estado: {}", sms_response.sid, sms_response.status);

Ok(())}


Opción 2: Uso del crate twilio

Para un trabajo más cómodo con Twilio, existe un crate especializado twilio. Proporciona una API tipificada y maneja automáticamente la autorización.



// Cargo.toml[dependencies]twilio = "0.5"tokio = { version = "1", features = ["full"] }

// main.rsuse twilio::Client;

#[tokio::main]async fn main() -> Result<(), Box<dyn std::error::Error>> { let client = Client::new( "YOUR_TWILIO_ACCOUNT_SID", "YOUR_TWILIO_AUTH_TOKEN" );

let message = client .send_message("+1234567890", "+0987654321", "Hello from Rust!") .await?;

println!("¡Mensaje enviado! SID: {}", message.sid); Ok(())}


Opción 3: Envío de SMS a través de Vonage (Nexmo)

Vonage (anteriormente Nexmo) es otro proveedor popular. Para trabajar con él, puedes usar el crate vonage.



// Cargo.toml[dependencies]vonage = "0.2"tokio = { version = "1", features = ["full"] }

// main.rsuse vonage::VonageClient;

#[tokio::main]async fn main() -> Result<(), Box<dyn std::error::Error>> { let client = VonageClient::new( "YOUR_VONAGE_API_KEY", "YOUR_VONAGE_API_SECRET" );

let response = client .send_sms("VonageAPI", "79001234567", "¡Hola desde Rust!")

Recommendations