Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

ایجاد و رسیدگی به محرک های رویداد سفارشی

با مجموعه‌ها، منظم بمانید ذخیره و دسته‌بندی محتوا براساس اولویت‌های شما.

با Cloud Functions v2، می‌توانید توابع را در پاسخ به رویدادهای سفارشی فعال کنید. اینها رویدادهایی هستند که توسط ارائه دهندگان رویداد ویژه یا اضافی ارائه می شوند، برخلاف رویدادهای Firebase که به طور بومی توسط Firebase SDK برای توابع Cloud پشتیبانی می شوند.

در طول پیش‌نمایش عمومی، رویدادهای سفارشی موجود توسط Firebase Extensions ارائه می‌شوند. می توانید یک برنامه افزودنی را در برنامه خود نصب کنید و سپس به رویدادهای سفارشی در این جریان اصلی پاسخ دهید:

  1. افزونه ای را نصب کنید که یک یا چند رویداد سفارشی را ارائه می دهد.
  2. با استقرار یک کنترل کننده onCustomEventPublished یک نوع رویداد را مدیریت کنید. در این تابع، بار بازگشتی در شی CloudEvent را تجزیه و تحلیل کنید و هر منطق سفارشی مورد نیاز برنامه شما را انجام دهید.

به عنوان مثال، یک برنامه افزودنی طراحی شده برای کمک به برنامه‌ها در پردازش تصاویر بزرگ ممکن است پس از تکمیل تغییر اندازه تصویر، رویدادی را منتشر کند. برنامه‌هایی که این برنامه افزودنی نصب شده می‌توانند با به‌روزرسانی پیوندهای موجود در برنامه برای اشاره به نسخه‌های تغییر اندازه تصویر، رویداد تکمیل را مدیریت کنند.

همه رویدادهای سفارشی با قالب رویداد CloudEvents JSON مطابقت دارند. برای اطلاعات کلیدی مانند فهرست رویدادهای موجود و جزئیات بار رویداد، به مستندات یک برنامه افزودنی خاص مراجعه کنید.

یک رویداد سفارشی را مدیریت کنید

هنگامی که یک رویداد سفارشی موجود از یک برنامه افزودنی نصب شده را کشف کردید، می توانید آن رویداد را با آن مدیریت کنید
کنترل کننده onCustomEventPublished . ابتدا، این کنترلر را از logger SDK به همراه Firebase Admin SDK برای Node.js برای منطق سفارشی خود و SDK ثبت کننده برای رسیدگی به خطاها وارد کنید:

const {onCustomEventPublished} = require("firebase-functions/v2/eventarc");
const logger = require("firebase-functions/logger");
const {initializeApp} = require("firebase-admin/app");
const {getFirestore} = require("firebase-admin/firestore");

در کد تابع خود، نام رویداد را مانند تابع مثال onimageresized :

exports.onimageresized = onCustomEventPublished(
    "firebase.extensions.storage-resize-images.v1.complete",
    (event) => {
      logger.info("Received image resize completed event", event);
      // For example, write resized image details into Firestore.
      return getFirestore()
          .collection("images")
          .doc(event.subject.replace("/", "_")) // original file path
          .set(event.data); // resized images paths and sizes
    });

برای هر برنامه افزودنی خاص، باری که در شی رویداد برگردانده می شود، داده هایی را ارائه می دهد که می توانید از آنها برای اجرای منطق سفارشی برای جریان برنامه خود استفاده کنید. در این مورد، این تابع از Admin SDK برای کپی کردن ابرداده های مربوط به تصویر تغییر اندازه در مجموعه ای در Cloud Firestore، به دست آوردن نام فایل از subject ارائه شده توسط رویداد، و ذخیره ابرداده از data ارائه شده توسط رویداد استفاده می کند.

یک رویداد را در یک کانال غیر پیش‌فرض مدیریت کنید

مثال بالا فرض می‌کند که رویداد تکمیل تصویر در کانال پیش‌فرض، در مکان پیش‌فرض us-central1 همانطور که در برنامه افزودنی مشخص شده است، منتشر می‌شود. در مواردی که یک رویداد سفارشی در یک کانال غیر پیش‌فرض منتشر می‌شود، باید کانال را در کد تابع خود مشخص کنید. به عنوان مثال، اگر می‌خواهید رویدادهایی را که در یک کانال غیر پیش‌فرض برای مکان us-west1 منتشر می‌شوند مدیریت کنید، باید کانال را مطابق شکل مشخص کنید:

import { onCustomEventPublished } from "firebase-functions/v2/eventarc";

export const func = onCustomEventPublished(
    {
      eventType: "firebase.extensions.storage-resize-images.v1.complete",
      channel: "locations/us-west1/channels/firebase",
      region: "us-west1",
    },
    (event) => { ... });