Paquete Laravel

Enviar SMS y códigos OTP desde Laravel en Marruecos

envoisms/laravel-otp es el paquete oficial de Laravel de EnvoiSMS.ma: un canal de notificación y una fachada para enviar SMS y códigos OTP, construido sobre el SDK envoisms/envoisms-php. Un comando de Composer, dos líneas en .env, y sus notificaciones de Laravel salen como 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
Rutas locales
Maroc Telecom (IAM) • Inwi • Orange
Acuses DLR reales
Firma HMAC-SHA256
Tarifas en MAD
dès 0,60 MAD/SMS • 5 MAD offerts

Instalación y configuración

Instale el paquete con composer require envoisms/laravel-otp y añada su clave API y su remitente por defecto en .env. La configuración también puede vivir en config/services.php, bajo la clave envoisms.

  • ENVOISMS_API_KEY=su_clave_api
  • ENVOISMS_FROM=MiNegocio (su Sender ID validado)
  • config/services.php: 'envoisms' => ['api_key' => env('ENVOISMS_API_KEY'), 'from' => env('ENVOISMS_FROM', 'EnvoiSMS')]

Un canal de notificación de Laravel

Su notificación devuelve EnvoiSMSChannel::class en via() y construye un EnvoiSMSMessage en toEnvoiSMS(). Para un código de un solo uso: ->asOtp(brand: 'MiApp', codeLength: 6, expiry: 600). El destinatario es cualquier modelo con un atributo phone o un método routeNotificationForEnvoiSMS(); el envío sigue siendo un simple $user->notify(new SendOtpNotification()).

  • use EnvoiSMS\Laravel\EnvoiSMSChannel;
  • use EnvoiSMS\Laravel\Messages\EnvoiSMSMessage;
  • Cada envío lleva un Idempotency-Key (del SDK de PHP): una notificación en cola que se reintenta nunca factura dos veces

Notificaciones de texto: pedidos, recordatorios, alertas

Para un estado de pedido o un recordatorio: ->content("Hola …, su pedido #… ha sido enviado.")->from('MiNegocio'). El canal por defecto es SMS, la opción correcta para cualquier texto ordinario, incluso a un cliente que usa WhatsApp. ->channel('whatsapp') envía desde su propio número de WhatsApp Business conectado: sin él la API responde 403 WHATSAPP_NOT_CONNECTED, y un texto libre fuera de la ventana de 24 horas responde 400 OUT_OF_24H_WINDOW. No se cobra nada en ninguno de los dos casos.

  • ->from() acepta un Sender ID validado; omítalo para el remitente por defecto de la cuenta
  • Un código OTP por WhatsApp: ->asOtp(...)->channel('whatsapp'), por el remitente compartido de EnvoiSMS, sin conexión

La fachada: enviar y verificar un OTP

Sin pasar por una notificación, la fachada EnvoiSMS envía el código y lo verifica. EnvoiSMS::sendOtp(['to' => '+212600000000', 'brand' => 'MiApp']) devuelve un session_id; EnvoiSMS::checkOtp(sessionId: $response['session_id'], code: '123456') devuelve verified en true cuando el código es correcto. El código se genera, se envía y caduca del lado de EnvoiSMS: su aplicación nunca lo almacena.

  • use EnvoiSMS\Laravel\Facades\EnvoiSMS;
  • Endpoints subyacentes: POST /v1/verify/send y POST /v1/verify/check
  • Licencia MIT, código fuente en github.com/envoisms/laravel-otp

Todo lo que debe saber sobre Paquete Laravel.

¿Qué diferencia hay entre envoisms/laravel-otp y envoisms/envoisms-php?
envoisms/envoisms-php es el SDK de PHP, utilizable en cualquier proyecto. envoisms/laravel-otp se apoya en él y añade lo propio de Laravel: el canal de notificación, el mensaje EnvoiSMSMessage y la fachada EnvoiSMS.
¿Puedo poner mis notificaciones SMS en cola?
Sí. Cada envío lleva un Idempotency-Key aportado por el SDK de PHP: si un job de notificación se reintenta tras un fallo o un timeout, el mensaje no se reenvía ni se factura una segunda vez.
¿Cómo envío un código OTP por WhatsApp desde Laravel?
->asOtp(brand: 'MiApp')->channel('whatsapp'). El código pasa por el remitente compartido de EnvoiSMS: no necesita conectar su propio número de WhatsApp.
¿Cómo pruebo sin enviar SMS reales?
Ponga una clave sandbox env_test_ en ENVOISMS_API_KEY: todo el recorrido de envío se reproduce — validación, tarificación, webhooks — sin entregar ni cobrar nada.

¿Listo para integrar con Paquete Laravel?

Cree su cuenta en menos de 2 minutos. Obtenga 5 MAD de crédito gratis de inmediato para probar la API.