Déclencheurs d'alertes Firebase

Firebase fournit des alertes pour un large éventail d'événements de gestion de projets et d'applications. Voici quelques exemples d'événements pour lesquels Firebase peut vous envoyer ce type d'alerte :

  • Pour Crashlytics, nous pouvons vous alerter si votre application connaît une augmentation spectaculaire des plantages.
  • Pour la surveillance des performances, nous pouvons vous alerter si le temps de démarrage de votre application dépasse votre seuil configuré.
  • Pour la distribution d'applications, nous pouvons vous alerter si l'un de vos testeurs enregistre un nouvel appareil iOS.

En fonction de l'alerte et des préférences définies par le membre du projet , Firebase affiche ces types d'alertes dans la console Firebase ou les envoie par e-mail.

Cette page décrit comment écrire des fonctions qui gèrent les événements d'alerte.

Comment ça marche?

Vous pouvez déclencher des fonctions en réponse aux événements d'alerte émis par ces sources :

Dans un cycle de vie typique, une fonction déclenchée par un événement d'alerte effectue les actions suivantes :

  1. Écoute/attend qu'un type d'alerte spécifique soit émis par Firebase.
  2. Se déclenche lorsque l'alerte est émise et reçoit la charge utile de l'événement qui contient des informations spécifiques sur l'événement.
  3. Appelle le code de votre fonction pour gérer la charge utile de l'événement.

Déclencher une fonction sur les événements d'alerte

Utilisez le sous-package firebase-functions/v2/alerts pour écrire une fonction qui gère les événements d'alerte. Les exemples suivants spécifiques au produit illustrent un flux de travail dans lequel une fonction utilise un webhook pour publier un message sur un canal Discord lorsqu'une alerte pour ce produit est émise depuis Firebase.

Gérer un événement d'alerte Crashlytics

Pour l'exemple Crashlytics suivant, vous utilisez Cloud Functions pour Firebase pour gérer un événement d'alerte d'un nouveau problème de plantage fatal. Cette fonction publie les informations d'alerte dans un message sur un canal Discord.

Exemple de notification de plantage dans Discord

Exemple de notification pour un nouveau problème de crash mortel

La fonction écoute l'événement onNewFatalIssuePublished :

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

La fonction analyse ensuite l'objet d'événement renvoyé, en créant un message à publier sur le canal 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}\`
`;

Enfin, la fonction envoie le message construit à 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);
    }

Pour en savoir plus sur tous les événements d'alerte Crashlytics que vous pouvez capturer, accédez à la documentation de référence pour les alertes Crashlytics .

Gérer un événement d'alerte de surveillance des performances

L'exemple de cette section vous montre comment écrire une fonction pour les alertes de seuil de performances.

Dans cet exemple, la fonction onThresholdAlertPublished exporte une fonction cloud qui écoute les événements de type PerformanceEvent<ThresholdAlertPayload> , qui est envoyé chaque fois qu'une alerte de seuil de performance se déclenche :

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

La fonction analyse ensuite l'objet d'événement renvoyé, en analysant les informations utiles de la charge utile de l'événement et en créant un message à publier sur le canal 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}
    `;

Enfin, la fonction envoie le message construit à Discord via une requête 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);
        }

Pour en savoir plus sur tous les événements d'alerte de performances que vous pouvez capturer, consultez la documentation de référence des alertes de surveillance des performances .

Gérer un événement d'alerte de distribution d'applications

L'exemple de cette section vous montre comment écrire une fonction pour les nouvelles alertes d'appareil iOS testeur.

Dans cet exemple, la fonction onNewTesterIosDevicePublished exporte une fonction cloud qui écoute les événements de type AppDistributionEvent<NewTesterDevicePayload> , qui est envoyé chaque fois qu'un testeur enregistre un nouvel appareil iOS. Lorsqu'un nouvel appareil iOS est enregistré, vous devez mettre à jour votre profil d'approvisionnement avec l'UDID de cet appareil, puis redistribuer l'application.

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

La fonction analyse ensuite le retour, en analysant les informations utiles de la charge utile de l'événement et en construisant un message à publier sur le canal 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}
`;

Enfin, la fonction envoie le message construit à Discord via une requête 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);
    }

Pour en savoir plus sur tous les événements d'alerte de distribution d'applications que vous pouvez capturer, accédez à la documentation de référence pour les alertes de distribution d'applications .

Pour savoir comment utiliser une fonction déclenchée par une alerte Firebase de commentaires dans l'application depuis App Distribution , consultez Envoyer des commentaires dans l'application à Jira .