
Compartir:
Kelly J Andrews es desarrolladora de Nexmo y lleva más de 30 años jugando con los ordenadores. Utilizó BASIC por primera vez a los 5 años.
No fue hasta que creó su primera página web en 1997 y probó JavaScript por primera vez cuando encontró su verdadera vocación. Kelly lucha ahora por JavaScript, el código comprobable y la entrega rápida.
Se le puede encontrar cantando karaoke, haciendo magia o animando a los Cubs y a los Fighting Irish.
Cómo enviar y recibir SMS con funciones Firebase (Tutorial)
Tiempo de lectura: 13 minutos
Este artículo se actualizó en octubre de 2025
La plataforma Firebase permite a los desarrolladores crear rápidamente el backend de una aplicación. También es agradable de usar. Para este tutorial, quería empezar a usarlo para algunos mensajes SMS con Vonage. A continuación, te mostraré cómo recibir y enviar mensajes SMS usando Firebase. Después de terminar estos pasos, podrás crear un registro de mensajes SMS y una respuesta al remitente usando Funciones en la Nube de Firebase y la base de datos en tiempo real junto con la SMS API de Vonage.
Este blog post utiliza Gen 1 de Firebase; también puedes aprender a enviar mensajes SMS con Cloud Functions para Firebase Gen 2 aquí.
Puede ver el código completo en GitHub.
También puede encontrar este tutorial en formato Video:
Antes de empezar
Necesitarás algunos artículos para ponerte en marcha, así que tómate un momento y asegúrate de tenerlos listos.
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.
A Firebase Account.
Este tutorial consta de tres secciones principales:
En primer lugar, le mostraremos cómo configurar Firebase para su proyecto.
A continuación, te mostraremos cómo crear una función para recibir mensajes SMS en Firebase.
Por último, veremos cómo crear una función que envíe mensajes SMS en Firebase.
Configuración de Firebase
El primer paso es crear un proyecto Firebase. A continuación se muestra cómo configurar un nuevo proyecto utilizando la consola Firebase.
Crear el proyecto Firebase
Vaya a la Consola Firebase
Haga clic en Añadir proyecto, añada un nombre de proyecto y haga clic en Continuar.
Create a Project
No usaremos Google Analytics para este proyecto pero siéntete libre de añadirlo si te gusta y luego haz clic en Crear Proyecto (si se añade).
Add analytics
3. Espera un poco a que se cree el proyecto: tarda menos de un minuto.
4. Establezca el tipo de facturación en ⚙️ -> Uso y facturación -> Detalles y configuración a Blaze. El plan de pago por uso es necesario para utilizar una API de terceros. Más información sobre la facturación con Google.
Change BillingFije el
Google Cloud Platform (GCP) resource locationen⚙️ -> Project Settings.
Update Location
Instalar herramientas Firebase
Casi todo lo que necesitas hacer con Firebase se puede hacer directamente desde la línea de comandos con el conjunto de herramientas que proporcionan.
Instala las herramientas Firebase con npm.
Inicie sesión en Firebase con
firebase login. El proceso de inicio de sesión abrirá tu navegador para la autenticación.
Configurar el entorno local
Escribir Funciones Cloud para Firebase requiere algo de trabajo de inicialización para empezar, pero en su mayor parte se hace por ti usando los comandos de las Herramientas Firebase.
Crear una carpeta de proyecto
mkdir vonage-project && cd vonage-project.Inicializar Funciones Cloud para Firebase
firebase init functions.
######## #### ######## ######## ######## ### ###### ########
## ## ## ## ## ## ## ## ## ## ##
###### ## ######## ###### ######## ######### ###### ######
## ## ## ## ## ## ## ## ## ## ##
## #### ## ## ######## ######## ## ## ###### ########
You're about to initialize a Firebase project in this directory:
/your_folders/your-project-name
=== Project Setup
First, let's associate this project directory with a Firebase project.
You can create multiple project aliases by running firebase use --add,
but for now, we'll just set up a default project.
? Please select an option: (Use arrow keys)
❯ Use an existing project
Create a new project
Add Firebase to an existing Google Cloud Platform project
Don't set up a default projectComo ya ha creado un proyecto en el cuadro de mandos, puede seleccionar Use an existing project que le pedirá que elija el proyecto deseado. Si no lo ha hecho, utilice Create a new project y dele un nombre único para crear uno. Usted todavía tendría que ir a la consola para actualizar la ubicación y la facturación, pero es otra opción para crear proyectos Firebase.
Seleccione el nombre del proyecto que ha creado.
Selecciona JavaScript.
Elija Y para ESLint si lo desea (se lo recomiendo).
Instale ahora todas las dependencias.
Estos pasos crearán las carpetas y archivos necesarios para compilar Firebase Functions e instalar todas las dependencias. Una vez completado NPM, cambie al directorio functions y abre index.js en tu editor favorito para empezar a añadir código.
Crear una función Firebase para recibir mensajes SMS
La primera función que crees actuará como un webhook para capturar y registrar los mensajes SMS entrantes de Vonage. Esta función te permitirá recibir mensajes de texto SMS entrantes a través de Firebase.
El archivo index.js contiene código de ejemplo que no necesitarás. Borre todo y empiece por arriba para añadir el siguiente código:
const functions = require("firebase-functions/v1");
const admin = require("firebase-admin");
const serviceAccount = require("./serviceAccountKey.json");
// Initialize Firebase app for database access
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://name_of_the_database.europe-west1.firebasedatabase.app",
});Llamando a admin.initializeApp(); permite a las funciones leer y escribir en la base de datos Firebase Real-Time.
También debe crear una Cuenta de servicio para tu proyecto y añadir tu databaseURL que se encuentra en la pestaña "Realtime Database" de tu proyecto Firebase.
A continuación, utilice el siguiente método para crear su función.
// This function will serve as the webhook for incoming SMS messages,
// and will log the message into the Firebase Realtime Database
exports.inboundSMS = functions.https.onRequest(async (req, res) => {
let params;
if (Object.keys(req.query).length === 0) {
params = req.body;
} else {
params = req.query;
}
await admin.database().ref('/msgq').push(params);
res.sendStatus(200);
});El método inboundSMS escucha las solicitudes HTTPS, que es precisamente lo que necesita el webhook de Vonage. La función Firebase capturará el req.body en caso de que sea un POST Method o el req.query en caso de que sea un GET Method. Luego lo envía al objeto /msgq objeto de la base de datos en tiempo real como registro.
Ahora que tienes algo de código escrito asegúrate de guardar tu archivo y desplegar la función en Firebase:
firebase deploy --only functions
=== Deploying to 'vonage-project'...
i deploying functions
Running command: npm --prefix "$RESOURCE_DIR""
> functions@ lint /Users/kellyjandrews/Google Drive/Apps/vonage-project/functions
> eslint .
✔ functions: Finished running predeploy script.
i functions: ensuring necessary APIs are enabled...
✔ functions: all necessary APIs are enabled
i functions: preparing functions directory for uploading...
i functions: packaged functions (38.78 KB) for uploading
✔ functions: functions folder uploaded successfully
i functions: creating Node.js 18 function inboundSMS(us-central1)...
✔ functions[inboundSMS(us-central1)]: Successful create operation.
Function URL (inboundSMS): https://us-central1-vonage-project.cloudfunctions.net/inboundSMS
✔ Deploy complete!
Project Console: https://console.firebase.google.com/project/vonage-project/overviewLa pieza vital de la salida es Function URL (inboundSMS). Esta URL es necesaria para configurar el webhook en Vonage, lo que harás a continuación.
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.
This tutorial also uses a virtual phone number. To purchase one, go to Numbers > Buy Numbers and search for one that meets your needs.
Desde la Configuración del panel de Vonageasegúrate de estar utilizando la SMS APIselecciona post y copia la URL de la función de salida (SMS entrantes) desde la consola del terminal y pégala en el webhook de Vonage.
Vonage Dashboard SettingsCoge tu teléfono y envía un mensaje al número de teléfono. Abre la consola Firebase y navega hasta la página database y deberías ver algo como esto:
Real-time Database Vonage Message Entry
Ahora que hay una forma de registrar los mensajes entrantes, puedes escribir una función para hacer algo con el mensaje entrante.
Crear una función Firebase para enviar mensajes SMS
Hasta ahora, has creado una función Firebase vinculada a un número de teléfono de Vonage para capturar mensajes SMS entrantes. Las Funciones Firebase también pueden reaccionar a las actualizaciones de la base de datos. Ante una nueva entrada, el código envía un eco del texto original.
A continuación, le mostraremos cómo crear una función en Firebase que envíe mensajes de texto SMS.
Empiece por añadir Vonage a la lista de dependencias; asegúrese de hacerlo en el directorio functions directorio:
A continuación, añade dotenv a la lista de dependencias.
Crea un .env y añada las variables de entorno en el directorio functions directorio:
Puedes usar dot env o añadir las siguientes variables de entorno a la configuración de Firebase:
Abra su Página de configuración de API para acceder a tu clave y secreto de API de Vonage, que aparecen como se muestra en la captura de pantalla a continuación. La clave de API se encuentra en la parte superior de la página, y para acceder a tu secreto de API, consulta la subsección "Secreto de Account".
Nota: En caso de que no recuerde su secreto de API creado anteriormente, haga clic en "+ Crear nuevo secreto" y guárdelo de forma segura.

A continuación, abra index.js añade @vonage/server-sdk a los requisitos en la parte superior, e importa las variables de entorno para inicializar Vonage:
require("dotenv").config();
const functions = require("firebase-functions/v1");
const admin = require("firebase-admin");
const { Vonage } = require("@vonage/server-sdk");
const serviceAccount = require("./serviceAccountKey.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://name_of_the_database.region.firebasedatabase.app",
});
// If you are using .env
const vonage = new Vonage({
apiKey: process.env.VONAGE_API_KEY,
apiSecret: process.env.VONAGE_API_SECRET,
});
// If you are using the Firebase Environment Variables
const {
api_key,
api_secret
} = functions.config().vonage;Ahora puedes crear la nueva función para que Firebase envíe la respuesta:
// This function listens for updates to the Firebase Realtime Database
// and sends a message back to the original sender
exports.sendSMS = functions.database
.ref("/msgq/{pushId}")
.onCreate(async (message) => {
const { msisdn, text, to } = message.val();
const resultSnapshot = await message.ref.parent
.child("result")
.once("value");
if (resultSnapshot.exists()) {
console.log("Result already exists. Exiting function.");
return;
}
try {
const responseData = await vonage.sms.send({
to: to,
from: msisdn,
text: `You sent the following text: ${text}`,
});
if (responseData.messages && responseData.messages[0].status === "0") {
const result = `You sent the following text:
${responseData.messages[0]["message-id"]}`;
await message.ref.parent.child("result").set(result);
console.log(result);
return result;
} else {
const errorText =
(responseData.messages && responseData.messages[0]["error-text"]) ||
"Unknown error";
const errorMessage = `Message failed with error: ${errorText}`;
console.error(errorMessage);
return errorMessage;
}
} catch (err) {
console.error("Vonage error:", err);
return `Vonage error: ${err.message}`;
}
});La nueva función buscará nuevos mensajes añadidos al objeto de base de datos /msgq objeto de base de datos. Cuando se activa, el objeto de Vonage completo se pasa como message. Este objeto incluye msisdnque es el número de teléfono de origen, el tuyo en este caso, y el número to que es el número virtual de Vonage que compraste.
Con los números de teléfono en la mano, así como el mensaje de texto, ahora puede hacer cualquier número de cosas. Puedes crear una tabla de búsqueda para responder con datos específicos basados en la palabra clave, reenviarlo a otro sistema o, en nuestro caso, enviar el mensaje original.
Despliegue las funciones Firebase de nuevo desde la línea de comandos:
firebase deploy --only functionsCoge tu teléfono, envía otro mensaje, y entonces deberías recibir una respuesta parecida a You sent the following text: A text message sent using the Vonage SMS API.
Resumen
Ya ha completado todos los pasos de este tutorial. Puedes ver el código completo en GitHub.
Ahora que los pasos iniciales para enviar y recibir mensajes se han completado, mis próximos posts se ampliará este concepto en el control de algunos de mi automatización del hogar a través de mensajes de texto.
¿Tienes alguna pregunta o algo que compartir? Únete a la conversación en Slack de la comunidad de Vonagey mantente actualizado con el Boletín para desarrolladoressíguenos en X (antes Twitter)suscríbete a nuestro canal de YouTube para ver tutoriales en video, y sigue la página de página para desarrolladores de Vonage en LinkedInun espacio para que los desarrolladores aprendan y se conecten con la comunidad. Mantente conectado, comparte tu progreso y entérate de las últimas noticias, consejos y eventos para desarrolladores.
Lecturas complementarias
Compartir:
Kelly J Andrews es desarrolladora de Nexmo y lleva más de 30 años jugando con los ordenadores. Utilizó BASIC por primera vez a los 5 años.
No fue hasta que creó su primera página web en 1997 y probó JavaScript por primera vez cuando encontró su verdadera vocación. Kelly lucha ahora por JavaScript, el código comprobable y la entrega rápida.
Se le puede encontrar cantando karaoke, haciendo magia o animando a los Cubs y a los Fighting Irish.
