إرسال SMS باستخدام PHP: نظرة عامة على مكتبات API والحلول الجاهزة
في تطبيقات الويب الحديثة، لا تزال وظيفة إرسال رسائل SMS مطلوبة: تأكيد التسجيل، المصادقة الثنائية، إشعارات حالة الطلب. في هذه المقالة، سنشرح كيفية تنفيذ إرسال SMS باستخدام PHP من خلال مكتبات وخدمات API الشائعة. سنستعرض كلاً من SDKs الرسمية والحلول البسيطة باستخدام cURL.
1. اختيار مزود SMS والمكتبة
قبل البدء، يجب التسجيل في إحدى خدمات SMS والحصول على مفتاح API. بالنسبة لـ PHP، هناك عدة خيارات مجربة:
- sms.ru – خدمة روسية شهيرة بواجهة API بسيطة ومكتبة PHP رسمية.
- Twilio – عملاق دولي مع SDK قوي لـ PHP (twilio/sdk).
- ClickSend – خدمة متعددة الاستخدامات تدعم REST API.
- فئة cURL بسيطة – إذا كنت لا ترغب في ربط تبعيات خارجية.
2. تثبيت المكتبات عبر Composer
للعمل مع Twilio أو ClickSend، من الأفضل استخدام Composer. مثال على التثبيت:
composer require twilio/sdkcomposer require clicksend/clicksend-phpبالنسبة لـ sms.ru، يتم تثبيت المكتبة الرسمية أيضًا عبر Composer:
composer require smsru/smsruإذا كنت تفضل عدم استخدام مدير التبعيات، يمكنك تنزيل ملفات PHP يدويًا من GitHub أو كتابة فئة خاصة بك باستخدام cURL.
3. مثال على إرسال SMS عبر sms.ru
توفر خدمة sms.ru واجهة API بسيطة وواضحة. فيما يلي مثال على إرسال رسالة باستخدام المكتبة الرسمية:
<?phprequire_once 'vendor/autoload.php';
use SMSRU\\SMSRU;
$sms = new SMSRU('مفتاح_API_الخاص_بك');
$data = new stdClass();$data->to = '79123456789'; // رقم المستلم$data->text = 'رسالة اختبارية'; // نص SMS$data->from = 'MySite'; // اسم المرسل (التوقيع)
$response = $sms->send_one($data);
if ($response->status == 'OK') { echo "تم إرسال الرسالة. المعرف: " . $response->sms_id;} else { echo "خطأ: " . $response->status_text;}?>هام: يجب مسبقًا تسجيل توقيع المرسل في الحساب الشخصي لـ sms.ru وشحن الرصيد.
4. إرسال SMS عبر Twilio SDK
Twilio هي واحدة من أكثر الخدمات موثوقية للإرسال الدولي. مثال على كود PHP:
<?phprequire_once 'vendor/autoload.php';
use Twilio\\Rest\\Client;
$account_sid = 'معرف_الحساب_الخاص_بك';$auth_token = 'رمز_المصادقة_الخاص_بك';$twilio_number = '+1234567890'; // الرقم الذي تم الحصول عليه من Twilio
$client = new Client($account_sid, $auth_token);
$message = $client->messages->create( '+79123456789', // رقم المستلم [ 'from' => $twilio_number, 'body' => 'مرحبًا من Twilio و PHP!' ]);
echo "تم الإرسال بالمعرف: " . $message->sid;?>يدعم Twilio الاتصال ثنائي الاتجاه، وwebhooks، والتحقق من حالة التسليم.
5. التنفيذ بدون مكتبات خارجية (cURL)
إذا كنت لا ترغب في ربط Composer، يمكنك كتابة دالة عامة باستخدام cURL. مثال لـ sms.ru:
<?phpfunction sendSms($api_key, $phone, $message) { $url = 'https://sms.ru/sms/send'; $params = [ 'api_id' => $api_key, 'to' => $phone, 'msg' => $message, 'json' => 1 ];
$ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $params); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch); curl_close($ch);
return json_decode($response, true);}
$result = sendSms('