إرسال الرسائل النصية القصيرة (SMS) باستخدام Rust: نظرة عامة على API والمكتبات
Rust هي لغة برمجة أنظمة حديثة تجمع بين الأداء العالي وأمان الذاكرة. على الرغم من أن النظام البيئي لـ Rust أصغر سنًا من Python أو JavaScript، إلا أنه يحتوي بالفعل على جميع الأدوات اللازمة للتكامل مع خدمات الرسائل النصية القصيرة (SMS). في هذه المقالة، سننظر في كيفية إرسال رسائل SMS من تطبيقات Rust باستخدام APIs والمكتبات الشائعة.
الطرق الأساسية لإرسال الرسائل النصية القصيرة (SMS)
هناك طريقتان رئيسيتان لإرسال الرسائل النصية القصيرة (SMS) من Rust:
- استخدام عميل HTTP — استدعاء مباشر لـ REST API لمزود خدمة SMS (Twilio، Vonage، SMS-Центр، وغيرها)
- استخدام صناديق (crates) متخصصة — مكتبات جاهزة تغلف API المزود في واجهة Rust سهلة الاستخدام
الخيار 1: إرسال الرسائل النصية القصيرة (SMS) عبر Twilio API
Twilio هي واحدة من أشهر خدمات إرسال الرسائل النصية القصيرة (SMS). للعمل معها، ستحتاج إلى reqwest (عميل HTTP) و serde (لتسلسل/إلغاء تسلسل 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"; // رقم تم شراؤه من 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: "مرحبًا من 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!("تم إرسال الرسالة النصية القصيرة! SID: {}, الحالة: {}", sms_response.sid, sms_response.status);
Ok(())}الخيار 2: استخدام الصندوق (crate) twilio
للعمل بشكل أكثر راحة مع Twilio، يوجد صندوق (crate) متخصص يسمى twilio. يوفر هذا الصندوق API بنمط محدد (typed) ويتعامل تلقائيًا مع المصادقة.
// 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!("تم إرسال الرسالة! SID: {}", message.sid); Ok(())}الخيار 3: إرسال الرسائل النصية القصيرة (SMS) عبر Vonage (Nexmo)
Vonage (المعروفة سابقًا باسم Nexmo) هي مزود آخر شائع. للعمل معها، يمكنك استخدام الصندوق (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", "مرحبًا من Rust!") أيضاً في المكتبة
التعلم الآلي باستخدام JavaScript (Node.js): مكتبات للتعلم الآلي
إرسال الرسائل النصية القصيرة (SMS) باستخدام Swift (iOS/macOS): واجهة برمجة التطبيقات MessageUI والخدمات الخارجية
عميل OAuth لـ Node.js: تنفيذ التفويض عبر Google وGitHub