
Compartir:
Adam es un desarrollador y consultor al que le gusta correr a toda velocidad, bloguear y ayudar a otros a domar la tecnología para conseguir cosas increíbles, con un deseo insaciable de servir de mentor y ayudar.
Utilización de una cola de mensajes con SMS para las limitaciones de caudal
En algunos países, la limitación del rendimiento de los SMS y la lentitud de las solicitudes (a veces sólo una por segundo) dificultan el envío masivo. Una forma de superar estas limitaciones es utilizar una cola de mensajes, como AWS SQS.
Para este ejemplo, se crea un microservicio sin servidor en AWS Lambda utilizando esta aplicación Python disponible en Github que utiliza Flasky sin servidor. La aplicación tiene dos propósitos: Añade mensajes a AWS SQS y luego facilita el envío real a través de Vonage SMS según lo solicitado.
Requisitos previos
Python 3.8 (actualice
serverless.ymlsi se desea una versión superior)Pip
Node.js y npm
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.
Instrucciones de instalación
Clonar el archivo nexmo-community/sms-aws-sqs-python-sender de GitHub y navega hasta el directorio recién creado para continuar.
Medio ambiente
Cambie el nombre de .env.default a .env y añada valores a VONAGE_API_KEY y VONAGE_API_SECRET proporcionados en tu Panel de la API de Vonage.
Configuración de AWS
Necesita crear credenciales de AWS como indica Serverless. Actualice el .env con ellas.
Además, cree una nueva cola SQS FIFO utilizando la configuración predeterminada y actualice .env con la URL de la cola SQS. FIFO garantiza que los mensajes se envíen en el orden en que se almacenaron.
Utilización
Para empezar, cree un virtualenv dentro de la raíz del proyecto para contener el proyecto. A continuación, actívelo de la siguiente manera:
A continuación, inicializa npm y sigue las indicaciones seleccionando los valores predeterminados, a menos que desees cambiar alguno de ellos. Además, utiliza npm para instalar las dependencias necesarias para DEV para que Serverless y Lambda funcionen con la aplicación Flask.
Ahora puedes usar pip para instalar las dependencias de Python necesarias. Las dependencias están en el requirements.txt, así que instruye a pip para que lo use.
Running Local
Si desea ejecutar la aplicación localmente y probar las cosas, antes de implementar en AWS Lambda, puede servirla con el siguiente comando:
Por defecto, sirve la aplicación en http://localhost:5000. Pulsa Ctrl+c para cerrarla.
Despliegue en Lambda
Con todo lo anterior terminado con éxito, ahora puede utilizar Serverless para implementar la aplicación en AWS Lambda.
IMPORTANTE: Esta aplicación no contiene ninguna autenticación para su uso. Por lo tanto, asegúrate de agregar autenticación delante de ella para evitar el uso público. Al dejarla abierta al público, podría dar lugar a cargos por uso en AWS y Vonage.
Puntos finales disponibles
Hay 3 puntos finales de URL disponibles con este cliente:
1 solicitud GET a /
No realiza ninguna acción, pero proporciona una forma rápida de probar
2 Solicitud POST a /add
Esta acción almacena el mensaje en SQS.
Pase un POST con un cuerpo JSON como el siguiente. Sustituya los marcadores de posición, indicados con
<>con sus datos.El resultado contiene el SQS
MessageId.
{
"from": "<your_name_or_number>",
"message": "<sms_message_contents>",
"to": "<recipients_number>"
}
3 Solicitud GET a /process
Inicia el proceso de envío.
Recupera mensajes de la cola SQS FIFO.
Se conecta a Nexmo y envía el mensaje SMS.
location=None, media_mode=relayed, archive_mode=manual Ejemplos:
Vaya a la URL proporcionada por el proceso de despliegue. A continuación se muestran algunos ejemplos de solicitudes de muestra: (Su URL puede variar.)
GET https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/
El punto final / devuelve el mensaje genérico.
POST https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/add
El punto final add devuelve el SQS MessageId.
GET https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/process
El punto final process devuelve un mensaje que indica que el envío se ha realizado correctamente.
Desactivar Virtualenv
Para salir del virtualenv, puede desactivarlo cuando lo desee.
NOTA: Dependiendo del sistema operativo, puede que tenga que anteponer
virtualenval comando anterior.
Próximos pasos
En este ejemplo, la aplicación contiene un endpoint /process con una petición HTTP GET a intervalos programados. Alternativamente, el código en /process podría colocarse en una función Lambda independiente y llamarse directamente desde eventos programados de CloudWatch en lugar de una solicitud HTTP GET.
Si tiene alguna pregunta o se encuentra con problemas, puede ponerse en contacto con @VonageDev en Twitter o consultar en la Comunidad de Vonage en Slack. Buena suerte.
