Descripción general del editor de extensiones

Una extensión de Firebase realiza una tarea específica o un conjunto de tareas en respuesta a solicitudes HTTP o activando eventos de otros productos de Firebase y Google, como Firebase Cloud Messaging, Cloud Firestore o Pub/Sub.

Puede crear su propia extensión para uso personal o para compartir con el mundo en Firebase Extensions Hub. Por ejemplo, su extensión puede realizar una tarea específica que su aplicación necesita regularmente o puede facilitar el acceso a una de las API de su empresa. Después de crear su extensión, puede compartirla con otros. Esos usuarios pueden instalar y configurar la extensión para usarla en sus propios proyectos de Firebase.

Estructura de una extensión

Puedes pensar que una extensión tiene tres componentes principales:

  • Código de Cloud Functions, en JavaScript o TypeScript
  • Metadatos que describen su extensión
  • Documentación para ayudar a sus usuarios a configurar y usar su extensión

Para desarrollar una extensión, debe ensamblar estos componentes en la siguiente estructura:

example-extension
├── functions
│   ├── integration-tests
│   │   ├── extensions
│   │   │   └── example-extension.env
│   │   ├── firebase.json
│   │   └── integration-test.spec.js
│   ├── index.js
│   └── package.json
├── README.md
├── PREINSTALL.md
├── POSTINSTALL.md
├── CHANGELOG.md
├── icon.png
└── extension.yaml
  • El directorio functions contiene su código de Cloud Functions en JavaScript o TypeScript. Este es el código que realiza las tareas de la extensión en respuesta a eventos desencadenados por los servicios de Firebase y Google.
  • El archivo extension.yaml contiene metadatos sobre su extensión, como sus activadores y roles de acceso de IAM, así como cualquier parámetro que desee que el usuario pueda configurar.
  • Los archivos PREINSTALL , POSTINSTALL y CHANGELOG son la documentación mínima que debe tener tu extensión. Estos archivos ayudan a sus usuarios a saber qué hace su extensión, cómo usarla y qué actualizaciones ha realizado. También debe proporcionar un ícono para ayudar a los usuarios a reconocer su extensión. Firebase console, Firebase CLI y Extensions Hub muestran el contenido de estos archivos cuando los usuarios exploran, instalan y administran su extensión.

Una vez que haya creado su extensión, puede usar Firebase CLI para instalarla en un proyecto o publicarla en Extensions Hub, donde cualquiera puede descubrirla e instalarla en sus proyectos.

¿Con qué productos puede interactuar mi extensión?

Debido a que una extensión de Firebase hace su trabajo usando Cloud Functions, puedes pensar en la cuestión de las posibles integraciones de dos maneras: ¿Qué productos pueden activar las funciones de mi extensión? y Una vez activadas, ¿con qué productos pueden interactuar las funciones de mi extensión?

Activadores de funciones admitidas

Disparadores manuales

En primer lugar, puedes activar manualmente una función. Firebase Extensions y Cloud Functions admiten dos formas de activar funciones manualmente:

  • Desencadenadores HTTP: implementar una función en un punto final HTTP
  • Funciones invocables: llame a sus funciones en la nube directamente desde su código de cliente web, iOS o Android, utilizando los SDK del cliente de Firebase.

Al exponer los puntos finales HTTP de su extensión, su extensión puede potencialmente integrarse con cualquier servicio web que admita webhooks. Con funciones invocables, los usuarios que instalan su extensión pueden usar los SDK de Firebase como biblioteca cliente para acceder a la API que implementa su extensión.

Activadores del servicio Firebase

La mayoría de los productos de Firebase emiten eventos que pueden activar las Cloud Functions de una extensión.

  • Analytics: activa funciones cuando Analytics registra un evento
  • Distribución de aplicaciones: activa funciones cuando la Distribución de aplicaciones activa una alerta
  • Autenticación: activa funciones cuando los usuarios crean y eliminan cuentas
  • Cloud Firestore: activa funciones cuando se crean, actualizan o eliminan páginas
  • Almacenamiento en la nube : activa funciones cuando los objetos se cargan, archivan o eliminan de depósitos
  • Crashlytics: activa funciones cuando Crashlytics activa una alerta
  • Supervisión del rendimiento: activa funciones cuando la supervisión del rendimiento activa una alerta
  • Base de datos en tiempo real: activa funciones cuando se crean, actualizan o eliminan datos
  • Remote Config: activa funciones cuando se actualiza un parámetro
  • Test Lab: activa funciones cuando Test Lab activa una alerta

Activadores del servicio Google Cloud

Una extensión también puede incluir funciones que activan varios servicios de Google Cloud que no son de Firebase:

  • Cloud Pub/Sub : una extensión puede incluir funciones que se activan cuando los eventos se publican en un tema de Pub/Sub configurable.
  • Cloud Scheduler : una extensión puede incluir funciones que se ejecutan en un horario establecido
  • Cloud Tasks : una extensión puede incluir funciones que se pueden poner en cola mediante Cloud Tasks. Firebase Extensions usa esta capacidad para permitirle, como autor de una extensión, escribir funciones que respondan a los eventos del "ciclo de vida" de una extensión: instalación en un proyecto por primera vez, actualización a una nueva versión y reconfiguración.
  • Eventarc : una extensión puede incluir funciones que se activan cuando los eventos se publican en un canal de Eventarc configurable; por el contrario, una extensión puede publicar sus propios eventos en un canal de Eventarc para permitir a los usuarios definir sus propias funciones que se activan a partir de los eventos de una extensión .

Soportado desde funciones

Una vez que se ha activado la función de nube de una extensión, el rango de posibles integraciones generalmente es abierto. A continuación, se muestran algunos aspectos destacados de lo que puede hacer desde una función en la nube:

  • Lea, escriba e interactúe de otro modo con cualquier servicio de Firebase o Google Cloud que utilice una función de IAM compatible .
  • Trabaje con cualquier servicio de terceros que proporcione una API web.
  • Trabaje con sus servicios personalizados si proporciona una API web.
  • Ejecute la mayoría de las bibliotecas de JavaScript, incluidas TensorFlow.js , Express.js, etc.

Cómo construir una extensión

El tutorial de introducción lo guía a través del proceso de creación, prueba y publicación de una extensión completa, y es la forma recomendada de aprender a crear una.

Empezar

Una vez que haya leído la guía de introducción una vez, puede consultar las guías de temas individuales, que explican cada una de las tareas involucradas en la creación de su propia extensión: