Funciones en Firebase: Eventos de Analíticas y Envío de Mensajes
Clase 18 de 22 • Curso de Firebase 5: Cloud Functions
Contenido del curso
Consola web de administración
Extendiendo la Gestión de Usuarios con Cloud Functions.
Extendiendo Firestore con Cloud Functions.
Extendiendo el Almacenamiento con Cloud Functions.
Creando Cloud Functions HTTPS
Extendiendo el Hosting con Cloud Functions.
Extendiendo crashlytics con Cloud Functions.
Extendiendo Analytics con Cloud Functions.
Creación de pruebas unitarias a las Cloud Functions.
Optimizando las Cloud Functions.
Cierre
Potencia la retención con Firebase: cuando un usuario comparte contenido, una función se ejecuta y envía un bono por SMS. Este flujo combina Firebase Analytics, Cloud Functions y buenas prácticas como variables de entorno y manejo de errores, sin complicaciones ni código innecesario.
¿Qué hace una función de analíticas en Firebase?
Las analíticas de Firebase permiten registrar métricas y eventos desde apps móviles para entender el comportamiento de usuarios y tomar decisiones de producto. Aquí se configura una función que se dispara por un evento de Analytics cuando alguien comparte algo en la app y, como agradecimiento, se envía un descuento por SMS.
Ideas clave: - Soporte de múltiples disparadores: creación de usuarios, Firestore, storage, HTTP y errores de Crashlytics. - Evento objetivo: compartir contenido, definido como "share". - Resultado: envío de un mensaje tipo “gracias por compartir, te has ganado un premio”.
¿Cómo se configura el evento share con Cloud Functions?
Se define la función en el archivo index, se nombra el export y se crea el disparador con functions.analytics.event. Después se encadena el onLog para ejecutar el controller que gestiona la lógica de negocio.
Puntos esenciales: - Definición simple en index con una línea de functions y un exports con nombre claro. - Disparador: evento de Analytics llamado "share". - Encadenar a un controller que envía el cupón de compartir.
// index.js
exports.analiticaCompartir = functions.analytics
.event('share')
.onLog(AnaliticasController.enviarCuponCompartir);
¿Por qué marcar como conversión en la consola?
Para que la función se dispare, el evento debe estar marcado como conversión en la consola web de Firebase, dentro de la sección de analíticas y eventos. Si no se marca, la función no se ejecuta.
¿Dónde verificas el evento share?
En la consola de Firebase: sección de analíticas, pestaña de eventos. Busca "share" y confirma que está marcado como conversión.
¿Qué datos se leen y cómo se envía el SMS de premio?
El evento entrega parámetros útiles y datos del dispositivo. Se usa event.params.method para saber en qué red social se compartió. Además, se consulta el número de celular desde variables de entorno con functions.config(). Luego, un helper de SMS envía el mensaje y se captura cualquier error con console.error.
Conceptos y flujo:
- Parámetros del evento: event.params.method indica la red social.
- Datos extra del dispositivo: llegan junto con la analítica.
- Variables de entorno: functions.config().configuration.noCelularError ya registradas.
- Envío del SMS: uso de SmsHelper con número y mensaje.
- Buenas prácticas: manejo de errores con console.error.
// AnaliticasController.js
exports.enviarCuponCompartir = async (event) => {
try {
const redSocial = event.params.method; // Facebook, etc.
const numero = functions.config().configuration.noCelularError; // ya configurado.
const mensaje = `Gracias por compartir en la red ${redSocial}. ` +
`Te has ganado un premio.`;
await SmsHelper.send(mensaje, numero);
} catch (error) {
console.error(error);
}
};
Habilidades prácticas que aplicas:
- Configurar un disparador de Analytics con Cloud Functions.
- Leer params del event para personalizar respuestas.
- Centralizar secretos en functions.config() como variables de entorno.
- Componer mensajes efectivos y enviar SMS desde un helper.
- Registrar errores para observabilidad.
¿Tienes un evento que te gustaría premiar, como compras o compartir contenido? Cuéntalo en los comentarios y qué mensaje enviarías por SMS.