حزمة Laravel

إرسال رسائل SMS ورموز OTP من Laravel في المغرب

envoisms/laravel-otp هي حزمة Laravel الرسمية من EnvoiSMS.ma: قناة إشعارات وواجهة (Facade) لإرسال رسائل SMS ورموز OTP، مبنية على مكتبة PHP ‏envoisms/envoisms-php. أمر Composer واحد، وسطران في ملف ‎.env، فتخرج إشعارات Laravel كرسائل SMS.

composer require envoisms/laravel-otp
# 1. Installer le package officiel composer require envoisms/laravel-otp # 2. .env ENVOISMS_API_KEY=your_api_key_here ENVOISMS_FROM=MonBusiness # 3. (optionnel) config/services.php 'envoisms' => [ 'api_key' => env('ENVOISMS_API_KEY'), 'from' => env('ENVOISMS_FROM', 'EnvoiSMS'), ],
● Routes locales MarocIAM • Inwi • Orange
https://api.envoisms.ma/v1
توجيه محلي
Maroc Telecom (IAM) • Inwi • Orange
إشعارات تسليم حقيقية DLR
توقيع HMAC-SHA256
تسعير واضح بالدرهم
dès 0,60 MAD/SMS • 5 MAD offerts

التثبيت والإعداد

ثبّت الحزمة بالأمر composer require envoisms/laravel-otp، ثم أضف مفتاح API واسم المرسل الافتراضي إلى ‎.env. ويمكن أيضًا وضع الإعدادات في config/services.php تحت المفتاح envoisms.

  • ENVOISMS_API_KEY=مفتاح_API
  • ENVOISMS_FROM=MonBusiness (اسم المرسل المعتمد)
  • config/services.php: 'envoisms' => ['api_key' => env('ENVOISMS_API_KEY'), 'from' => env('ENVOISMS_FROM', 'EnvoiSMS')]

قناة إشعارات Laravel

يعيد الإشعار EnvoiSMSChannel::class من via() ويبني EnvoiSMSMessage في toEnvoiSMS(). ولرمز لمرة واحدة: ->asOtp(brand: 'MonApp', codeLength: 6, expiry: 600). المستلم هو أي نموذج يملك الخاصية phone أو الدالة routeNotificationForEnvoiSMS()؛ ويبقى الإرسال مجرد ‎$user->notify(new SendOtpNotification()).

  • use EnvoiSMS\Laravel\EnvoiSMSChannel;
  • use EnvoiSMS\Laravel\Messages\EnvoiSMSMessage;
  • يحمل كل إرسال مفتاح Idempotency-Key (من مكتبة PHP): إعادة تنفيذ إشعار في الطابور لا تُفوتر مرتين أبدًا

إشعارات نصية: الطلبيات والتذكيرات والتنبيهات

لحالة طلبية أو تذكير: ->content("مرحبًا …، تم شحن طلبيتك #….")->from('MonBusiness'). القناة الافتراضية هي SMS، وهي الاختيار الصحيح لأي نص عادي، حتى لزبون يستخدم واتساب. أما ->channel('whatsapp') فترسل من رقم WhatsApp Business الخاص بك المربوط بالمنصة: بدونه تجيب الواجهة 403 WHATSAPP_NOT_CONNECTED، والنص الحر خارج نافذة 24 ساعة يجيب 400 OUT_OF_24H_WINDOW. ولا يُخصم شيء في الحالتين.

  • تقبل ‎->from()‎ اسم مرسل معتمدًا؛ احذفها لاستعمال المرسل الافتراضي للحساب
  • رمز OTP عبر واتساب: ->asOtp(...)->channel('whatsapp')، عبر المرسل المشترك لـ EnvoiSMS، دون ربط

الواجهة (Facade): إرسال رمز OTP ثم التحقق منه

دون المرور بإشعار، ترسل الواجهة EnvoiSMS الرمز وتتحقق منه. ‎EnvoiSMS::sendOtp(['to' => '+212600000000', 'brand' => 'MonApp'])‎ تعيد session_id؛ و‎EnvoiSMS::checkOtp(sessionId: $response['session_id'], code: '123456')‎ تعيد verified بقيمة true عندما يكون الرمز صحيحًا. يُولَّد الرمز ويُرسل وتنتهي صلاحيته لدى EnvoiSMS: لا يخزنه تطبيقك أبدًا.

  • use EnvoiSMS\Laravel\Facades\EnvoiSMS;
  • نقاط النهاية: POST /v1/verify/send وPOST /v1/verify/check
  • رخصة MIT، والشيفرة المصدرية على github.com/envoisms/laravel-otp

كل ما تحتاج معرفته عن حزمة Laravel.

ما الفرق بين envoisms/laravel-otp وenvoisms/envoisms-php؟
envoisms/envoisms-php هي مكتبة PHP، قابلة للاستعمال في أي مشروع. أما envoisms/laravel-otp فمبنية عليها وتضيف ما يخص Laravel: قناة الإشعارات، والرسالة EnvoiSMSMessage، والواجهة EnvoiSMS.
هل يمكنني وضع إشعارات SMS في الطابور (Queue)؟
نعم. يحمل كل إرسال مفتاح Idempotency-Key توفره مكتبة PHP: إذا أُعيد تنفيذ مهمة الإشعار بعد فشل أو انتهاء مهلة، لا تُرسل الرسالة ولا تُفوتر مرة ثانية.
كيف أرسل رمز OTP عبر واتساب من Laravel؟
->asOtp(brand: 'MonApp')->channel('whatsapp'). يمر الرمز عبر المرسل المشترك لـ EnvoiSMS: لا حاجة لربط رقم واتساب الخاص بك.
كيف أختبر دون إرسال رسائل حقيقية؟
ضع مفتاح Sandbox من نوع env_test_ في ENVOISMS_API_KEY: يُعاد تنفيذ مسار الإرسال كاملًا — التحقق والتسعير والويب هوك — دون أي تسليم أو خصم.

ابدأ التكامل مع حزمة Laravel الآن

أنشئ حسابك في أقل من دقيقتين. احصل فوراً على رصيد 5 دراهم مجاناً لاختبار الـ API.