Cómo enviar un SMS con un clic de botón en Java

February 17, 2022
Written by
Diane Phan
Twilion

Cómo enviar un SMS con un clic de botón en Java

 

Twilio va de potenciar las comunicaciones y de hacerlo de forma cómoda y rápida en cualquier lenguaje.

Con la ayuda de Twilio y Java, puede enviar un mensaje rápido a alguien sin tener que usar el dispositivo móvil. El uso de Java también le ofrece la divertida oportunidad de crear interfaces gráficas de usuario (GUI) para complementar la experiencia del usuario en el envío de un SMS de una forma más divertida e interactiva.

En este artículo, implementará una pequeña GUI con botón que enviará un SMS al dispositivo móvil una vez que se haga clic.

Requisitos del tutorial

  • Una cuenta de Twilio gratuita o de pago. Si es nuevo en Twilio, obtenga su cuenta gratuita ahora. (Si se registra a través de este enlace, Twilio le dará un crédito de $10 cuando realice la actualización).
  • Algunos conocimientos previos de Java o ganas de aprender.
  • Un teléfono móvil con servicio activo para probar el proyecto.

Configuración

Comenzaremos con la creación de un directorio para almacenar los archivos de nuestro proyecto. Dentro de la terminal favorito, ingrese a:

$ mkdir java_sms_button
$ cd java_sms_button

En este artículo, vamos a descargar la biblioteca independiente de ayuda de Twilio Java. Descargue el archivo jar aquí. La última versión de los archivos jar en el momento de publicar este artículo es twilio-8.18.0-with-dependencies.jar. Desplácese hacia abajo para descargar el archivo y guárdelo en el directorio del proyecto java_sms_button.

Comprar un número de teléfono de Twilio

Si aún no lo ha hecho, compre un número de Twilio para enviar el SMS.

Para hacer esto, inicie sesión en la consola de Twilio, seleccione números de teléfono y, después, haga clic en el signo más rojo para comprar un número de Twilio. Tengan cuenta que, si está utilizando una cuenta gratuita, utilizará el crédito de prueba para esta compra.

En la pantalla de comprar un número puede seleccionar el país y marcar SMS en el campo Capabilities (Capacidades). Si quiere solicitar un número de la región, puede ingresar el código de área en el campo Number (Número).

Comprar un número de teléfono

 

Haga clic en el botón Search (Buscar) para ver los números disponibles y, después, haga clic en “Buy” (Comprar) el número que le guste de los resultados. Después de confirmar la compra, haga clic en el botón Close (Cerrar).

Crear un GUI con botón

El objetivo es construir un botón clicable en una GUI para que un usuario pueda hacer clic para enviar un SMS a un número de teléfono móvil.

Cree un nuevo archivo llamado SMSButton.java en el directorio del proyecto y pegue el siguiente código para importar los paquetes necesarios para manejar los eventos:

import javax.swing.*;
import java.awt.event.*;

class SMSEventClicker implements ActionListener {
    JFrame frame=new JFrame();
    JButton button=new JButton("Click Me");
 
    SMSEventClicker() {
        createButtonGUI();
        buttonProperties();
    }
}

El paquete javax.swing es la nueva versión del paquete  AWT que permite desarrollar aplicaciones GUI. El paquete es necesario para utilizar los componentes que crean botones para este proyecto. Si bien el paquete AWT  no se utiliza directamente, el paquete javax.swing requiere el paquete java.awt.event para manejar los eventos del componente de botones.

Se creará una clase llamada  SMSEventClicker que implementa un ActionListener. También se define el constructor de la clase para que el objeto GUI y las propiedades del botón puedan utilizarse cuando el usuario haga clic en el evento del botón SMS.

Antes de que este código se pueda compilar, se deben escribir las funciones para  createButtonGUI() y buttonProperties(). Copie y pegue el siguiente código debajo del constructor de la clase:

    public void createButtonGUI(){
        frame.setTitle("Send an SMS");
        frame.getContentPane().setLayout(null);
        frame.setVisible(true);
        frame.setBounds(400,400,400,400);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

Esta función utiliza la clase JFrame del paquete javax.swing para crear el contenedor de la ventana GUI que mostrará y mantendrá oprimido el botón. Los elementos del panel de contenido incluyen el título, la visibilidad y los límites para determinar el ancho y el alto. Finalice la función con setDefaultCloseOperation para detener la aplicación una vez que el usuario cierre la ventana.

Copie y pegue el siguiente código para definir la función buttonProperties justo debajo de la función GUI del botón:

    public void buttonProperties(){
        button.setBounds(150,150,150,150);   
        frame.add(button);
        button.addActionListener(this);
    }

Del mismo modo, se llama de nuevo a la clase de frame para crear un botón con límites. Sin embargo, lo importante aquí es que el botón tiene que recibir instrucciones específicas sobre lo que debe hacer. El objetivo es que un usuario haga clic en el botón que envíe un SMS a un número de teléfono.

Anular la acción de pulsar el botón

Como se ha visto antes en la definición de la clase SMSEventClicker, la  interfaz  ActionListener está implementada. Esto permite a los desarrolladores determinar las acciones que se producen cuando un usuario hace clic en el botón contra el ActionEvent.

Un método llamado actionPerformed()  se invoca cuando el usuario hace clic en el componente, por lo tanto, este método necesita ser anulado para poder implementar las nuevas instrucciones en su lugar.

Siga adelante y haga override del método al copiar y pegar el código debajo del código existente:

    @Override
    public void actionPerformed(ActionEvent e) {
        Message message = Message
            .creator(new PhoneNumber("+<YOUR_PHONE_NUMBER>"), // to 
                    new PhoneNumber("+<YOUR_TWILIO_NUMBER>"), // from
                    "Ahoy ahoy!")
            .create();
        System.out.println(message.getSid());
    }

Reemplace <YOUR_PHONE_NUMBER> y <YOUR_TWILIO_NUMBER>  por los números reales, con el formato E.164.

El método al que hicimo override inicializa la API REST de Twilio para enviar un SMS al número de teléfono personal desde el número de teléfono de Twilio. Esto es posible gracias a la creación de una nueva instancia message del recurso Message. Una vez enviado el mensaje, el SID del mensaje se imprime en el terminal para su consulta.

Guarde el archivo. No dude en agregar estas funciones y modificar la apariencia del contenedor de la ventana de la interfaz gráfica de usuario y las propiedades de los botones a su gusto.

Enviar un SMS con Java y Twilio

Para terminar el código y enviar el SMS a un número de teléfono, debe configurar el entorno con las credenciales de su cuenta Twilio y consultarlo dentro del código.

Puede encontrar las credenciales de su cuenta en la consola de Twilio.

Credenciales de la cuenta Twilio

 

Si utiliza macOS o Linux, ejecute los siguientes comandos para exportar las credenciales de la cuenta a un archivo twilio.env. Si decide confirmar este directorio del proyecto, asegúrese de no ingresar accidentalmente las credenciales en un repositorio público.

echo "export TWILIO_ACCOUNT_SID='ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'" > twilio.env
echo "export TWILIO_AUTH_TOKEN='<YOUR_AUTH_TOKEN>'" >> twilio.env
source ./twilio.env
echo "twilio.env" >> .gitignore

export con set, como se ve a continuación:

set TWILIO_ACCOUNT_SID=ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
set TWILIO_AUTH_TOKEN='<YOUR_AUTH_TOKEN>'

No dude en crear un archivo .env y .gitignore también para su comodidad.

Vuelva al archivo SMSButton.java y recupere las variables de entorno mediante la creación de una nueva clase pública que refleje el nombre del archivo. Copie la siguiente definición de clase y péguela debajo de la definición de la clase SMSEventClicker:

public class SMSButton {
    public static final String ACCOUNT_SID = System.getenv("TWILIO_ACCOUNT_SID");
    public static final String AUTH_TOKEN = System.getenv("TWILIO_AUTH_TOKEN");
    public static void main(String[] args) {
        Twilio.init(ACCOUNT_SID, AUTH_TOKEN);
        new SMSEventClicker();
    }
}

Esta clase es necesaria tanto para recuperar las variables de entorno del sistema como para iniciar Twilio Client que utilizará las variables para que el SMS se pueda enviar con éxito.

Para finalizar la definición de la clase, se crea un objeto del SMSEventClicker. Una vez compilado el código, el JVM comenzará a ejecutar el programa Java y se invocarán todas las definiciones de la GUI y de los botones definidos anteriormente en este artículo.

El código completo está en mi repositorio de GitHub para que pueda consultarlo.

Compilar y ejecutar el programa Java

Guarde el archivo y compile la clase SMSButton escribiendo este comando en la terminal:

javac -cp "twilio-8.8.0-jar-with-dependencies.jar" SMSButton.java

Si utiliza macOS o Linux, utilice el siguiente comando:

java -cp ".:twilio-8.8.0-jar-with-dependencies.jar" SMSButton

Para los desarrolladores de Windows, utilice el siguiente comando para activar la GUI en su escritorio:

java -cp ".;twilio-8.8.0-jar-with-dependencies.jar" SMSButton

Observe que la única diferencia entre los dos comandos es que el de Windows utiliza un punto y coma en su lugar.

En un momento, verá que aparece una pantalla con el título “Send an SMS” (Enviar un SMS). Luego, haga clic en el botón.

Captura de pantalla de la GUI con el botón que dice “Click Me(Hacer clic).

 

Después de hacer clic en el botón, compruebe si recibe un mensaje de texto en el teléfono.

Captura de pantalla del mensaje de texto “¡Ahoy ahoy!

 

¿Qué es lo siguiente para enviar SMS con Java?

¡Felicidades por haber escrito un programa en Java que envía un SMS una vez que el usuario hace clic en el botón de la pantalla!

Existe mucho más que puede hacer con Twilio y los numerosos paquetes de Java. Quizás también puede averiguar cómo responder a los SMS entrantes en Java con un clic en un botón.

Explora otros proyectos de Java con Twilio:

Hágame saber acerca de los proyectos que está construyendo con Java y Twilio a través de mi correo electrónico.

Diane Phan es desarrolladora de software en el equipo de Developer Voices. Le encanta ayudar a los programadores a afrontar los desafíos que les impiden dar vida a los proyectos. Se puede comunicar con ella en dphan [at] twilio.com o en LinkedIn.

Este artículo ha sido traducido del original "How to Send an SMS with a Click of a Button with Java". Mientras continuamos con los procesos de traducción, nos encantaría recibir sus comentarios en help@twilio.com - Buenas contribuciones pueden generar regalos de Twilio.