Escribir funciones en la nube para una extensión

Cuando creas una extensión, escribes su lógica usando Cloud Functions, de la misma manera que escribirías una función que solo se usaría en tu propio proyecto. Declaras tus funciones en el archivo extension.yaml y, cuando los usuarios instalan tu extensión, estas funciones se implementan en su proyecto.

Consulte la documentación de Cloud Functions para obtener información general sobre el uso de Cloud Functions.

Funciones Cloud de 1ª y 2ª generación

Firebase admite funciones de nube de primera y segunda generación . Sin embargo, las extensiones de Firebase actualmente tienen algunas restricciones sobre qué generación de función de nube puede usar con ciertos tipos de activadores. Por este motivo, muchas extensiones incluyen una combinación de funciones de 1.ª y 2.ª generación.

A continuación se indica la compatibilidad con la generación de funciones para cada tipo de activador.

Consideraciones Especiales

  • Algunas definiciones de funciones requieren que especifique información que también se especifica en el archivo extension.yaml . Por ejemplo, Cloud Firestore tiene un método document() que especifica el patrón de documento que se va a observar, y su declaración correspondiente en extension.yaml tiene un campo resource que especifica lo mismo.

    En estas situaciones, se utiliza la configuración especificada en el archivo extension.yaml y se ignora la configuración especificada en la definición de función.

    Es una práctica común especificar el valor configurado en la definición de función independientemente, por motivos de documentación. Los ejemplos de esta página siguen este patrón.

  • El SDK de 1.ª generación de Cloud Functions tiene un método functions.config() y un comando CLI functions:config:set que puede utilizar para trabajar con valores parametrizados en funciones de 1.ª generación. Esta técnica está obsoleta en Cloud Functions y no funcionará en absoluto en una extensión. En su lugar, utilice el módulo functions.params (recomendado) o process.env .

Usando mecanografiado

La mayor parte de la documentación para desarrollar su propia extensión describe flujos de trabajo que utilizan JavaScript para Cloud Functions para Firebase. Sin embargo, puedes escribir tus funciones usando TypeScript.

De hecho, todas las extensiones oficiales de Firebase están escritas en TypeScript. Puede revisar esas extensiones para conocer algunas de las mejores prácticas para usar TypeScript para su extensión.

Si escribe las funciones de su extensión en TypeScript, debe hacer lo siguiente antes de instalar su extensión:

  1. Compile el código fuente de las funciones de su extensión en JavaScript.

    El comando firebase ext:dev:init le permite elegir TypeScript para escribir sus funciones. El comando le proporciona una extensión instalable completa , así como un script de compilación que puede ejecutar con npm run build .

  2. En su archivo package.json , asegúrese de señalar el campo main al JavaScript generado.

  3. Si está instalando o cargando su extensión desde una fuente local, primero compile sus archivos TypeScript.

Activadores de funciones admitidas

Activadores HTTP

Una función activada por HTTP se implementa en un punto final https público y se ejecuta cuando se accede al punto final.

Consulte Llamar a funciones mediante solicitudes HTTP en la documentación de Cloud Functions para obtener información sobre cómo escribir funciones activadas por HTTP.

Definición de función (solo 1.ª generación)

import { https } from "firebase-functions/v1";

export const yourFunctionName = https.onRequest(async (req, resp) => {
  // ...
});

Declaración de recursos (extensión.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      runtime: nodejs16
      httpsTrigger: {}
  - name: anotherFunction
    type: ...

Funciones invocables

Las funciones invocables son similares a las funciones activadas por HTTP, pero implementan un protocolo que hace que sea conveniente llamarlas desde el código del lado del cliente.

Consulte Llamar a funciones desde su aplicación en la documentación de Cloud Functions para obtener información sobre el uso de funciones invocables.

Definición de función (solo 1.ª generación)

import { https } from "firebase-functions/v1";

export const yourFunctionName = https.onCall(async (data, context) => {
  // ...
});

Declaración de recursos (extensión.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      runtime: nodejs16
      httpsTrigger: {}
  - name: anotherFunction
    type: ...

Activadores de funciones programadas

Una función programada se ejecuta repetidamente según un cronograma personalizable.

Consulte Programar funciones en la documentación de Cloud Functions para obtener información sobre cómo escribir funciones programadas.

Definición de función (solo 1.ª generación)

import { pubsub } from "firebase-functions/v1";

export const yourFunctionName = pubsub.schedule("every 6 hours").onRun((context) => {
  // ...
});

Declaración de recursos (extensión.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      scheduleTrigger:
        schedule: 'every 5 minutes'
  - name: anotherFunction
    type: ...

Estos son los subcampos disponibles para scheduleTrigger :

Campo Descripción
schedule
(requerido)

La frecuencia con la que desea que se ejecute la función.

Este campo puede aceptar cadenas que utilicen cualquiera de las sintaxis (es necesario incluirlas entre comillas simples ):

timeZone
(opcional)

La zona horaria en la que se ejecutará el programa.

Si desea que los usuarios puedan configurar la programación cuando instalen su extensión, agregue un nuevo parámetro a su archivo extension.yaml y haga referencia al parámetro en la declaración de resource de su función:

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      scheduleTrigger:
        schedule: ${SCHEDULE_FREQUENCY}
  - name: anotherFunction
    type: ...

params:
  - param: SCHEDULE_FREQUENCY
    label: Schedule
    description: How often do you want to run yourFunctionName()?
    type: string
    default: 'every 5 minutes'  # Specifying a default is optional.
    required: true

Activadores de cola de tareas

Una función de cola de tareas se activa en los eventos del ciclo de vida de su extensión o cuando se agrega manualmente a la cola de tareas de su extensión mediante el método TaskQueue.enqueue() del SDK de administrador.

Consulte Manejar los eventos del ciclo de vida de su extensión para obtener información sobre cómo escribir funciones que manejan eventos del ciclo de vida.

Consulte Poner en cola funciones con Cloud Tasks en la documentación de Cloud Functions para obtener información sobre cómo escribir funciones de cola de tareas.

Definición de función (solo 1.ª generación)

import { tasks } from "firebase-functions/v1";

export const yourFunctionName = tasks.taskQueue().onDispatch(async (data, context) => {
  // ...
});

Declaración de recursos (extensión.yaml)

resources:
  - name: myTaskFunction
    type: firebaseextensions.v1beta.function
    description: >-
      Perform a task when triggered by a lifecycle event
    properties:
      taskQueueTrigger: {}

Establezca la propiedad taskQueueTrigger en {} o en un mapa de opciones que ajuste los límites de velocidad y el comportamiento de reintento de la cola de tareas (consulte Ajuste de la cola de tareas ).

Si desea activar su función en los eventos del ciclo de vida de su extensión, agregue registros lifecycleEvents con el nombre de la función y un mensaje de procesamiento opcional, que se mostrará en Firebase console cuando comience el procesamiento.

lifecycleEvents:
  onInstall:
    function: myTaskFunction
    processingMessage: Resizing your existing images
  onUpdate:
    function: myOtherTaskFunction
    processingMessage: Setting up your extension
  onConfigure:
    function: myOtherTaskFunction
    processingMessage: Setting up your extension

Analítica

Una función activada por Analytics se ejecuta cuando se registra un evento de Analytics específico.

Consulte los activadores de Google Analytics en la documentación de Cloud Functions para obtener información sobre cómo escribir funciones activadas por Analytics.

Definición de función (solo 1.ª generación)

import { analytics } from "firebase-functions/v1";

export const yourFunctionName = analytics.event("event_name").onLog((event, context) => {
  // ...
});

Declaración de recursos (extensión.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: providers/google.firebase.analytics/eventTypes/event.log
        resource: projects/${PROJECT_ID}/events/ga_event
  - name: anotherFunction
    type: ...

Si desea que los usuarios puedan configurar el evento de Analytics para escucharlo cuando instalen su extensión, agregue un nuevo parámetro a su archivo extension.yaml y haga referencia al parámetro en la declaración de resource de su función:

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: providers/google.firebase.analytics/eventTypes/event.log
        resource: projects/${PROJECT_ID}/events/${EVENT_NAME}
  - name: anotherFunction
    type: ...

params:
  - param: EVENT_NAME
    label: Analytics event
    description: What event do you want to respond to?
    type: string
    default: ga_event  # Specifying a default is optional.
    required: true

Autenticación

Una función activada por autenticación se ejecuta cuando se crea o elimina un usuario.

Consulte Activadores de autenticación de Firebase en la documentación de Cloud Functions para obtener información sobre cómo escribir funciones activadas por autenticación.

Definición de función (solo 1.ª generación)

import { auth } from "firebase-functions/v1";

export const yourFunctionName = auth.user().onCreate((user, context) => {
  // ...
});

export const yourFunctionName2 = auth.user().onDelete((user, context) => {
  // ...
});

Declaración de recursos (extensión.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: providers/firebase.auth/eventTypes/user.create
        resource: projects/${PROJECT_ID}
  - name: anotherFunction
    type: ...

La siguiente tabla muestra cómo especificar cada uno de los tipos de eventos de autenticación admitidos:

Desencadenador de eventos de Cloud Functions eventType Descripción
onCreate() providers/firebase.auth/eventTypes/user.create Nuevo usuario creado
onDelete() providers/firebase.auth/eventTypes/user.delete Usuario eliminado

Tienda de fuego en la nube

Una función activada por Cloud Firestore se ejecuta cuando se crea, actualiza o elimina un documento.

Consulta los activadores de Cloud Firestore en la documentación de Cloud Functions para obtener información sobre cómo escribir funciones activadas por Firestore.

Definición de función (solo 1.ª generación)

import { firestore } from "firebase-functions/v1";

export const yourFunctionName = firestore.document("collection/{doc_id}")
  .onCreate((snapshot, context) => {
    // ...
  });

export const yourFunctionName2 = firestore.document("collection/{doc_id}")
  .onUpdate((change, context) => {
    // ...
  });

export const yourFunctionName3 = firestore.document("collection/{doc_id}")
  .onDelete((snapshot, context) => {
    // ...
  });

export const yourFunctionName4 = firestore.document("collection/{doc_id}")
  .onWrite((change, context) => {
    // onWrite triggers on creation, update, and deletion.
    // ...
  });

Declaración de recursos (extensión.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: providers/cloud.firestore/eventTypes/document.write
        resource: projects/${PROJECT_ID}/databases/(default)/documents/collection/{documentID}
  - name: anotherFunction
    type: ...

La siguiente tabla muestra cómo especificar cada uno de los tipos de eventos de Cloud Firestore admitidos:

Desencadenador de eventos de Cloud Functions eventType Descripción
onCreate() providers/cloud.firestore/eventTypes/document.create Nuevo documento creado
onDelete() providers/cloud.firestore/eventTypes/document.delete Documento eliminado
onUpdate() providers/cloud.firestore/eventTypes/document.update Documento actualizado
onWrite() providers/cloud.firestore/eventTypes/document.write Documento creado, eliminado o actualizado

Si desea que los usuarios puedan configurar la ruta del documento cuando instalen su extensión, agregue un nuevo parámetro a su archivo extension.yaml y haga referencia al parámetro en la declaración de resource de su función:

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: providers/cloud.firestore/eventTypes/document.write
        resource: projects/${PROJECT_ID}/databases/(default)/documents/${YOUR_DOCUMENT_PATH}
  - name: anotherFunction
    type: ...

params:
  - param: YOUR_DOCUMENT_PATH
    label: Cloud Firestore path
    description: Where do you want to watch for changes?
    type: string
    default: path/to/{documentID}  # Specifying a default is optional.
    required: true

Pub/Sub

Una función activada por Pub/Sub se ejecuta cuando se publica un mensaje en un tema específico.

Consulte Activadores de Pub/Sub en la documentación de Cloud Functions para obtener información sobre cómo escribir funciones activadas por Pub/Sub.

Definición de función (solo 1.ª generación)

import { pubsub } from "firebase-functions/v1";

export const yourFunctionName = pubsub.topic("topic_name").onPublish((message, context) => {
  // ...
});

Declaración de recursos (extensión.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: google.pubsub.topic.publish
        resource: projects/${PROJECT_ID}/topics/topic-name
  - name: anotherFunction
    type: ...

Si desea que los usuarios puedan configurar el tema Pub/Sub cuando instalen su extensión, agregue un nuevo parámetro a su archivo extension.yaml y haga referencia al parámetro en la declaración de resource de su función:

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: google.pubsub.topic.publish
        resource: projects/${PROJECT_ID}/topics/${PUBSUB_TOPIC}
  - name: anotherFunction
    type: ...

params:
  - param: PUBSUB_TOPIC
    label: Pub/Sub topic
    description: Which Pub/Sub topic do you want to watch for messages?
    type: string
    default: topic-name  # Specifying a default is optional.
    required: true

Base de datos en tiempo real

Una función activada por Realtime Database se ejecuta cuando se crea, actualiza o elimina una ruta que coincide con un patrón específico.

Consulte Activadores de bases de datos en tiempo real en la documentación de Cloud Functions para obtener información sobre cómo escribir funciones activadas por RTDB.

Definición de función (solo 1.ª generación)

import { database } from "firebase-functions/v1";

export const yourFunctionName = database.ref("path/to/{item}")
  .onCreate((snapshot, context) => {
    // ...
  });

export const yourFunctionName2 = database.ref("path/to/{item}")
  .onUpdate((change, context) => {
    // ...
  });

export const yourFunctionName3 = database.ref("path/to/{item}")
  .onDelete((snapshot, context) => {
    // ...
  });

export const yourFunctionName4 = database.ref("path/to/{item}")
  .onWrite((change, context) => {
    // onWrite triggers on creation, update, and deletion.
    // ...
  });

Declaración de recursos (extensión.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: providers/google.firebase.database/eventTypes/ref.create
        # DATABASE_INSTANCE (project's default instance) is an auto-populated
        # parameter value. You can also specify an instance.
        resource: projects/_/instances/${DATABASE_INSTANCE}/refs/path/to/{itemId}
  - name: anotherFunction
    type: ...

La siguiente tabla muestra cómo especificar cada uno de los tipos de eventos de Cloud Firestore admitidos:

Desencadenador de eventos de Cloud Functions eventType Descripción
onCreate() providers/google.firebase.database/eventTypes/ref.create Datos creados
onDelete() providers/google.firebase.database/eventTypes/ref.delete Datos eliminados
onUpdate() providers/google.firebase.database/eventTypes/ref.update Datos actualizados
onWrite() providers/google.firebase.database/eventTypes/ref.write Datos creados, eliminados o actualizados

Si desea que los usuarios puedan configurar la ruta para observar cuando instalen su extensión, agregue un nuevo parámetro a su archivo extension.yaml y haga referencia al parámetro en la declaración de resource de su función:

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: providers/google.firebase.database/eventTypes/ref.create
        # DATABASE_INSTANCE (project's default instance) is an auto-populated
        # parameter value. You can also specify an instance.
        resource: projects/_/instances/${DATABASE_INSTANCE}/refs/${DB_PATH}
  - name: anotherFunction
    type: ...

params:
  - param: DB_PATH
    label: Realtime Database path
    description: Where do you want to watch for changes?
    type: string
    default: path/to/{itemId}  # Specifying a default is optional.
    required: true

Configuración remota

Una función activada por Remote Config se ejecuta cuando se actualiza la plantilla de parámetros de un proyecto.

Consulte Activadores de Remote Config en la documentación de Cloud Functions para obtener información sobre cómo escribir funciones activadas por Remote Config.

Definición de función (solo 1.ª generación)

import { remoteConfig } from "firebase-functions/v1";

export const yourFunctionName = remoteConfig.onUpdate((version, context) => {
  // ...
});

Declaración de recursos (extensión.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: google.firebase.remoteconfig.update
        resource: projects/${PROJECT_ID}
  - name: anotherFunction
    type: ...

Almacenamiento en la nube

Una función activada por Cloud Storage se ejecuta cuando se crea, archiva o elimina un objeto, o cuando cambian sus metadatos.

Consulta los activadores de Cloud Storage en la documentación de Cloud Functions para obtener información sobre cómo escribir funciones activadas por Storage.

Definición de función (solo 1.ª generación)

import { storage } from "firebase-functions/v1";

export const yourFunctionName = storage.object().onFinalize((object, context) => {
  // ...
});

export const yourFunctionName2 = storage.object().onMetadataUpdate((object, context) => {
  // ...
});

export const yourFunctionName3 = storage.object().onArchive((object, context) => {
  // ...
});

export const yourFunctionName4 = storage.object().onDelete((object, context) => {
  // ...
});

Declaración de recursos (extensión.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: google.storage.object.finalize
        # STORAGE_BUCKET (project's default bucket) is an auto-populated
        # parameter. You can also specify a bucket.
        resource: projects/_/buckets/${STORAGE_BUCKET}
  - name: anotherFunction
    type: ...

La siguiente tabla muestra cómo especificar cada uno de los tipos de eventos de Cloud Storage admitidos:

Desencadenador de eventos de Cloud Functions eventType Descripción
onFinalize() google.storage.object.finalize Objeto creado
onMetadataUpdate() google.storage.object.metadataUpdate Metadatos del objeto actualizados.
onArchive() google.storage.object.archive El objeto fue archivado
onDelete() google.storage.object.delete Objeto eliminado

Si desea que los usuarios puedan configurar el depósito de almacenamiento cuando instalen su extensión, agregue un nuevo parámetro a su archivo extension.yaml y haga referencia al parámetro en la declaración de resource de su función:

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: google.storage.object.finalize
        resource: projects/_/buckets/${YOUR_BUCKET}
  - name: anotherFunction
    type: ...

params:
  - param: YOUR_BUCKET
    label: Cloud Storage bucket
    description: Which bucket do you want to watch for changes?
    type: selectResource
    resourceType: storage.googleapis.com/Bucket
    default: ${STORAGE_BUCKET}  # Specifying a default is optional.
    required: true

Laboratorio de pruebas

Una función activada por Test Lab se ejecuta cuando una matriz de prueba finaliza sus pruebas.

Consulta los activadores de Firebase Test Lab en la documentación de Cloud Functions para obtener información sobre cómo escribir funciones activadas por Test Lab.

Definición de función (solo 1.ª generación)

import { testLab } from "firebase-functions/v1";

export const yourFunctionName = testLab.testMatrix().onComplete((matrix, context) => {
  // ...
});

Declaración de recursos (extensión.yaml)

resources:
  - name: yourFunctionName
    type: firebaseextensions.v1beta.function
    properties:
      eventTrigger:
        eventType: google.testing.testMatrix.complete
        resource: projects/${PROJECT_ID}/testMatrices/{matrixId}
  - name: anotherFunction
    type: ...

Activadores de alerta de Crashlytics

Se ejecuta una función activada por Crashlytics cuando Crashlytics publica una alerta.

Consulte Activadores de alertas de Firebase en la documentación de Cloud Functions para obtener información sobre cómo escribir funciones activadas por alertas.

Definición de función (solo 2.ª generación)

import {
  onNewFatalIssuePublished,
  onNewNonfatalIssuePublished,
  onNewAnrIssuePublished,
  onRegressionAlertPublished,
  onVelocityAlertPublished,
  onStabilityDigestPublished,
} from "firebase-functions/v2/alerts/crashlytics";

export const yourFunctionName = onNewFatalIssuePublished((event) => {
  // ...
});

export const yourFunctionName2 = onNewNonfatalIssuePublished((event) => {
  // ...
});

export const yourFunctionName3 = onNewAnrIssuePublished((event) => {
  // ...
});

export const yourFunctionName4 = onRegressionAlertPublished((event) => {
  // ...
});

export const yourFunctionName5 = onVelocityAlertPublished((event) => {
  // ...
});

export const yourFunctionName6 = onStabilityDigestPublished((event) => {
  // ...
});

Declaración de recursos (extensión.yaml)

apis:
  - apiName: eventarc.googleapis.com
    reason: Powers all events and triggers
  - apiName: run.googleapis.com
    reason: Powers 2nd-gen functions

resources:
  - name: yourfunctionname
    type: firebaseextensions.v1beta.v2function
    properties:
      buildConfig:
        runtime: nodejs16
      serviceConfig:
        availableMemory: 512M
      eventTrigger:
        eventType: google.firebase.firebasealerts.alerts.v1.published
        triggerRegion: global
        eventFilters:
          - attribute: alerttype
            value: crashlytics.newFatalIssue
  - name: anotherFunction
    type: ...

Puede utilizar los siguientes valores para alerttype

  • crashlytics.newFatalIssue
  • crashlytics.newNonfatalIssue
  • crashlytics.regression
  • crashlytics.stabilityDigest
  • crashlytics.velocity
  • crashlytics.newAnrIssue

Activadores de alerta de supervisión del rendimiento

Se ejecuta una función activada por Performance Monitoring cuando Performance Monitoring publica una alerta.

Consulte Activadores de alertas de Firebase en la documentación de Cloud Functions para obtener información sobre cómo escribir funciones activadas por alertas.

Definición de función (solo 2.ª generación)

import { onThresholdAlertPublished } from "firebase-functions/v2/alerts/performance";

export const yourFunctionName = onThresholdAlertPublished((event) => {
  // ...
});

Declaración de recursos (extensión.yaml)

apis:
  - apiName: eventarc.googleapis.com
    reason: Powers all events and triggers
  - apiName: run.googleapis.com
    reason: Powers 2nd-gen functions

resources:
  - name: yourfunctionname
    type: firebaseextensions.v1beta.v2function
    properties:
      buildConfig:
        runtime: nodejs16
      serviceConfig:
        availableMemory: 512M
      eventTrigger:
        eventType: google.firebase.firebasealerts.alerts.v1.published
        triggerRegion: global
        eventFilters:
          - attribute: alerttype
            value: performance.threshold
  - name: anotherFunction
    type: ...

Activadores de alerta de distribución de aplicaciones

Se ejecuta una función activada por App Distribution cuando App Distribution publica una alerta.

Consulte Activadores de alertas de Firebase en la documentación de Cloud Functions para obtener información sobre cómo escribir funciones activadas por alertas.

Definición de función (solo 2.ª generación)

import {
  onNewTesterIosDevicePublished,
  onInAppFeedbackPublished
} from "firebase-functions/v2/alerts/appDistribution";

export const yourFunctionName = onNewTesterIosDevicePublished((event) => {
  // ...
});

export const yourFunctionName2 = onInAppFeedbackPublished((event) => {
  // ...
});

Declaración de recursos (extensión.yaml)

apis:
  - apiName: eventarc.googleapis.com
    reason: Powers all events and triggers
  - apiName: run.googleapis.com
    reason: Powers 2nd-gen functions

resources:
  - name: yourfunctionname
    type: firebaseextensions.v1beta.v2function
    properties:
      buildConfig:
        runtime: nodejs16
      serviceConfig:
        availableMemory: 512M
      eventTrigger:
        eventType: google.firebase.firebasealerts.alerts.v1.published
        triggerRegion: global
        eventFilters:
          - attribute: alerttype
            value: appDistribution.inAppFeedback
  - name: anotherFunction
    type: ...

Puede utilizar los siguientes valores para alerttype

  • appDistribution.newTesterIosDevice
  • appDistribution.inAppFeedback

Activadores de eventos personalizados (Eventarc)

Una función activada por Eventarc se ejecuta cuando un tipo de evento específico se publica en un canal específico.

Consulte Crear y manejar activadores de eventos personalizados en la documentación de Cloud Functions para obtener información sobre cómo escribir funciones activadas por Eventarc.

También puede publicar eventos desde sus extensiones para brindarles a los usuarios una forma de insertar lógica personalizada en su extensión. Consulte Usar lógica personalizada proporcionada por el desarrollador en una extensión .

Definición de función (solo 2.ª generación)

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

export const yourFunctionName = onCustomEventPublished((event) => {
  // ...
});

Declaración de recursos (extensión.yaml)

apis:
  - apiName: eventarc.googleapis.com
    reason: Powers all events and triggers
  - apiName: run.googleapis.com
    reason: Powers 2nd-gen functions

resources:
  - name: yourfunctionname
    type: firebaseextensions.v1beta.v2function
    properties:
      # LOCATION is a user-configured parameter value specified by the user
      # during installation.
      location: ${param:LOCATION}
      buildConfig:
        runtime: nodejs16
      serviceConfig:
        availableMemory: 512M
        timeoutSeconds: 60
      eventTrigger:
        eventType: firebase.extensions.storage-resize-images.v1.complete
        channel: projects/${param:PROJECT_ID}/locations/us-central1/channels/firebase
  - name: anotherFunction
    type: ...

El canal ya debe existir cuando se instala su extensión. Por ejemplo, si depende de eventos personalizados de otra extensión que crea el canal, indique a sus usuarios que instalen esa extensión primero.

El ejemplo anterior crearía un activador de evento personalizado para el canal de Firebase "predeterminado" en la región us-central1 . Puede personalizar el nombre del canal y la región mediante parámetros. Por ejemplo:


params:
  - param: EVENTARC_CHANNEL_NAME
    label: Eventarc channel name
    description: What is the name of the Eventarc channel.
    default: firebase
    type: string
    required: true

resources:
  - name: yourfunctionname
    type: firebaseextensions.v1beta.v2function
    properties:
      location: ${param:LOCATION}
      eventTrigger:
        eventType: firebase.extensions.storage-resize-images.v1.complete
        channel: projects/${param:PROJECT_ID}/locations/${param:LOCATION}/channels/${param:EVENTARC_CHANNEL_NAME}