Una extensión de Firebase realiza una tarea o un conjunto de tareas específicos en respuesta a solicitudes HTTP o a eventos de activación de otros productos de Firebase y Google, como Firebase Cloud Messaging, Cloud Firestore o Pub/Sub.
Puedes crear tu propia extensión para uso personal o para compartirla con el mundo en Firebase Extensions Hub. Por ejemplo, tu extensión puede realizar una tarea específica que tu app necesita con regularidad o puede facilitar el acceso a una de las APIs de tu empresa. Después de crear tu extensión, puedes compartirla con otras personas. Esos usuarios pueden instalar y configurar la extensión para usarla en sus propios proyectos de Firebase.
Estructura de una extensión
En general, las extensiones tienen tres componentes principales:
- Código de Cloud Functions, en JavaScript o TypeScript
- Metadatos que describen tu extensión
- Documentación para ayudar a los usuarios a configurar y usar la extensión
Para desarrollar una extensión, ensambla 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 el 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 activados por los servicios de Firebase y Google. - El archivo
extension.yaml
contiene metadatos sobre tu extensión, como sus activadores y roles de acceso de IAM, así como cualquier parámetro que desees que el usuario pueda configurar. - Los archivos
PREINSTALL
,POSTINSTALL
yCHANGELOG
son la documentación mínima que debe tener tu extensión. También ayudan a los usuarios a conocer la función de la extensión, cómo usarla y las actualizaciones que implementaste. También debes proporcionar un ícono para ayudar a los usuarios a reconocer tu extensión. Firebase console, Firebase CLI y Extensions Hub muestran el contenido de estos archivos cuando los usuarios exploran, instalan y administran tu extensión.
Después de crear tu extensión, puedes usar Firebase CLI para instalarla en un proyecto o publicarla en Extensions Hub, donde cualquier persona puede descubrirla y, luego, instalarla en sus proyectos.
¿Con qué productos puede interactuar mi extensión?
Dado que una extensión de Firebase trabaja con Cloud Functions, puedes plantearte realizar posibles integraciones de dos maneras: ¿Qué productos pueden activar las funciones de mi extensión? y ¿Con qué productos pueden interactuar las funciones de mi extensión luego de que se active?
Activadores de funciones compatibles
Activadores manuales
En primer lugar, puedes activar una función de forma manual. Las Extensiones de Firebase y las Cloud Functions admiten dos formas de activar manualmente las funciones:
- Activadores de HTTP: Se implementa una función en un extremo HTTP.
- Funciones que admiten llamadas: Se llama a tus funciones de Cloud Functions directamente desde un código de cliente web, iOS o Android mediante los SDK de cliente de Firebase.
Mediante la exposición de extremos HTTP de tu extensión, esta se puede integrar de manera potencial a cualquier servicio web que admita webhooks. Con las funciones que admiten llamadas, los usuarios que instalan tu extensión pueden usar los SDK de Firebase como biblioteca cliente para acceder a la API que implementa tu extensión.
Activadores del servicio de Firebase
La mayoría de los productos de Firebase emiten eventos que pueden activar funciones de Cloud Functions de una extensión.
- Analytics: Activa funciones cuando Analytics registra un evento.
- App Distribution: Activa funciones cuando App Distribution activa una alerta.
- Authentication: Activa funciones cuando los usuarios crean y borran cuentas.
- Cloud Firestore: Activa funciones cuando se crean, actualizan o borran páginas.
- Cloud Storage: Activa funciones cuando se suben, archivan o borran objetos de los buckets.
- Crashlytics: Activa funciones cuando Crashlytics activa una alerta.
- Performance Monitoring: Activa funciones cuando Performance Monitoring activa una alerta.
- Realtime Database: Activa funciones cuando se crean, actualizan o borran datos.
- Remote Config: Activa funciones cuando se actualiza un parámetro.
- Test Lab: Activa funciones cuando Test Lab activa una alerta.
Activadores de servicios de Google Cloud
Una extensión también puede incluir funciones que activen varios servicios de Google Cloud que no son de Firebase:
- Cloud Pub/Sub: Es una extensión puede incluir funciones que se activan cuando los eventos se publican en un tema configurable de Pub/Sub.
- Cloud Scheduler: Es una extensión que puede incluir funciones que se ejecutan en un programa establecido.
- Cloud Tasks: Es una extensión que puede incluir funciones que se pueden poner en una cola con Cloud Tasks. Extensiones de Firebase usa esta función para que, como autor de la extensión, puedas escribir funciones que respondan a los eventos del “ciclo de vida” de una extensión: instalarse en un proyecto por primera vez, actualizarse a una versión nueva y su reconfiguración.
- Eventarc: Una extensión puede incluir funciones que se activan cuando los eventos se publican en un canal configurable de Eventarc. Por el contrario, una extensión puede publicar sus propios eventos en un canal de Eventarc para permitir que los usuarios definan sus propias funciones que se activan a partir de eventos de una extensión.
Compatible con las funciones
Una vez que se activa la Cloud Function de una extensión, el rango de integraciones posibles suele ser abierto. Estos son algunos puntos destacados sobre lo que puedes hacer desde una función de Cloud Function:
- Leer, escribir o, de otro modo, interactuar con cualquier servicio de Firebase o Google Cloud que use un rol de IAM admitido
- Trabajar con cualquier servicio de terceros que proporcione una API web
- Trabajar con tus servicios personalizados si proporcionas una API web
- Ejecutar la mayoría de las bibliotecas de JavaScript, incluidas las de TensorFlow.js, Express.js, etcétera
Cómo crear una extensión
En el instructivo de primeros pasos, se explica el proceso de compilación, prueba y publicación de una extensión completa, y es la forma recomendada de aprender a crear una.
Una vez que hayas revisado la guía de introducción, puedes consultar las guías de temas individuales, en las que se explican cada una de las tareas involucradas en la compilación de tu propia extensión:
- Escribe funciones para una extensión
- Usa parámetros en una extensión
- Configura el acceso adecuado para una extensión
- Responde a eventos del ciclo de vida de una extensión
- Agrega hooks de usuario a una extensión
- Crea la documentación para el usuario de la extensión
- Publica una extensión en Extensions Hub
- Referencia completa de extension.yaml