التثبيت والإعداد
ثبّت الحزمة بالأمر 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