Firebase 警報觸發器

Firebase 為各種事件提供警報,例如賬單更改或 Crashlytics 速度警報。根據項目成員設置的警報和首選項,警報可以在 Firebase 控制台中查看、通過電子郵件發送或通過可用的第三方集成( SlackJiraPagerDuty )之一發送。每個警報及其首選項都在 Firebase 控制台中配置。

此外,Firebase 通過 Cloud Functions 提供對某些類型警報的可自定義編程訪問。

您可以觸發函數以響應這些來源發出的 Firebase 警報事件:

  • 崩潰分析器
  • 應用分發
  • Firebase 計費

例如,您可以捕獲 Crashlytics 警報並將崩潰通知發送到 Discord。或者,您可以捕獲計費事件(例如項目計費計劃的更改),並觸發向項目所有者發送通知的功能。

在典型的生命週期中,Firebase 警報功能會執行以下操作:

  1. 偵聽/等待從 Firebase 警報發出的特定警報類型。
  2. 觸發警報時觸發,並接收包含有關事件的特定信息的事件負載。
  3. 執行函數中定義的任務。

有關Crashlytics應用程序分發計費的警報類型和有效負載,請參閱參考文檔。

觸發警報事件的功能

使用firebase-functions/v2/alerts子包創建一個處理 Firebase 警報事件的函數。此頁面中的代碼示例基於應用程序流,當應用程序中出現嚴重/致命問題時,該應用程序流使用 webhook 在 Discord 頻道中發布消息。

Discord 中的示例崩潰通知
崩潰通知示例

示例函數監聽onNewFatalIssuePublished事件,如下所示:

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

然後該函數解析返回的事件對象,構造一條消息發佈到 Discord 頻道:

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

**${title}**

${subtitle}

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

最後,該函數將構造的消息發送到 Discord:

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

通過這種方式,您可以利用 Cloud Functions for Firebase 使用對您的團隊最有用的自定義邏輯來響應 Firebase 警報事件。除了與 Discord 等服務集成之外,您還可以編寫函數以超越與 Jira、Slack 或 PagerDuty 等提供程序的控制台配置集成。例如,您可以添加自定義字段或其他尚不支持的功能。