إرسال SMS باستخدام TypeScript: نظرة عامة على API والمكتبات
غالبًا ما تتطلب تطبيقات الويب والخدمات الحديثة التكامل مع بوابات SMS لإرسال الإشعارات أو التأكيدات أو الرسائل التسويقية. يوفر TypeScript، كطبقة فوق JavaScript، تصنيفًا صارمًا، وهو مفيد بشكل خاص عند العمل مع واجهات برمجة التطبيقات الخارجية. في هذه المقالة، سننظر في كيفية تنظيم إرسال SMS من تطبيق TypeScript باستخدام المكتبات والخدمات الشائعة.
لماذا TypeScript للعمل مع SMS API؟
يضيف TypeScript تصنيفًا ثابتًا، مما يقلل من عدد الأخطاء في وقت التشغيل. عند العمل مع مزودي SMS، يعد هذا أمرًا بالغ الأهمية، لأن طلبات API غالبًا ما تحتوي على هياكل بيانات معقدة (أرقام الهواتف، النص، معلمات الإرسال). تساعد الأنواع في تجنب الأخطاء المطبعية في أسماء الحقول وضمان نقل البيانات بشكل صحيح.
المكتبات الرئيسية لإرسال SMS
هناك العديد من الخدمات الشائعة في السوق التي توفر HTTP API لإرسال SMS. سننظر في الخيارين الأكثر شيوعًا لـ TypeScript.
1. Twilio (SDK الرسمي)
Twilio هي إحدى الشركات الرائدة في سوق الاتصالات السحابية. SDK الرسمي لـ Node.js متوافق تمامًا مع TypeScript ويأتي مع أنواع جاهزة.
التثبيت:
npm install twilionpm install @types/twilio --save-dev // الأنواع مضمنة بالفعل، ولكن للإصدارات القديمةمثال على إرسال SMS:
import { Twilio } from 'twilio';
const accountSid = 'معرف_الحساب_الخاص_بك';const authToken = 'رمز_المصادقة_الخاص_بك';const client = new Twilio(accountSid, authToken);
interface SmsParams { to: string; // رقم المستلم بتنسيق +71234567890 from: string; // رقم المرسل (مشترى من Twilio) body: string; // نص الرسالة}
async function sendSms(params: SmsParams): Promise<void> { try { const message = await client.messages.create({ body: params.body, from: params.from, to: params.to, }); console.log(`تم إرسال SMS. المعرف: ${message.sid}`); } catch (error) { console.error('خطأ في الإرسال:', error); }}
// الاستخدامsendSms({ to: '+79001234567', from: '+15005550006', body: 'مرحبًا! هذه رسالة اختبارية من TypeScript.',});2. SMS Aero (REST API عبر fetch/axios)
SMS Aero هي خدمة روسية، شائعة في المشاريع المحلية. لا يوجد SDK رسمي لـ TypeScript، ولكن يمكن استخدام أغلفة مصنفة فوق fetch أو axios.
التثبيت:
npm install axiosمثال مع طلب مصنف:
import axios, { AxiosResponse } from 'axios';
interface SmsAeroResponse { status: 'success' | 'error'; id?: number; message?: string;}
interface SmsAeroParams { to: string; from?: string; text: string; sign?: string; // توقيع المرسل}
const API_URL = 'https://gate.smsaero.ru/v2/sms/send';const EMAIL = 'بريدك_الإلكتروني@example.com';const API_KEY = 'مفتاحك';
async function sendSmsAero(params: SmsAeroParams): Promise<SmsAeroResponse> { const auth = Buffer.from(`${EMAIL}:${API_KEY}`).toString('base64'); const response: AxiosResponse<SmsAeroResponse> = await axios.post( API_URL, { number: params.to, text: params.text, sign: params.sign || 'SMS Aero', }, { headers: { 'Authorization': `Basic ${auth}`, 'Content-Type': 'application/json', }, } ); return response.data;}
// الاستخدامsendSmsAero({ to: '79001234567', text: 'رمز التحقق الخاص بك: 1234', sign: 'MyApp',}).then(res => console.log(res));إنشاء غلاف TypeScript عالمي
للمشاريع التي قد تتطلب تغيير المزود، من المناسب إنشاء واجهة مجردة