Enviar SMS utilizando Laravel y Amazon SNS

Empezamos primero por saber que es Amazon SNS, este es un servicio que permite enviar notificaciones multicanal, multicarrier etc. nos permite manejar mensajes de texto(sms), notificaciones push(entre varios carriers como gcm, baidu, amazon, etc.) ademas de canales como el email, en si nos permite tener un espectro amplio en lo que se refiere a notificaciones.

Antes de empzar es importante contar con lo siguiente

  • AWS access key ID and secret access key
  • AWS_REGION (default = us-east-1): 
Estos datos se pueden obtener en la consola de aws en la opcion de IAM, donde podemos crear un usuario con sus respctivos permisos en el cual vamos a indicar que puede utilizar SNS.

Despues de tener claro que contamos con lo necesario, procedemos a instalar el SDK de AWS el cual lo integraremos con nuestra app desarrollada en laravel.


Entramos en la carpeta del proyecto y utilizando composer escribimos lo siguiente

composer require aws/aws-sdk-php-laravel

Y hemos realizado la instalacion del SDK entonces debemos ir a la carpeta config y abrir el archivo app.php, en este archivo buscaremos el espacio donde agregaremos los providers.


 'providers' => array(
        // ...
        Aws\Laravel\AwsServiceProvider::class,
    )

debe quedar algo como lo anterior, despues agregamos el alias.

'aliases' => array(
        // ...
        'AWS' => Aws\Laravel\AwsFacade::class,
    )
por ultimo ejecutamos el artisan con el siguiente comando.

php artisan vendor:publish  --provider="Aws\Laravel\AwsServiceProvider"
despues de haber realizado este proceso en la carpeta config deberiamos encontrarnos con un archivo llamado aws.php el cual tiene la configuracion en este archivo agregaremos las siguiente lineas para habilitar las credenciales.

 'credentials' => [
        'key'    => 'your_key',
        'secret' => 'your_secret',
    ],
por ultimo así debería quedar tu controlador de prueba, llevatelo, aquí no te funcionara jeje. pero ese es el que necesitaras.


Comentarios

  1. El servicio es gratuito o de pago? Cómo se realiza el pago en caso de ser de pago?

    ResponderEliminar
    Respuestas
    1. si claro el servicio de amazon es pago, pero ellos tienen una capa gratuita. la cual se activa cuando ingresas una tarjeta de crédito, después que superes la capa free entonces ellos cobran.

      Eliminar
  2. Cordial saludo, Luis.... puedes referenciarme información del servicio que mencionas en la parte inicial. Está interesante este tema y quisira probarlo. La pregunta es... dónde me registro para obtener estos datos....
    AWS access key ID and secret access key
    AWS_REGION (default = us-east-1).
    Este es mi correo... jhonjamesmg@hotmail.com

    Gracias por tu respuesta.

    ResponderEliminar
    Respuestas
    1. Hola Jhon, si mira en la pagina de Amazon AWS es el lugar por donde debes empezar, el registro es gratis pero no pierden jejej asi que te toca ingresar una tarjeta de credito para habilitar la capa gratuita, esta es la url : https://aws.amazon.com/es/ una vez tengas tu capa gratis activa, vas y accedes a IAM es un modulo donde se administran las credenciales, ahi puedes generar una credencial para el ejemplo, a esas credenciales debes darles el permiso de SNS que en este caso seria el servicio a utilizar.

      Eliminar
    2. Luis, muchas gracias por el tiempo que dedicaste a responder mi pregunta. Voy a revisar lo que me indicas porque me parece muy útil. Muchas gracias nuevamente.

      Eliminar
  3. Hola Luis, muy bueno tu tutorial, por un lado encontré esto que puede complementar el inicio con las políticas de envío en IAM. https://medium.com/@kylemilloy/sending-sms-messages-with-laravel-and-amazon-sns-a2183af9d90d (el inicio nada más)

    Por otro lado, use tu controlador para probar, sé que se comunica con AWS porque en el panel me aparecen los intentos de envío de SMS.

    PERO, todos los mensajes me salen fallidos ¿Tienes idea qué pueda ser?

    ResponderEliminar
    Respuestas
    1. Hola que tal, gracias por responder.

      Si, el código del país estaba todo correcto, me contacté con Amazon y me dicen que es una limitación de la capa gratuita en dónde no estaba usando más nada, que podían quitarme la limitación después del primer ciclo de facturación con otros servicios.

      Así que me cambié a otro proveedor, uno de Colombia llamado Cellvoz, no tienen SDK pero si tienen api y fue sencillo todo a buenos precios.

      Eliminar

Publicar un comentario

Entradas populares de este blog

Comunicaciones Unificadas, una Realidad...

Cloudflare y los problemas de UTF-8