Firebase Extension จะทำงานเฉพาะอย่างหรือชุดงานเฉพาะอย่างเพื่อตอบสนองต่อคำขอ HTTP หรือเหตุการณ์ทริกเกอร์จากผลิตภัณฑ์อื่นๆ ของ Firebase และ Google เช่น Firebase Cloud Messaging, Cloud Firestore หรือ Pub/Sub
คุณสามารถสร้างส่วนขยายของคุณเองเพื่อใช้ส่วนตัวหรือแชร์กับผู้ใช้ทั่วโลกใน Firebase Extensions Hub ตัวอย่างเช่น ส่วนขยายของคุณสามารถทำงานเฉพาะอย่างที่แอปต้องใช้เป็นประจำ หรือทำให้การเข้าถึง 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 และ Extensions Hub จะแสดงเนื้อหาของไฟล์เหล่านี้เมื่อผู้ใช้สำรวจ ติดตั้ง และจัดการส่วนขยาย
หลังจากสร้างส่วนขยายแล้ว คุณสามารถใช้ Firebase CLI เพื่อติดตั้งส่วนขยายในโปรเจ็กต์หรือเผยแพร่ไปยัง Extensions Hub ซึ่งทุกคนจะค้นพบและติดตั้งส่วนขยายในโปรเจ็กต์ของตนเองได้
ส่วนขยายของฉันโต้ตอบกับผลิตภัณฑ์ใดได้บ้าง
เนื่องจาก Firebase Extension ทำงานโดยใช้ Cloud Functions คุณจึงคิด ถึงการผสานรวมที่เป็นไปได้ได้ 2 วิธี ได้แก่ ผลิตภัณฑ์ใดบ้างที่ทริกเกอร์ ฟังก์ชันของส่วนขยายได้ และ เมื่อทริกเกอร์แล้ว ฟังก์ชันของส่วนขยายจะโต้ตอบกับผลิตภัณฑ์ใดได้บ้าง
ทริกเกอร์ฟังก์ชันที่รองรับ
ทริกเกอร์ด้วยตนเอง
ก่อนอื่น คุณสามารถทริกเกอร์ฟังก์ชันด้วยตนเองได้ Firebase Extensions และ 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 ทริกเกอร์การแจ้งเตือน
- Performance Monitoring: ทริกเกอร์ฟังก์ชันเมื่อ Performance Monitoring ทริกเกอร์การแจ้งเตือน
- Realtime Database: ทริกเกอร์ฟังก์ชันเมื่อมีการสร้าง อัปเดต หรือลบข้อมูล
- การกำหนดค่าระยะไกล: ทริกเกอร์ฟังก์ชันเมื่อมีการอัปเดตพารามิเตอร์
- Test Lab: ทริกเกอร์ฟังก์ชันเมื่อ Test Lab ทริกเกอร์การแจ้งเตือน
ทริกเกอร์บริการของ Google Cloud
ส่วนขยายยังรวมฟังก์ชันที่ทริกเกอร์จากบริการต่างๆ ของ Google Cloud ที่ไม่ใช่ Firebase ได้ด้วย
- Cloud Pub/Sub: ส่วนขยายสามารถรวมฟังก์ชันที่ทริกเกอร์เมื่อ มีการโพสต์เหตุการณ์ไปยังหัวข้อ Pub/Sub ที่กำหนดค่าได้
- Cloud Scheduler: ส่วนขยายสามารถรวมฟังก์ชันที่ทำงานตาม กำหนดเวลาที่ตั้งไว้
- Cloud Tasks: ส่วนขยายสามารถรวมฟังก์ชันที่จัดคิวได้โดยใช้ Cloud Tasks Firebase Extensions ใช้ความสามารถนี้เพื่อให้คุณในฐานะผู้เขียนส่วนขยายเขียนฟังก์ชันที่ตอบสนองต่อเหตุการณ์ "วงจรการใช้งาน" ของส่วนขยายได้ เช่น การติดตั้งในโปรเจ็กต์เป็นครั้งแรก การอัปเกรดเป็นเวอร์ชันใหม่ และการกำหนดค่าใหม่
- Eventarc: ส่วนขยายสามารถรวมฟังก์ชันที่ทริกเกอร์เมื่อเหตุการณ์ ได้รับการเผยแพร่ไปยังแชแนล Eventarc ที่กำหนดค่าได้ ในทางกลับกัน ส่วนขยาย สามารถเผยแพร่เหตุการณ์ของตัวเองไปยังแชแนล Eventarc เพื่อให้ผู้ใช้ กำหนดฟังก์ชันของตนเองที่ทริกเกอร์จากเหตุการณ์ของส่วนขยายได้
ฟังก์ชันที่รองรับ
เมื่อ Cloud Functions ของส่วนขยายทริกเกอร์แล้ว การผสานรวมที่เป็นไปได้จะไม่มีขอบเขตจำกัด ตัวอย่างสิ่งที่คุณทำได้จาก Cloud Functions มีดังนี้
- อ่าน เขียน และโต้ตอบกับบริการ Firebase หรือ Google Cloud ใดก็ได้ที่ใช้ บทบาท IAM ที่รองรับ
- ทำงานร่วมกับบริการของบุคคลที่สาม ใดก็ได้ที่ให้บริการเว็บ API
- ทำงานร่วมกับบริการที่กำหนดเอง หากคุณให้บริการเว็บ API
- เรียกใช้ไลบรารี JavaScript ส่วนใหญ่ รวมถึง TensorFlow.js, Express.js, และอื่นๆ
วิธีสร้างส่วนขยาย
บทแนะนำ "เริ่มต้นใช้งาน" จะแนะนำขั้นตอนการสร้าง ทดสอบ และเผยแพร่ส่วนขยายที่สมบูรณ์ ซึ่งเป็นวิธีที่แนะนำในการเรียนรู้วิธีสร้างส่วนขยาย
หลังจากอ่านคู่มือเริ่มต้นใช้งานแล้ว คุณสามารถดูคู่มือหัวข้อแต่ละรายการ ซึ่งอธิบายงานแต่ละอย่างที่เกี่ยวข้องกับการสร้างส่วนขยายของคุณเองได้
- เขียนฟังก์ชันสำหรับส่วนขยาย
- ใช้พารามิเตอร์ในส่วนขยาย
- ตั้งค่าการเข้าถึงที่เหมาะสมสำหรับส่วนขยาย
- ตอบสนองต่อเหตุการณ์วงจรการใช้งานของส่วนขยาย
- เพิ่ม User Hook ลงในส่วนขยาย
- สร้างเอกสารประกอบสำหรับผู้ใช้สำหรับส่วนขยาย
- เผยแพร่ส่วนขยายใน Extensions Hub
- ข้อมูลอ้างอิงฉบับสมบูรณ์เกี่ยวกับ extension.yaml