إرسال SMS باستخدام C# (.NET): التكامل مع واجهة برمجة تطبيقات خدمات SMS
في العالم الحديث، لا يزال إرسال رسائل SMS مهمة مطلوبة للإشعارات والمصادقة الثنائية وتنبيهات العملاء. في نظام .NET البيئي، لا توجد مكتبة مدمجة لإرسال SMS - يتم تنفيذ جميع العمليات عبر طلبات HTTP لواجهة برمجة التطبيقات (API) لموفري SMS الخارجيين. في هذه المقالة، سنشرح كيفية تنظيم إرسال SMS باستخدام C# مع HttpClient، وسنستعرض أمثلة على التكامل مع الخدمات الشائعة.
اختيار موفر SMS والمعايير الرئيسية
قبل البدء، يجب التسجيل في إحدى خدمات SMS. أشهرها: Twilio، Vonage (Nexmo)، SMS Aero، СМСЦентр. جميعها توفر REST API. للإرسال، ستحتاج إلى:
- مفتاح API / رمز مميز - معرف فريد لحسابك.
- Secret / كلمة المرور - مفتاح سري للمصادقة.
- رقم المرسل (Sender ID) - سلسلة ستظهر للمستلم (مثل علامتك التجارية).
- رقم المستلم - بالتنسيق الدولي (مثل +71234567890).
التنفيذ الأساسي في C# باستخدام HttpClient
للعمل مع طلبات HTTP في .NET، يتم استخدام الفئة System.Net.Http.HttpClient. فيما يلي مثال لإرسال SMS عبر API Twilio (واحدة من أشهر الخدمات).
using System;using System.Net.Http;using System.Text;using System.Threading.Tasks;
public class SmsSender{ private readonly HttpClient _httpClient; private readonly string _accountSid; private readonly string _authToken;
public SmsSender(string accountSid, string authToken) { _accountSid = accountSid; _authToken = authToken; _httpClient = new HttpClient(); }
public async Task SendSmsAsync(string to, string from, string message) { // URL لواجهة Twilio API string url = $"https://api.twilio.com/2010-04-01/Accounts/{_accountSid}/Messages.json";
// تكوين بيانات النموذج var content = new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>("To", to), new KeyValuePair<string, string>("From", from), new KeyValuePair<string, string>("Body", message) });
// إضافة المصادقة الأساسية string auth = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{_accountSid}:{_authToken}")); _httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", auth);
// إرسال طلب POST HttpResponseMessage response = await _httpClient.PostAsync(url, content);
if (response.IsSuccessStatusCode) { string responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine($"تم إرسال SMS بنجاح: {responseBody}"); } else { string error = await response.Content.ReadAsStringAsync(); Console.WriteLine($"خطأ: {response.StatusCode} - {error}"); } }}استخدام الفئة
class Program{ static async Task Main(string[] args) { // استبدل ببياناتك من لوحة تحكم Twilio string accountSid = "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; string authToken = "your_auth_token_here";
var sender = new SmsSender(accountSid, authToken); await sender.SendSmsAsync( to: "+71234567890", from: "+15017122661", // الرقم المخصص من Twilio message: "مرحباً! هذه رسالة SMS تجريبية من C#." ); }}موفرو بديلون: مثال مع Vonage (Nexmo)
بالنسبة لواجهة Vonage API، يتم استخدام نموذج آخر