Cómo crear un portal de SMS con Laravel y Twilio
Tiempo de lectura: 6 minutos
En algún momento del flujo de trabajo de la aplicación, es posible que deba transmitir información importante a sus usuarios. Gracias al avance de las tecnologías web, esto se puede hacer fácilmente con las notificaciones push. Sin embargo, la mayoría de estos servicios requieren que sus usuarios tengan conexión a Internet y, por desgracia, esto no sucede siempre. Afortunadamente, podemos superar esta dificultad mediante un sistema de notificación que no depende de Internet.
En este tutorial, le enseñaremos cómo utilizar El SMS programable de Twilio para crear un portal de notificación por SMS con Laravel. Una vez que hayamos terminado, habrá desarrollado un portal personalizado de notificación por SMS que le permite notificar a sus usuarios a través de un panel de control con SMS.
Requisito previo
Para realizar este tutorial, necesitará lo siguiente:
- Conocimientos básicos de Laravel
- Laravel instalado en su equipo local
- Composer instalado de forma global
- MySQL configurado en su equipo local
- Cuenta de Twilio
Configurar el proyecto
En primer lugar, debemos crear un nuevo proyecto Laravel, ya sea con el instalador de Laravel o con Composer. En este tutorial, utilizaremos el instalador de Laravel. Si no lo tiene instalado, puede consultar cómo hacerlo desde la Documentación de Laravel. Para generar un proyecto nuevo de Laravel, ejecute este comando en su terminal:
Ahora, cambie su directorio de trabajo a sms-portal
e instale el SDK de Twilio a través de Composer:
Si no tiene instalado Composer en su computadora, puede hacerlo siguiendo las instrucciones aquí.
Después de instalar el SDK de PHP de Twilio, necesitamos obtener nuestras credenciales de Twilio desde el panel de control de Twilio. Diríjase a su panel de control, tome su account_sid
y auth_token
.
Ahora, vaya a la sección Phone Number (Número de teléfono) para obtener su número de teléfono con SMS activado.
El siguiente paso es actualizar el archivo .env
con nuestras credenciales de Twilio. Por lo tanto, abra el archivo .env
que está ubicado en la raíz del directorio del proyecto y agregue estos valores:
Configurar la base de datos
Ahora que tenemos un proyecto Laravel básico con el SDK de Twilio instalado, vamos a crear nuestra base de datos. Si utiliza una aplicación de GUI como phpMyAdmin para administrar su base de datos, continúe y cree una base de datos llamada sms_portal
y omita esta sección. Si no cuenta con esa aplicación, utilice una herramienta equivalente; y, si no tiene MySQL instalada, instálela desde el sitio oficial para su plataforma.
Ponga en marcha el terminal y ejecute este comando para iniciar sesión en MySQL:
NOTA: Agregue el -p
si tiene una contraseña para su instancia de MySQL.
Una vez que haya iniciado sesión, ejecute el siguiente comando para crear una nueva base de datos:
Cambiemos la configuración de nuestra base de datos según corresponda en el archivo .env
en la raíz de nuestra carpeta del proyecto.
Crear migración
Ya que hemos creado nuestra base de datos, vamos a crear nuestra migración a la base de datos. Podemos hacer esto simplemente ejecutando este comando en nuestro terminal:
Esto generará un archivo de migración {current_time_stamp}_create_users_phone_number_table
en el directorio /database/migrations
.
Ahora, abra la carpeta del proyecto en su IDE (entorno de desarrollo integrado) o editor de texto favorito para que podamos comenzar a hacer cambios, según sea necesario. Abra el archivo de migración que acabamos de crear. Deberíamos tener el mismo contenido que este:
Necesitamos agregar la columna phone_number
a nuestra tabla. Podemos hacerlo mediante la edición del método up()
, como se indica a continuación:
Ahora, tenemos nuestro archivo de migración listo para migrar. Podemos hacerlo simplemente ejecutando lo siguiente en nuestro terminal:
Debemos tener un resultado de salida similar a este:
Crear la interfaz de usuario
En este punto, tenemos nuestra configuración del proyecto. Es hora de crear una interfaz de usuario sencilla para agregar datos a nuestra base de datos y también para enviar notificaciones de SMS.
Abra /resources/views/welcome.blade.php
y realice los siguientes cambios en el bloque <head>
.
Simplemente eliminamos el diseño inicial en la página y agregamos Bootstrap mediante BootstrapCDN para darle un estilo más sencillo. A continuación, vamos a crear dos formularios en la página. Uno para registrar el número de teléfono de los usuarios y otro para enviar mensajes de notificación personalizados a los usuarios seleccionados. Realice los siguientes cambios en el bloque body
.
Si observa con más detalle el código anterior, notará que tenemos lo siguiente:
Este fragmento ayuda a generar un campo de opción para cada número de teléfono de usuario disponible devuelto con esta vista. Implementaremos esta característica en breve.
Guardar el número de teléfono de los usuarios
En primer lugar, vamos a crear un modelo que usaremos para consultar y también insertar registros en la base de datos. Ponga en marcha su terminal en el directorio del proyecto y ejecute lo siguiente:
Abra el archivo creado en app/UsersPhoneNumber.php
y agregue el siguiente código:
NOTA: Estos son algunos aspectos que debe considerar.
- Agregar
protected $table= "users_phone_number";
le indica a Eloquent del nombre de la tabla que se utilizará. Si esto no se proporciona, el nombre plural de la clase se utilizará como nombre de tabla. - Agregar
protected $fillable
le indica a Eloquent que realice la asignación masiva de campos (leer más en el enlace anterior).
Lo siguiente es crear el controlador donde implementaremos la lógica necesaria para cada ruta de solicitud. Una vez más, ponga en marcha el terminal y ejecute lo siguiente:
Esto generará un archivo del controlador en app/Http/Controllers/HomeController.php
con el siguiente contenido:
Crear el método para guardar el número de teléfono
Creemos una función que genere un ejemplo de un nuevo modelo UsersPhoneNumber
con los datos transferidos desde el cuerpo de la solicitud:
A partir del código anterior, ejecutamos la validación de los datos que se transfieren desde el cuerpo de $request
antes de proceder con la creación de una nueva instancia de UsersPhoneNumber
. Después de guardar el número de teléfono del usuario, nos dirigirá nuevamente a la página de bienvenida con un mensaje de éxito que se muestra en la sesión.
Devolver la vista con los números de teléfono de los usuarios
Ahora tenemos que devolver la vista con los datos de los números de teléfono registrados. Escribimos una función simple en el HomeController (Controlador de inicio) que consulta la tabla users_phone_number
y devuelve los resultados de la consulta a la vista:
NOTA: compact() es una función PHP que le permite crear una matriz con nombres variables y sus valores.
Enviar mensajes con SMS programable de Twilio
En el siguiente paso, implementamos el envío de SMS mediante la biblioteca de SMS programable de Twilio. Cree una función privada en el HomeController (Controlador de inicio) para que actúe como una función de ayuda para enviar mensajes:
La función recibe dos parámetros de $message
y $recipients
. Luego, obtenemos nuestras credenciales Twilio almacenadas en las variables del entorno mediante la función getent() de PHP integrada, después de la cual creamos un ejemplo de un nuevo Twilio Client con las credenciales. Ahora, podemos proceder a enviar el SMS mediante una llamada a:
La función messages->create()
acepta dos parámetros del receptor del mensaje y una matriz con las propiedades de from
y body
donde from
es su número de teléfono activo de Twilio.
Enviar una notificación al usuario cuando se registra
Hasta el momento, hemos completado nuestra función sendMessage()
, que usaremos para enviar mensajes a los usuarios. Ahora, actualicemos nuestra función storePhoneNumber()
para notificar a los usuarios cuando se registran correctamente. Para ello, realice los siguientes cambios a la función storePhoneNumber()
:
Fantástico. Ahora, cada vez que se agrega el número de teléfono de un usuario a nuestra base de datos, podemos enviarle al usuario un mensaje de notificación para avisarle sobre la acción que se llevó a cabo.
Enviar notificaciones personalizadas
A continuación, escribamos una función para enviar mensajes personalizados a los usuarios seleccionados. Agregue el código siguiente a HomeController
:
Esta función pasa los datos validados del cuerpo de cuerpo de $request
a la variable $validatedData
, lo que nos permite iterar sobre la matriz de $validatedData[users]
y enviar a cada usuario el mensaje recibido de $validatedData["body"]
. A continuación, redirigiremos a la página de bienvenida con un mensaje que se muestra en la sesión.
Crear rutas
Hemos creado correctamente las funciones del controlador. Ahora agreguemos nuestras rutas a la aplicación. Abra routes/web.php
y realice los siguientes cambios:
Actualizar el campo del formulario con rutas
Ahora diríjase a resources/views/welcome.blade.php
y realice los siguientes cambios en el campo del formulario:
y
Prueba de nuestro código
Unamos todo el código que hemos hecho hasta ahora. En este punto, su HomeController.php
debe verse de la siguiente manera:
y para nuestra vista, su welcome.blade.php
debe verse así:
Si su código es el mismo, está listo para continuar. Si no es así, vuelva a revisar su código para averiguar lo que falta.
Ejecutar nuestra aplicación
Abra el terminal, vaya al directorio del proyecto y ejecute el siguiente comando:
Esto servirá a su aplicación Laravel en un puerto de host local, normalmente 8000
. Abra el enlace del host local impreso después de ejecutar el comando en su navegador y debería recibir una página como esta:
Continúe y registre un nuevo número de teléfono. Si todo sale bien, debería recibir un mensaje de texto en breve en el que se lo notifica acerca del registro.
También puede probar el envío de notificaciones personalizadas mediante la selección de un usuario del campo de selección y la inserción del texto que se enviará a los usuarios seleccionados en el área de texto. Cuando haya terminado, haga clic en el botón Send Notification (Enviar notificación) y recibirá un SMS con el mensaje de notificación personalizado.
Conclusión
Ahora que completó este tutorial, debe poder integrar el SMS programable de Twilio en su aplicación Laravel y enviar mensajes de notificación a través de SMS. Si desea ver el código fuente completo de este tutorial, puede encontrarlo en GitHub.
Puede avanzar en esto aún más si permite que los usuarios realicen acciones a partir de las notificaciones de SMS que se les envían.
Publicaciones relacionadas
Recursos relacionados
Twilio Docs
Desde API hasta SDK y aplicaciones de muestra
Documentación de referencia de API, SDK, bibliotecas auxiliares, inicios rápidos y tutoriales para su idioma y plataforma.
Centro de Recursos
Los últimos libros electrónicos, informes de la industria y seminarios web
Aprenda de los expertos en participación del cliente para mejorar su propia comunicación.
Ahoy
Centro de la comunidad de desarrolladores de Twilio
Mejores prácticas, ejemplos de códigos e inspiración para crear comunicaciones y experiencias de participación digital.