إرسال الرسائل النصية القصيرة (SMS) باستخدام Rust: RustSMS — مكتبة API للعمل مع بوابات SMS

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

إرسال الرسائل النصية القصيرة (SMS) باستخدام Rust: نظرة عامة على مكتبة RustSMS



في عالم تطوير الويب والأتمتة الحديث، لا يزال إرسال رسائل SMS مهمة مطلوبة: بدءًا من المصادقة الثنائية وصولاً إلى الإشعارات بحالة الطلب. إذا كنت تكتب بلغة Rust وتبحث عن طريقة موثوقة للتكامل مع مزودي خدمة SMS، فإن مكتبة RustSMS هي ما تحتاجه. فهي توفر واجهة برمجة تطبيقات (API) موحدة وغير متزامنة وآمنة من حيث الأنواع للعمل مع عشرات بوابات SMS (مثل Twilio وVonage وClickatell وSMS.ru وغيرها).



في هذه المقالة، سنستعرض الميزات الرئيسية لـ RustSMS، ونعرض أمثلة على الكود، ونشرح كيف تبدأ في إرسال الرسائل في دقائق معدودة.



الميزات الرئيسية لـ RustSMS

  • واجهة موحدة — بغض النظر عن المزود الذي تختاره، تستخدم نفس مجموعة الأساليب.
  • عدم التزامن — المكتبة مبنية على tokio و reqwest، مما يسمح بعدم حظر الخيط الرئيسي.
  • دعم البوابات الشهيرة — Twilio، Vonage (Nexmo)، Clickatell، SMS.ru، MessageBird وغيرها.
  • إعدادات آمنة من حيث الأنواع — يتم التحقق من جميع المعلمات (الرقم، النص، المزود) في مرحلة الترجمة.
  • سهولة التوسيع — يمكنك كتابة المحول الخاص بك لأي بوابة مخصصة.


التثبيت

أضف التبعية إلى ملف Cargo.toml الخاص بك:

[dependencies]rustsms = "0.5"tokio = { version = "1", features = ["full"] }


مثال أساسي لإرسال SMS

قبل الإرسال، يجب إنشاء إعدادات للمزود المختار. لنلقِ نظرة على مثال مع Twilio:

use rustsms::{SmsClient, providers::twilio::TwilioConfig};use std::error::Error;

#[tokio::main]async fn main() -> Result<(), Box> { // إنشاء إعدادات لـ Twilio let config = TwilioConfig::new( "YOUR_ACCOUNT_SID", "YOUR_AUTH_TOKEN", "+1234567890", // رقم المرسل الخاص بك );

// تهيئة العميل let client = SmsClient::new(config);

// إرسال الرسالة let response = client .send("+0987654321", "مرحباً من Rust!") .await?;

println!("تم إرسال SMS! المعرف: {}", response.message_id); Ok(())}


العمل مع مزودين متعددين

تتيح لك RustSMS التبديل بسهولة بين المزودين. للقيام بذلك، ما عليك سوى تغيير الإعدادات:

use rustsms::{SmsClient, providers::vonage::VonageConfig};

let config = VonageConfig::new( "YOUR_API_KEY", "YOUR_API_SECRET", "RustSMS",);let client = SmsClient::new(config);


معالجة الأخطاء والحالات

تقوم المكتبة بإرجاع أخطاء مفصلة إذا حدث خطأ ما. يمكنك معالجتها باستخدام مطابقة الأنماط:

match client.send("+1111111111", "اختبار").await {    Ok(response) => println!("نجاح: {:?}", response),    Err(e) => match e {        rustsms::Error::Api { code, message } => {            eprintln!("خطأ API {}: {}", code, message);        }        rustsms::Error::Network(e) => {            eprintln!("خطأ في الشبكة: {}", e);        }        _ => eprintln!("خطأ غير معروف"),    },}


الميزات المتقدمة: القوالب والرؤوس المخصصة

تدعم RustSMS إرسال الرسائل باستخدام القوالب (على سبيل المثال، لأكواد OTP) والرؤوس المخصصة لـ HTTP. مثال مع قالب:

let otp_code = 123456;let message = format!("رمز التحقق الخاص بك: {}", otp_code);client    .send("+1111111111", &message)    .await?;

للسيناريوهات الأكثر تعقيدًا (على سبيل المثال، الإرسال عبر بوابة SMS مع معلمات إضافية)، يمكنك استخدام الأسلوب send_with_opts:

use rustsms::options::SendOptions;

let opts = SendOptions::new() .with_callba

توصيات