ส่วนขยาย Firebase จะทำงานเฉพาะอย่างหรือชุดงานเพื่อตอบสนองต่อ คำขอ HTTP หรือเหตุการณ์ที่ทริกเกอร์จากผลิตภัณฑ์อื่นๆ ของ Firebase และ Google เช่น Firebase Cloud Messaging, Cloud Firestore หรือ Pub/Sub
คุณสามารถสร้างส่วนขยายของคุณเองเพื่อใช้ส่วนตัวหรือแชร์กับผู้คนทั่วโลกใน ฮับส่วนขยาย Firebase ตัวอย่างเช่น ส่วนขยายสามารถทำงานเฉพาะ อย่างที่แอปของคุณต้องใช้เป็นประจำ หรือช่วยให้เข้าถึง API ของบริษัท ได้ง่ายขึ้น หลังจากสร้างส่วนขยายแล้ว คุณจะแชร์ส่วนขยายกับผู้อื่นได้ ผู้ใช้เหล่านั้นจะติดตั้งและกำหนดค่าส่วนขยายเพื่อใช้ในโปรเจ็กต์ Firebase ของตนเองได้
โครงสร้างของส่วนขยาย
คุณอาจคิดว่าส่วนขยายมีองค์ประกอบหลัก 3 อย่างดังนี้
- โค้ด Cloud Functions ใน JavaScript หรือ TypeScript
 - ข้อมูลเมตาที่อธิบายส่วนขยาย
 - เอกสารประกอบที่จะช่วยผู้ใช้กำหนดค่าและใช้ส่วนขยายของคุณ
 
หากต้องการพัฒนาส่วนขยาย คุณต้องประกอบคอมโพเนนต์เหล่านี้เป็นโครงสร้างต่อไปนี้
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
- ไดเรกทอรี 
functionsมีโค้ด Cloud Functions ใน JavaScript หรือ TypeScript นี่คือโค้ดที่ทํางานของส่วนขยายเพื่อตอบสนองต่อเหตุการณ์ที่ทริกเกอร์โดย Firebase และบริการของ Google extension.yamlไฟล์นี้มีข้อมูลเมตาเกี่ยวกับส่วนขยาย เช่น ทริกเกอร์และบทบาทการเข้าถึง IAM รวมถึงพารามิเตอร์ที่คุณต้องการให้ผู้ใช้กำหนดค่าได้- ไฟล์ 
PREINSTALL,POSTINSTALLและCHANGELOGคือเอกสารขั้นต่ำที่ส่วนขยายของคุณต้องมี ไฟล์เหล่านี้ช่วยให้ผู้ใช้ทราบ สิ่งที่ส่วนขยายของคุณทำ วิธีใช้ และการอัปเดตที่คุณทำ นอกจากนี้ คุณควรระบุไอคอนเพื่อช่วยให้ผู้ใช้จดจำส่วนขยายของคุณได้ คอนโซล Firebase, Firebase CLI และฮับส่วนขยายจะแสดงเนื้อหาของไฟล์เหล่านี้เมื่อผู้ใช้สำรวจ ติดตั้ง และจัดการส่วนขยาย 
หลังจากสร้างส่วนขยายแล้ว คุณจะใช้ Firebase CLI เพื่อติดตั้งส่วนขยายในโปรเจ็กต์หรือเผยแพร่ไปยังฮับส่วนขยายได้ ซึ่งทุกคนจะค้นพบและติดตั้งส่วนขยายในโปรเจ็กต์ของตนได้
ส่วนขยายของฉันโต้ตอบกับผลิตภัณฑ์ใดได้บ้าง
เนื่องจากส่วนขยาย Firebase ทำงานโดยใช้ Cloud Functions คุณจึงพิจารณาคำถามเกี่ยวกับการผสานรวมที่เป็นไปได้ได้ 2 วิธี ได้แก่ ผลิตภัณฑ์ใดบ้างที่เรียกใช้ฟังก์ชันของส่วนขยายได้ และเมื่อมีการเรียกใช้แล้ว ฟังก์ชันของส่วนขยายจะโต้ตอบกับผลิตภัณฑ์ใดได้บ้าง
ทริกเกอร์ฟังก์ชันที่รองรับ
ทริกเกอร์ด้วยตนเอง
ก่อนอื่น คุณสามารถเรียกใช้ฟังก์ชันด้วยตนเองได้ ส่วนขยาย Firebase และ Cloud Functions รองรับ 2 วิธีในการทริกเกอร์ฟังก์ชันด้วยตนเอง ดังนี้
- ทริกเกอร์ HTTP: ทำให้ฟังก์ชันใช้งานได้ที่ปลายทาง HTTP
 - ฟังก์ชันที่เรียกใช้ได้: เรียกใช้ Cloud Functions โดยตรงจากโค้ดไคลเอ็นต์ iOS, Android หรือเว็บโดยใช้ Firebase Client SDK
 
การเปิดเผยปลายทาง HTTP จากส่วนขยายจะช่วยให้ส่วนขยายของคุณอาจผสานรวมกับบริการเว็บที่รองรับ Webhook ได้ ฟังก์ชันที่เรียกใช้ได้ช่วยให้ผู้ใช้ที่ติดตั้งส่วนขยายสามารถใช้ Firebase SDK เป็นไลบรารีไคลเอ็นต์ เพื่อเข้าถึง API ที่ส่วนขยายของคุณใช้ได้
ทริกเกอร์บริการ Firebase
ผลิตภัณฑ์ Firebase ส่วนใหญ่จะปล่อยเหตุการณ์ที่ทริกเกอร์ Cloud Functions ของส่วนขยายได้
- Analytics: เรียกใช้ฟังก์ชันเมื่อ Analytics บันทึกเหตุการณ์
 - App Distribution: เรียกใช้ฟังก์ชันเมื่อ App Distribution เรียกใช้การแจ้งเตือน
 - การตรวจสอบสิทธิ์: เรียกใช้ฟังก์ชันเมื่อผู้ใช้สร้างและลบบัญชี
 - Cloud Firestore: เรียกใช้ฟังก์ชันเมื่อมีการสร้าง อัปเดต หรือลบหน้าเว็บ
 - Cloud Storage: ทริกเกอร์ฟังก์ชันเมื่อมีการอัปโหลด เก็บถาวร หรือ ลบออบเจ็กต์จากที่เก็บข้อมูล
 - Crashlytics: ทริกเกอร์ฟังก์ชันเมื่อ Crashlytics ทริกเกอร์การแจ้งเตือน
 - การตรวจสอบประสิทธิภาพ: เรียกใช้ฟังก์ชันเมื่อการตรวจสอบประสิทธิภาพ ทริกเกอร์การแจ้งเตือน
 - Realtime Database: เรียกใช้ฟังก์ชันเมื่อมีการสร้าง อัปเดต หรือ ลบข้อมูล
 - การกำหนดค่าระยะไกล: เรียกใช้ฟังก์ชันเมื่อมีการอัปเดตพารามิเตอร์
 - Test Lab: เรียกใช้ฟังก์ชันเมื่อ Test Lab เรียกใช้การแจ้งเตือน
 
ทริกเกอร์บริการของ Google Cloud
นอกจากนี้ ส่วนขยายยังอาจมีฟังก์ชันที่ทริกเกอร์จากบริการ Google Cloud ที่ไม่ใช่ Firebase หลายรายการด้วย ดังนี้
- Cloud Pub/Sub: ส่วนขยายสามารถมีฟังก์ชันที่ทริกเกอร์เมื่อมีการโพสต์เหตุการณ์ไปยังหัวข้อ Pub/Sub ที่กำหนดค่าได้
 - Cloud Scheduler: ส่วนขยายสามารถมีฟังก์ชันที่ทำงานตามกำหนดเวลาที่ตั้งไว้
 - Cloud Tasks: ส่วนขยายสามารถมีฟังก์ชันที่จัดคิวได้โดยใช้ Cloud Tasks ส่วนขยาย Firebase ใช้ความสามารถนี้เพื่อให้คุณในฐานะผู้เขียนส่วนขยายเขียนฟังก์ชันที่ตอบสนองต่อเหตุการณ์ "วงจร" ของส่วนขยายได้ ซึ่งได้แก่ การติดตั้งในโปรเจ็กต์เป็นครั้งแรก การอัปเกรดเป็นเวอร์ชันใหม่ และการกำหนดค่าใหม่
 - Eventarc: ส่วนขยายสามารถมีฟังก์ชันที่ทริกเกอร์เมื่อมีการเผยแพร่เหตุการณ์ไปยังช่อง Eventarc ที่กำหนดค่าได้ ในทางกลับกัน ส่วนขยายสามารถเผยแพร่เหตุการณ์ของตัวเองไปยังช่อง Eventarc เพื่อให้ผู้ใช้กำหนดฟังก์ชันของตนเองที่ทริกเกอร์จากเหตุการณ์ของส่วนขยายได้
 
รองรับจากฟังก์ชัน
เมื่อทริกเกอร์ Cloud Function ของส่วนขยายแล้ว โดยทั่วไปแล้วช่วงของการผสานรวมที่เป็นไปได้จะไม่มีที่สิ้นสุด ความสามารถบางส่วนของ Cloud Functions มีดังนี้
- อ่าน เขียน และโต้ตอบกับบริการ Firebase หรือ Google Cloud ที่ใช้บทบาท IAM ที่รองรับ
 - ทำงานร่วมกับบริการของบุคคลที่สามที่ให้บริการ Web API
 - ทำงานร่วมกับบริการที่กำหนดเองหากคุณให้บริการ Web API
 - เรียกใช้ไลบรารี JavaScript ส่วนใหญ่ รวมถึง TensorFlow.js, Express.js และอื่นๆ
 
วิธีสร้างส่วนขยาย
บทแนะนำเริ่มต้นใช้งานจะอธิบายขั้นตอนการสร้าง ทดสอบ และเผยแพร่ส่วนขยายที่สมบูรณ์ และเป็นวิธีที่แนะนำในการเรียนรู้วิธีสร้างส่วนขยาย
หลังจากอ่านคู่มือการเริ่มต้นใช้งานแล้ว คุณสามารถดู คำแนะนำสำหรับแต่ละหัวข้อ ซึ่งจะอธิบายแต่ละงานที่เกี่ยวข้องกับการสร้าง ส่วนขยายของคุณเองได้
- เขียนฟังก์ชันสำหรับส่วนขยาย
 - ใช้พารามิเตอร์ในส่วนขยาย
 - ตั้งค่าสิทธิ์เข้าถึงที่เหมาะสมสำหรับส่วนขยาย
 - ตอบกลับเหตุการณ์วงจรส่วนขยาย
 - เพิ่ม Hook ของผู้ใช้ลงในส่วนขยาย
 - สร้างเอกสารประกอบสำหรับผู้ใช้สำหรับส่วนขยาย
 - เผยแพร่ส่วนขยายในฮับส่วนขยาย
 - ข้อมูลอ้างอิง extension.yaml ฉบับสมบูรณ์