Activadores de Alertas de Firebase

Firebase proporciona alertas para una amplia variedad de eventos de administración de proyectos y apps. Estos son algunos ejemplos de eventos para los que Firebase puede enviarte este tipo de alerta:

  • En Crashlytics, podemos alertarte si tu app tiene un aumento notable de fallas.
  • En Performance Monitoring, podemos alertarte si el tiempo de inicio de tu app supera el límite configurado.
  • En App Distribution, podemos alertarte si uno de tus verificadores registra un dispositivo iOS nuevo.

Según la alerta y las preferencias establecidas por el miembro del proyecto, Firebase muestra estos tipos de alertas en Firebase console o las envía por correo electrónico.

En esta página, se describe cómo escribir funciones que controlan eventos de alerta.

¿Cómo funciona?

Puedes activar funciones en respuesta a los eventos que emiten estas fuentes:

En un ciclo de vida típico, una función activada por un evento de alerta hace lo siguiente:

  1. Detecta y espera que se emita un tipo de alerta específico de Firebase.
  2. Se activa cuando se emite la alerta y recibe la carga útil del evento, que contiene información específica sobre el evento.
  3. Invoca el código de tu función para controlar la carga útil del evento.

Activa una función cuando ocurran eventos de alerta

Usa el subpaquete firebase-functions/v2/alerts para escribir una función que controle los eventos de alertas. En los siguientes ejemplos específicos de productos, se muestra un flujo de trabajo en el que una función usa un webhook para publicar un mensaje en un canal de Discord cuando se emite una alerta para ese producto desde Firebase.

Controla un evento de alerta de Crashlytics

En el siguiente ejemplo de Crashlytics, debes usar Cloud Functions para Firebase a fin de manejar un evento de alerta sobre un nuevo problema grave de falla. Esta función publica la información de la alerta en un mensaje en un canal de Discord.

Ejemplo de notificación de falla en Discord

Notificación de ejemplo para un nuevo problema grave de falla

La función escucha el evento onNewFatalIssuePublished:

exports.postfatalissuetodiscord = onNewFatalIssuePublished(async (event) => {

Luego, la función analiza el objeto de evento que se muestra y crea un mensaje para publicarlo en el canal de Discord:

  // construct a helpful message to send to Discord
  const appId = event.appId;
  const {id, title, subtitle, appVersion} = event.data.payload.issue;
  const message = `
🚨 New fatal issue for ${appId} in version ${appVersion} 🚨

**${title}**

${subtitle}

id: \`${id}\`
`;

Por último, la función envía el mensaje construido a Discord:

    const response = await postMessageToDiscord("Crashlytics Bot", message);
    if (response.ok) {
      logger.info(
          `Posted fatal Crashlytics alert ${id} for ${appId} to Discord`,
          event.data.payload,
      );
    } else {
      throw new Error(response.error);
    }

Para obtener información sobre todos los eventos de alerta de Crashlytics que puedes capturar, consulta la documentación de referencia sobre las alertas de Crashlytics.

Controla un evento de alerta de Performance Monitoring

En el ejemplo de esta sección, se muestra cómo escribir una función para las alertas de umbral de rendimiento.

En este ejemplo, en la función onThresholdAlertPublished, se exporta una Cloud Function que escucha eventos de tipo PerformanceEvent<ThresholdAlertPayload>, que se envía cada vez que se activa una alerta de límite de rendimiento:

exports.postperformancealerttodiscord = onThresholdAlertPublished(
    async (event) => {

Luego, la función analiza el objeto de evento que se muestra, analiza la información útil de la carga útil del evento y construye un mensaje para publicar en el canal de Discord:

      // construct a helpful message to send to Discord
      const appId = event.appId;
      const {
        eventName,
        metricType,
        eventType,
        numSamples,
        thresholdValue,
        thresholdUnit,
        conditionPercentile,
        appVersion,
        violationValue,
        violationUnit,
        investigateUri,
      } = event.data.payload;
      const message = `
    ⚠️ Performance Alert for ${metricType} of ${eventType}: **${eventName}** ⚠️

    App id: ${appId}
    Alert condition: ${thresholdValue} ${thresholdUnit}
    Percentile (if applicable): ${conditionPercentile}
    App version (if applicable): ${appVersion}

    Violation: ${violationValue} ${violationUnit}
    Number of samples checked: ${numSamples}

    **Investigate more:** ${investigateUri}
    `;

Por último, la función envía el mensaje construido a Discord a través de una solicitud HTTP:

        const response = await postMessageToDiscord(
            "Firebase Performance Bot", message);
        if (response.ok) {
          logger.info(
              `Posted Firebase Performance alert ${eventName} to Discord`,
              event.data.payload,
          );
        } else {
          throw new Error(response.error);
        }

Para obtener información sobre todos los eventos de alertas de rendimiento que puedes capturar, consulta la documentación de referencia sobre las alertas de Performance Monitoring.

Controla un evento de alerta de App Distribution

En el ejemplo de esta sección, se muestra cómo escribir una función para alertas de dispositivos iOS nuevos de verificadores.

En este ejemplo, la función onNewTesterIosDevicePublished exporta una Cloud Function que escucha eventos del tipo AppDistributionEvent<NewTesterDevicePayload>, que se envía cada vez que un verificador registra un dispositivo iOS nuevo. Cuando se registra un dispositivo iOS nuevo, debes actualizar tu perfil de aprovisionamiento con el UDID de ese dispositivo y, luego, redistribuir la app.

exports.postnewduuidtodiscord = onNewTesterIosDevicePublished(async (event) => {

Luego, la función analiza la información que se muestra, analiza la información provechosa de la carga útil del evento y construye un mensaje para publicar en el canal de Discord:

  // construct a helpful message to send to Discord
  const appId = event.appId;
  const {
    testerDeviceIdentifier,
    testerDeviceModelName,
    testerEmail,
    testerName,
  } = event.data.payload;
  const message = `
📱 New iOS device registered by ${testerName} <${testerEmail}> for ${appId}

UDID **${testerDeviceIdentifier}** for ${testerDeviceModelName}
`;

Por último, la función envía el mensaje construido a Discord a través de una solicitud HTTP:

    const response = await postMessageToDiscord("AppDistribution Bot", message);
    if (response.ok) {
      logger.info(
          `Posted iOS device registration alert for ${testerEmail} to Discord`,
      );
    } else {
      throw new Error(response.error);
    }

Para obtener información sobre todos los eventos de alerta de App Distribution que puedes capturar, consulta la documentación de referencia sobre las alertas de App Distribution.

Para obtener información sobre cómo usar una función activada por una alerta de comentarios de Firebase en App Distribution, consulta Enviar comentarios en la app a Jira.