
Compartir:
Oleksii es Developer Advocate en Vonage, autor y narrador. Sus intereses incluyen IA/ML, comunicaciones unificadas, tecnologías educativas, tecnologías en la nube y código abierto.
Cómo enviar mensajes SMS con Python, Flask y Vonage
Tiempo de lectura: 19 minutos
Hoy en día, casi todo el mundo utiliza los SMS. Los mensajes de texto son una forma sencilla y cómoda de charlar con los amigos, recibir actualizaciones importantes y realizar tareas básicas de seguridad, como la 2FA. Si eres desarrollador, Python ofrece una sencillez y comodidad similares, lo que lo convierte en uno de los lenguajes de programación más populares del mundo.
Entonces, ¿por qué no unir estos dos métodos y utilizar Python para enviar mensajes SMS?
En este tutorial, te mostraremos cómo enviar un SMS usando Python y Flask. Hemos preparado un pequeño ejemplo de código que será un excelente punto de partida para crear tu aplicación.
Cuenta API de Vonage
Para crear tu aplicación Python SMS, necesitarás una cuenta API de Vonage. Para poder utilizar la API de Messages de Vonagetendrás que crear una aplicación de Vonage desde el portal para desarrolladores.
Abrir Configuración API. En la pestaña Claves de API, encontrará su clave de API y el secreto de Account (secreto de API). Utilizaremos estas credenciales más adelante.

Instala el SDK Python de Vonage
En primer lugar, asegúrese de que su portátil/servidor tiene Python 3 instalado. A continuación, vamos a utilizar venv para crear un entorno aislado con sólo los paquetes necesarios.
Instale virtualenv mediante pip.
Crear el entorno virtual
Active su entorno virtual
Instale el SDK de Python de Vonage
Ejecutar REPL, el intérprete de comandos del lenguaje Python
Importar el SDK de Python de Vonage
Crea un objeto cliente de Vonage que pueda reutilizarse y que conozca tu clave API de Vonage y su secreto.
Utilice send_message method para enviar un SMS. Puedes reemplazar "API de Vonage" por ID de remitente relacionado (nombre del remitente de SMS)
Resultados esperados
Recibimos un diccionario en el que podemos analizar la siguiente información: ¿Se ha enviado correctamente el mensaje? El "estado": "0" significa que todo va bien. ¿En cuántos mensajes se dividió el SMS? ¿Cuánto cuesta enviar el mensaje? Depende del número de símbolos del SMS y del país del receptor.
Comprueba la notificación de tu teléfono y deberías recibir un mensaje SMS. Si no es así, comprueba el contenido de la respuesta.

Puedes monitorear y solucionar problemas de entrega de SMS en el panel de la API de Vonage
Crear un remitente de SMS con Python y Flask
Vamos a crear una pequeña aplicación web usando Flask y Python para enviar un SMS. Nuestra aplicación debe contener un formulario para un número de teléfono y un mensaje SMS. Cuando los usuarios presionen "Enviar SMS", se publicará en una segunda vista que enviará el SMS utilizando la SMS API de Vonage. Crea un archivo server.py y pega allí el código relacionado.
from dotenv import load_dotenv
from flask import Flask, flash, redirect, render_template, request, url_for
import vonage
from os import environ as env
# Load environment variables from a .env file:
load_dotenv('.env')
# Load in configuration from environment variables:
VONAGE_API_KEY = env['VONAGE_API_KEY']
VONAGE_API_SECRET = env['VONAGE_API_SECRET']
VONAGE_NUMBER = env['VONAGE_NUMBER']
# Create a new Vonage Client object:
client = vonage.Client(
key=VONAGE_API_KEY, secret=VONAGE_API_SECRET
)
# Initialize Flask:
app = Flask(__name__)
app.config['SECRET_KEY'] = env['FLASK_SECRET_KEY']
@app.route('/')
def index():
""" A view that renders the Send SMS form. """
return render_template('index.html')
@app.route('/send_sms', methods=['POST'])
def send_sms():
""" A POST endpoint that sends an SMS. """
# Extract the form values:
to_number = request.form['to_number']
message = request.form['message']
# Send the SMS message:
result = client.sms.send_message({
'from': VONAGE_NUMBER,
'to': to_number,
'text': message,
})
# Redirect the user back to the form:
return redirect(url_for('index'))Creemos ahora una plantilla en templates/index.html El siguiente HTML incluye el framework CSS de Bootstrap y luego renderiza un formulario con dos campos to_number para introducir el número de teléfono de destino y messagepara que el usuario pueda introducir su mensaje SMS.
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.3.1/dist/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<title>Send an SMS</title>
</head>
<body>
<script src="https://code.jquery.com/jquery-3.5.0.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.14.7/dist/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.3.1/dist/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<div class="container">
<h1>Send an SMS</h1>
<form action="/send_sms" method="POST">
<div class="form-group"><label for="destination">Phone Number</label>
<input id="to_number" class="form-control" name="to_number" type="tel" placeholder="Phone Number" /></div>
<div class="form-group"><label for="message">Message</label>
<textarea id="message" class="form-control" name="message" placeholder="Your message goes here"></textarea></div>
<button type="submit" class="btn btn-primary">Send SMS</button>
</form>
</div>
</body>
</html>
En este tutorial, utilizaremos la biblioteca python-dotenv para cargar un archivo .env archivo. Antes de iniciar tu servidor, necesitarás proporcionar una configuración en un archivo .env archivo. Comience con lo siguiente y rellene sus datos:
Cree requirements.txt y poner las dependencias relacionadas como en este archivo
Inicie su aplicación con el siguiente comando
Abrir http://localhost:5000/ en su navegador y navegue hasta el capítulo "Enviar un SMS utilizando la aplicación Python".
Despliegue desde el código fuente
También puede desplegar una aplicación utilizando un ejemplo de código preparado. Para desplegar la aplicación, debe clonar el repositorio utilizando git y actualizar .env con tus credenciales
Clona el código fuente.
Vaya a la carpeta del proyecto.
Instale las dependencias.
Inicie su aplicación con el siguiente comando.
Resultado esperado:
A continuación, abra http://localhost:5000/ en su navegador y debería ver la siguiente página web
Enviar un SMS con la aplicación Python

Vamos a enviar un SMS utilizando esta interfaz. Asegúrate de que el número está en formato internacional sin el "+" al principio. Pulsa "Enviar SMS" y comprueba tu teléfono. Puedes encontrar el código fuente de esta aplicación aquí.
Resumen
Enhorabuena. Ya has creado una aplicación para enviar SMS. También puedes usar la API de Messages de Vonage para enviar mensajes con Viber Business Messages, Facebook Messenger y WhatsApp.
Háganos saber cómo podemos ayudarle. Únete a la conversación en nuestro Slack de la comunidad de Vonage o envíanos un mensaje en Twitter.