Cómo enviar SMS masivos con Twilio y Laravel PHP

February 22, 2019
Redactado por
Precious Opusunju
Colaborador
Las opiniones expresadas por los colaboradores de Twilio son propias.

Cómo enviar SMS masivos con Twilio y Laravel PHP

Hay ocasiones en las que tiene una gran cantidad de usuarios y necesita actualizarlos o notificarlos simultáneamente a través de SMS. Quizás dirige un sitio de membresía o blog personal. Sin importar el caso, este tutorial proporcionará una forma eficiente y sencilla de enviar SMS de forma masiva a través de su app web.

Requisitos técnicos

En este tutorial, supondremos que ya conoce o tiene lo siguiente:

  • Un terminal (línea de comandos)
  • Composer instalado
  • Está familiarizado con PHP
  • Está familiarizado con Laravel (5+)
  • Tiene un proyecto Laravel (5+) existente
  • Tiene una cuenta Twilio y sus credenciales listas

En caso de que no tenga una configuración de proyecto de Laravel, esta guía lo ayudará a crear un nuevo proyecto de Laravel local.

Instalar y configurar el SDK de Laravel de Twilio

Lo primero que debemos hacer es instalar el SDK de Laravel de Twilio, que proporcionará las funciones necesarias para iniciar nuestra app de envío masivo de SMS. Utilizaremos la línea de comandos para lograrlo. En la línea de comandos escriba:

$ composer require twilio/sdk

Ahora que tenemos instalado el SDK, debemos configurarlo para que reconozca nuestra cuenta de Twilio. Abra el archivo .env y péguelo en el siguiente código. Asegúrese de reemplazar las variables con sus credenciales de TwilioTWILIO_FROM es su número de Twilio.

TWILIO_SID=ACXXXXXXXXXXXXXXXXXXX
TWILIO_TOKEN=XXXXXXXXXXXXXXXXXXXXX
TWILIO_FROM=APXXXXXXXXXXXXXXXXXXX

Configurar el controlador y la vista

Necesitamos un controlador específico para nuestra app BulkSMS, por lo que debe pegarlo en el siguiente comando para crear un controlador mediante la consola artisan de Laravel.

$ php artisan make:controller BulkSmsController

Abra el controlador e incluya la clase de Twilio en la parte superior:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Twilio\Rest\Client;
use Validator;

A continuación, crearemos un archivo de visualización llamado bulksms.blade.php para hacer un formulario HTML a fin de crear los campos necesarios para nuestra app de envío masivo de SMS.

$ touch resources/views/bulksms.blade.php

Abra el archivo recién creado que se encuentra en resources/views/bulksms.blade.php y pegue el siguiente código:

<html>
      <body>
         <form action='' method='post'>
              @csrf
                      @if($errors->any())
              <ul>
             @foreach($errors->all() as $error)
            <li> {{ $error }} </li>
             @endforeach
        @endif

        @if( session( 'success' ) )
             {{ session( 'success' ) }}
        @endif

             <label>Phone numbers (seperate with a comma [,])</label>
             <input type='text' name='numbers' />

            <label>Message</label>
            <textarea name='message'></textarea>

            <button type='submit'>Send!</button>
      </form>
    </body>
</html>

Abra web.php ubicado en la carpeta routes y pegue el siguiente código en la parte inferior:

<?php

Route::view('/bulksms', 'bulksms');
Route::post('/bulksms', 'BulkSmsController@sendSms');

Ahora vamos a escribir una función para validar nuestro formulario HTML y enviar los mensajes de texto. Abra el archivo BulkSmsController.php ubicado en la carpeta app/Http/Controllers y escriba el siguiente código antes de la última llave.

<?php

        public function sendSms( Request $request )
    {
       // Your Account SID and Auth Token from twilio.com/console
       $sid    = env( 'TWILIO_SID' );
       $token  = env( 'TWILIO_TOKEN' );
       $client = new Client( $sid, $token );

       $validator = Validator::make($request->all(), [
           'numbers' => 'required',
           'message' => 'required'
       ]);

       if ( $validator->passes() ) {

           $numbers_in_arrays = explode( ',' , $request->input( 'numbers' ) );

           $message = $request->input( 'message' );
           $count = 0;

           foreach( $numbers_in_arrays as $number )
           {
               $count++;

               $client->messages->create(
                   $number,
                   [
                       'from' => env( 'TWILIO_FROM' ),
                       'body' => $message,
                   ]
               );
           }

           return back()->with( 'success', $count . " messages sent!" );
              
       } else {
           return back()->withErrors( $validator );
       }
   }

Pruebas

Para probar su app, abra la consola en el directorio de proyecto y escriba el siguiente comando:

$ php artisan serve

Con su navegador preferido, visite http://localhost:8000/bulksms, complete el formulario y envíelo.

Conclusión

Ahora que configuró una app de envío masivo de SMS, puede ver lo fácil que es extender la funcionalidad de los SMS. Esto le da la ventaja de tener sus números de teléfono almacenados en su propia base de datos.

Este artículo fue traducido del original "How to Send Bulk SMS with Twilio and Laravel PHP". Mientras estamos en nuestros procesos de traducción, nos encantaría recibir sus comentarios en help@twilio.com - las contribuciones valiosas pueden generar regalos de Twilio.