
Compartir:
Ben es un desarrollador de segunda carrera que anteriormente pasó una década en los campos de la educación de adultos, la organización comunitaria y la gestión de organizaciones sin ánimo de lucro. Trabajó como defensor de los desarrolladores para Vonage. Escribe regularmente sobre la intersección entre el desarrollo comunitario y la tecnología. Originario del sur de California y residente durante mucho tiempo en Nueva York, Ben reside ahora cerca de Tel Aviv (Israel).
Cómo enviar mensajes SMS con Elixir
Los SMS siguen impulsando gran parte de nuestra comunicación global hoy en día, y con el nuevo Nexmo Elixir SDK puedes empezar a enviar mensajes SMS en Elixir. Todo lo que necesitas es una cuenta Nexmo, un número de teléfono virtual y unas pocas líneas de código.
En este tutorial, recorreremos los pasos para enviar tu primer mensaje SMS en Elixir. Solo necesitas un conocimiento básico de Elixir para empezar, ¡el resto lo haremos juntos!
Si lo prefiere, también puede clonar una versión completamente funcional de este código en GitHub.
Requisitos previos
Para este tutorial necesitarás lo siguiente:
Elixir instalado en su ordenador
Vonage API Account
To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.
Sus credenciales y número de teléfono de Nexmo
Para enviar un SMS, debe obtener su clave y secreto de la API de Nexmo. También necesita configurar un número de teléfono virtual provisto por Nexmo. Vamos a hacer eso juntos ahora.
Sus credenciales API
Una vez que haya iniciado sesión en el Panel Nexmoverás tus credenciales API en la parte superior de la página.
API credentials in the Vonage Developer Dashboard
Tome nota de ellas y guárdelas en un lugar seguro, las utilizaremos dentro de un momento.
Su número de teléfono virtual
Nuestro siguiente paso en la preparación para enviar un SMS es aprovisionar un número de teléfono virtual. En el Panel de control de Nexmo, verá un enlace desplegable llamado Numbers en la barra lateral izquierda. Al hacer clic en él, el desplegable se expandirá y verás varias opciones. Haga clic en la opción Buy Numbers.
Buy numbers menu option
Una vez que navegue hasta la sección Buy Numbers podrá buscar un número de teléfono basándose en Country, Features, Type. También puede restringirla para mostrar sólo números de teléfono con combinaciones específicas de números.
Buy Numbers interface
Busque un número de teléfono con el prefijo del país que más le convenga. Sólo necesita SMS para Features y un Type de Mobile. Después de pulsar el botón Search verá una lista de posibles números. Puede elegir el que desee pulsando el botón de color naranja Buy de la derecha.
Buy number buttons in list of available numbers
Usted ha aprovisionado con éxito un número de teléfono virtual Nexmo. Al igual que hizo con sus credenciales de la API, copie su nuevo número de teléfono en un lugar seguro. Lo utilizaremos en el siguiente paso para enviar nuestro primer SMS con Elixir.
Enviar un SMS con Elixir
Estructura del código
Desde tu terminal crea un nuevo directorio para alojar tu proyecto Elixir, luego navega dentro de ese directorio. Para este tutorial, lo llamaremos send-sms-elixir.
Necesitaremos tres archivos para nuestro proyecto. Como recordatorio, si estás planeando enviar este proyecto al control de versiones público, asegúrate de no registrar tu archivo .env ya que contiene información confidencial sobre tus credenciales.
Una vez que haya terminado usted debe tener tres archivos dentro de su ./send-sms-elixir carpeta:
├── mix.exs
├── send-sms.ex
├── .env Definir nuestro archivo mixto
Cada proyecto Elixir que tenga una dependencia externa necesita crear un archivo Mix que instale esa dependencia en su proyecto. Mix, para aquellos que no estén familiarizados, es similar a Bundler en Ruby o npm en Node.js.
Dentro de nuestro archivo mix.exs definiremos el nombre de nuestro proyecto y dos dependencias, que son el SDK experimental Nexmo Elixir y Envy, un paquete de Hex que nos ayuda a gestionar nuestras variables de entorno:
defmodule SendSms.Mixfile do
use Mix.Project
def project do
[app: :send_sms,
version: "0.0.1",
deps: deps]
end
defp deps do
[
{:nexmo, "0.4.0", hex: :nexmo_elixir},
{:envy, "~> 1.1.1"}
]
end
end
Definición de las variables de entorno
Anteriormente creamos nuestro número de teléfono virtual Nexmo y obtuvimos nuestras credenciales API Nexmo. Ahora vamos a integrarlas en nuestra aplicación almacenándolas en nuestro archivo .env archivo. Dentro de su .env pon lo siguiente, proporcionando tu clave API, secreto API y número de teléfono Nexmo en los lugares apropiados:
NEXMO_API_KEY=
NEXMO_API_SECRET=
NEXMO_NUMBER=
SMS_API_ENDPOINT="https://rest.nexmo.com/sms/json"Además de nuestra clave API, el secreto y el número de teléfono, también proporcionamos el punto final Nexmo SMS API en nuestro archivo .env para que lo utilice el SDK.
Definición de nuestro código Elixir
Ya estamos listos para crear el código que enviará nuestro primer SMS. Abre el archivo send_sms.ex y añade lo siguiente:
defmodule SendSms do
use Application
def start(_type, _args) do
unless Mix.env == :prod do
Envy.auto_load
end
end
def send_msg(to_number, message)
Nexmo.Sms.send(
from: System.get_env("NEXMO_NUMBER"),
to: to_number,
text: message
)
end
endEn lo anterior, definimos un módulo llamado SendSms que tiene una función SendSms.start/2 que carga nuestras variables de entorno desde el archivo .env usando el paquete Envy.
A continuación creamos una segunda función llamada SendSms.send/2 que acepta como argumento el número del destinatario al que deseamos enviar el texto y el mensaje real. Dentro de la función, llamamos a la función Nexmo Elixir SDK Nexmo.Sms.send/1 y le pasamos nuestro número virtual Nexmo (almacenado como variable de entorno), el código to_numbery el argumento message.
Ya está. Ya estamos listos para ejecutar nuestro código y enviar el mensaje.
Ejecutar la aplicación
La forma más sencilla de ejecutar tu aplicación y enviar un SMS es cargar tu proyecto en iex, un intérprete de comandos interactivo de Elixir.
Primero compilemos nuestro archivo send_sms.ex que hará que la función send_msg/2 dentro del shell. Para compilarlo todo lo que tenemos que hacer es ejecutar desde la línea de comandos elixirc send_sms.ex. Eso sólo debería tomar un momento, y una vez que haya terminado podemos ejecutar nuestra aplicación dentro de iex.
Para ejecutar su proyecto en iex desde su línea de comandos ejecute lo siguiente: iex -S mix. Esto iniciará su proyecto y lo lanzará dentro del shell.
Aparecerá una ventana como la siguiente:
Interactive Elixir (1.9.2) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)>
Ya puedes enviar tus SMS.
iex(1)> SendSms.send_msg(RECIPIENT_NUMBER, "This is powered by Nexmo on Elixir!")
Recibirás de vuelta de la API Nexmo SMS la confirmación de que has enviado el mensaje correctamente con un código de estado HTTP de 200.
Enhorabuena, lo has conseguido.
Lecturas complementarias
Si te interesa saber más sobre SMS y Nexmo, no dudes en consultar lo siguiente:
Compartir:
Ben es un desarrollador de segunda carrera que anteriormente pasó una década en los campos de la educación de adultos, la organización comunitaria y la gestión de organizaciones sin ánimo de lucro. Trabajó como defensor de los desarrolladores para Vonage. Escribe regularmente sobre la intersección entre el desarrollo comunitario y la tecnología. Originario del sur de California y residente durante mucho tiempo en Nueva York, Ben reside ahora cerca de Tel Aviv (Israel).
