บทแนะนำนี้แสดงวิธีสร้างส่วนเสริมโดยใช้ชุดพัฒนาซอฟต์แวร์ (SDK) ของ Google Meet สำหรับเว็บ วิธีนี้ช่วยให้คุณแชร์และทำงานร่วมกันภายในเว็บแอปได้โดยไม่ต้องออกจาก Google Meet
-
แผงด้านข้างของ SDK ส่วนเสริม Meet สำหรับเว็บ -
ขั้นตอนหลักของ SDK ส่วนเสริม Meet สำหรับเว็บที่ผู้ใช้ทำงานร่วมกัน
วัตถุประสงค์
- สร้างและทำให้ SDK ส่วนเสริม Meet สำหรับเว็บใช้งานได้ในคอนโซล Google Cloud
- สร้างขั้นตอนหลักและแผงด้านข้างสำหรับ SDK ส่วนเสริม Meet สำหรับเว็บ
เตรียมสภาพแวดล้อมของคุณ
ส่วนนี้จะแสดงวิธีสร้างและกำหนดค่าโปรเจ็กต์ Google Cloud สำหรับ SDK ส่วนเสริม Meet สำหรับเว็บ
สร้างโปรเจ็กต์ Google Cloud
คอนโซล Google Cloud
- ในคอนโซล Google Cloud ให้ไปที่เมนู > IAM และผู้ดูแลระบบ > สร้างโปรเจ็กต์
-
ในช่องชื่อโครงการ ให้ป้อนชื่อที่สื่อความหมายสำหรับโปรเจ็กต์ของคุณ
ไม่บังคับ: หากต้องการแก้ไขรหัสโปรเจ็กต์ ให้คลิกแก้ไข คุณจะเปลี่ยนแปลงรหัสโปรเจ็กต์ไม่ได้หลังจากสร้างโปรเจ็กต์แล้ว ดังนั้นโปรดเลือกรหัสที่ตรงกับความต้องการตลอดอายุของโปรเจ็กต์
- ในช่องตำแหน่ง ให้คลิกเรียกดูเพื่อแสดงตำแหน่งที่เป็นไปได้สำหรับโปรเจ็กต์ของคุณ จากนั้นคลิกเลือก
- คลิกสร้าง คอนโซล Google Cloud จะไปที่หน้าแดชบอร์ดและระบบจะสร้างโปรเจ็กต์ขึ้นภายในไม่กี่นาที
gcloud CLI
เข้าถึง Google Cloud CLI (`gcloud`) ในสภาพแวดล้อมการพัฒนาซอฟต์แวร์ต่อไปนี้
-
Cloud Shell: หากต้องการใช้เทอร์มินัลออนไลน์กับ gcloud CLI ที่ตั้งค่าไว้แล้ว ให้เปิดใช้งาน Cloud Shell
เปิดใช้งาน Cloud Shell -
Local Shell: หากต้องการใช้สภาพแวดล้อมการพัฒนาภายใน ให้ติดตั้งและinitialize gcloud CLI
หากต้องการสร้างโปรเจ็กต์ Cloud ให้ใช้คำสั่ง `gcloud project create`:gcloud projects create PROJECT_ID
เปิดใช้ API
คอนโซล
ในคอนโซล Google Cloud ให้เปิดใช้ Google Workspace Marketplace SDK และ API ส่วนเสริมของ Google Workspace
ยืนยันว่าคุณเปิดใช้ API ในโปรเจ็กต์ที่อยู่ในระบบคลาวด์ที่ถูกต้อง แล้วคลิกถัดไป
ยืนยันว่าคุณเปิดใช้ API ที่ถูกต้อง แล้วคลิกเปิดใช้
gcloud CLI
หากจำเป็น ให้ตั้งค่าโปรเจ็กต์ Google Cloud ปัจจุบันเป็นโปรเจ็กต์ที่คุณสร้างด้วยคำสั่ง
gcloud config set project
ดังนี้gcloud config set project PROJECT_ID
แทนที่ PROJECT_ID ด้วยรหัสโปรเจ็กต์ของโปรเจ็กต์ระบบคลาวด์ที่คุณสร้าง
เปิดใช้ Google Workspace Marketplace SDK และ API ส่วนเสริมของ Google Workspace ด้วยคำสั่ง
gcloud services enable
ดังนี้gcloud services enable appsmarket-component.googleapis.com gsuiteaddons.googleapis.com
สร้างและทำให้เว็บแอปใช้งานได้
ในส่วนต่อไปนี้ คุณจะต้องคัดลอกและอัปเดตโปรเจ็กต์เว็บแอปพลิเคชันทั้งโปรเจ็กต์ (สร้างด้วย Firebase) ซึ่งประกอบด้วยโค้ดของแอปพลิเคชันที่จำเป็นทั้งหมดสำหรับ SDK ของส่วนเสริม Meet สำหรับเว็บ ขั้นแรก คุณจะต้องกำหนดค่าและทำให้เว็บแอปพลิเคชันใช้งานได้
ดูโค้ดตัวอย่าง
คุณสามารถดูและดาวน์โหลดเว็บแอปพลิเคชันพื้นฐานบน GitHub
นี่คือภาพรวมของโค้ดพื้นฐาน
- ซึ่งสร้างขึ้นโดยใช้ Next.js ซึ่งเป็นเฟรมเวิร์กแบบ React
- โดยใช้ Tailwind CSS ในการจัดรูปแบบ
src/components
ประกอบด้วยตรรกะของแอปพลิเคชันจำนวนมาก ไม่มีข้อมูลที่อัปเดตหรือแก้ไขที่นี่src/firebase
ประกอบด้วยโค้ดการกำหนดค่าและโค้ดเริ่มต้นของ Firebasesrc/app
มีจุดแรกเข้าของเว็บแอปsrc/app/page.tsx
คือหน้าหลักหรือรายการโปรเจ็กต์src/app/project/[id]/page.tsx
คือหน้าของแต่ละโปรเจ็กต์และรายการงาน.env
มีการกำหนดค่าสภาพแวดล้อม
ตั้งค่าโปรเจ็กต์ Firebase และ CLI
Firebase คือแพลตฟอร์มการพัฒนาแอปพลิเคชันบนอุปกรณ์เคลื่อนที่และเว็บแอปพลิเคชันที่ช่วยให้ นักพัฒนาแอปสามารถสร้างแอป Firestore คือฐานข้อมูลเอกสาร NoSQL ที่ช่วยให้ผู้ใช้เก็บ ซิงค์ และค้นหาข้อมูลสำหรับแอปบนอุปกรณ์เคลื่อนที่และเว็บแอปได้ Firestore คือที่ที่เราจะเก็บข้อมูล รายการสิ่งที่ต้องทำ เนื่องจากแอปจะใช้ฟีเจอร์ Firebase คุณจึงควรตั้งค่าโปรเจ็กต์ Firebase และ Firebase CLI โดยทำดังนี้
สร้างโปรเจ็กต์ Firebase
ไปที่ไดเรกทอรีรากของแอปพื้นฐาน
เริ่มต้นโปรเจ็กต์
เชื่อมต่อไฟล์โปรเจ็กต์ในเครื่องกับโปรเจ็กต์ Firebase:
firebase init firestore
ในระหว่างการเริ่มต้นโปรเจ็กต์ จากข้อความแจ้งของ Firebase CLI
เลือกตัวเลือกต่อไปนี้
เลือก
Use an existing project
แล้วเลือกโปรเจ็กต์ Firebase ที่คุณสร้างโปรเจ็กต์ Firebase ที่เลือกคือโปรเจ็กต์ Firebase "เริ่มต้น" สำหรับไดเรกทอรีโปรเจ็กต์ภายใน
ควรใช้ไฟล์ใดสำหรับกฎ Firestore
หากเห็น
(firestore.rules)
ให้กด Enter หากไม่เห็น ให้พิมพ์firestore.rules
ก่อนกด Enterมีไฟล์ Firestore.rules อยู่แล้ว ต้องการเขียนทับด้วยกฎ Firestore จากคอนโซล Firebase ไหม (ได้/ไม่ได้)
พิมพ์ "N" แล้วกด Enter
ควรใช้ไฟล์ใดสำหรับดัชนีของ Firestore
หากเห็น
(firestore.indexes.json)
ให้กด Enter หากไม่เห็น ให้พิมพ์firestore.indexes.json
ก่อนกด Enter
ตอนนี้ฐานข้อมูล Firestore ได้รับการตั้งค่าและพร้อมใช้งานสำหรับแอปแล้ว
ตรวจสอบสิทธิ์ Firebase ด้วย Google
จากนั้นเปิดใช้การตรวจสอบสิทธิ์กับผู้ให้บริการของ Google โดยทำดังนี้
ในคอนโซล Firebase ให้ไปที่หน้าการตรวจสอบสิทธิ์
หากตั้งค่าผู้ให้บริการเป็นครั้งแรก ให้คลิกตั้งค่าวิธีการ ลงชื่อเข้าใช้ หรือคลิกเพิ่มผู้ให้บริการใหม่
เลือก Google และตรวจสอบว่าตั้งค่าสถานะเป็นเปิดใช้
สร้างเว็บแอปใน Firebase
สุดท้าย ให้สร้างเว็บแอปภายในโปรเจ็กต์ Firebase และรับการกำหนดค่า โดยทำดังนี้
ลงทะเบียนเว็บแอปในโปรเจ็กต์ Firebase ในคอนโซล Firebase
ไปที่การตั้งค่าโปรเจ็กต์
ในแอปของคุณ ให้ค้นหาและคลิกเว็บแอปที่ลงทะเบียนไว้
จดค่าใน
firebaseConfig
คุณจะใช้ตัวแปรในส่วนต่อไปนี้ในการอัปเดตตัวแปรสภาพแวดล้อม
ค้นหาหมายเลขโปรเจ็กต์ Google Cloud ของคุณ
เปิดคอนโซล Google Cloud
ถัดจากคอนโซล Google Cloud ให้คลิกลูกศรลง
แล้วเลือกโปรเจ็กต์
คลิกเมนู
> ภาพรวมของระบบคลาวด์
ในส่วนข้อมูลโปรเจ็กต์ ให้จดค่าของหมายเลขโปรเจ็กต์ คุณจะใช้เทมเพลตนี้ในส่วนต่อไปนี้เพื่ออัปเดตตัวแปรสภาพแวดล้อม
อัปเดตตัวแปรสภาพแวดล้อม
ในไฟล์ .env
ของโค้ดฐาน ให้กรอกรายละเอียดต่อไปนี้ซึ่งรวบรวมจากขั้นตอนก่อนหน้า
NEXT_PUBLIC_GOOGLE_PROJECT_NUMBER=GOOGLE_PROJECT_NUMBER
NEXT_PUBLIC_GOOGLE_PROJECT_ID=PROJECT_ID
NEXT_PUBLIC_GOOGLE_API_KEY=API_KEY
NEXT_PUBLIC_GOOGLE_AUTH_DOMAIN=AUTH_DOMAIN
NEXT_PUBLIC_GOOGLE_STORAGE_BUCKET=STORAGE_BUCKET
NEXT_PUBLIC_GOOGLE_MSG_SENDER_ID=MSG_SENDER_ID
NEXT_PUBLIC_GOOGLE_APPID=APP_ID
แทนที่รายการต่อไปนี้โดยใช้ค่า firebaseConfig
และหมายเลขโปรเจ็กต์ที่รวบรวมในขั้นตอนก่อนหน้านี้
GOOGLE_PROJECT_NUMBER
: หมายเลขโปรเจ็กต์ ของโปรเจ็กต์ Google CloudPROJECT_ID
:projectId
ของเว็บแอป FirebaseAPI_KEY
:apiKey
ของเว็บแอป FirebaseAUTH_DOMAIN
:authDomain
ของเว็บแอป FirebaseSTORAGE_BUCKET
:storageBucket
ของเว็บแอป FirebaseMSG_SENDER_ID
:messagingSenderId
ของ เว็บแอป FirebaseAPP_ID
:appId
ของเว็บแอป Firebase
ตั้งค่าข้อมูลเข้าสู่ระบบของแอป
หากต้องการตั้งค่าข้อมูลเข้าสู่ระบบแอปพลิเคชัน Google ให้ทำดังนี้
ในคอนโซล Firebase ให้ไปที่หน้าการตั้งค่าโปรเจ็กต์
ในแท็บบัญชีบริการ ให้เลือกแท็บ Firebase Admin SDK
คลิกสร้างคีย์ส่วนตัวใหม่และสังเกตเส้นทางสำหรับไฟล์ JSON ที่ดาวน์โหลด
จากนั้นเรียกใช้คำสั่งต่อไปนี้
export GOOGLE_APPLICATION_CREDENTIALS="JSON_PATH"
แทนที่
JSON_PATH
ด้วยเส้นทางที่มีไฟล์ JSON ที่ดาวน์โหลดมา
ทำให้ใช้งานได้ในเซิร์ฟเวอร์การพัฒนา
เมื่อโค้ดและสภาพแวดล้อมพร้อมใช้งานแล้ว คุณก็ทำให้เว็บแอปใช้งานได้ในเซิร์ฟเวอร์การพัฒนาในเครื่อง ในการดำเนินการนี้ ให้ไปที่ไดเรกทอรีเว็บแอปและดำเนินการดังนี้
เรียกใช้คำสั่ง
npm install
และรอให้โมดูลโหนดดาวน์โหลดและติดตั้งเรียกใช้คำสั่ง
npm run dev
ไปที่
http://localhost:3000/
เพื่อตรวจสอบว่าเว็บแอปทำงานอยู่
ใช้ SDK ส่วนเสริมของ Meet สำหรับเว็บ
ขั้นตอนถัดไปคือการอัปเดตโค้ดที่จำเป็นเพื่อผสานรวมโค้ดและทำให้เป็นส่วนเสริม Google Meet โดยทำดังนี้
สร้างไฟล์
src/meet/meet.d.ts
- คุณสามารถดูไฟล์ประเภทล่าสุดจาก https://www.gstatic.com/meetjs/addons/0.7.0/index.d.ts และบันทึกไฟล์ไว้ในเครื่อง
สร้างไฟล์
src/meet/utils.ts
เพิ่มฟังก์ชัน
createAddonSession
ซึ่งเป็นจุดที่เรากำหนดให้ เซสชันสื่อสารกันภายใน Google Meetexport function createAddonSession() { let session; session = window.meet.addon.createAddonSession({ cloudProjectNumber: `${process.env.NEXT_PUBLIC_GOOGLE_PROJECT_NUMBER}`, }); return session; }
สร้างไดเรกทอรี
src/app/meet
ซึ่งจะเป็นไดเรกทอรีสำหรับเส้นทางเฉพาะทั้งหมดของ Meet โดยเฉพาะสร้างไฟล์
src/app/meet/layout.tsx
เลย์เอาต์ทั่วไปสำหรับหน้าทั้งหมดที่เกี่ยวข้องกับ Meet ขั้นตอนนี้คือที่ที่คุณแทรกสคริปต์ Meet SDK และตรวจสอบว่ามีการโหลด SDK ไว้แล้วก่อนที่จะแสดงผลเนื้อหาใดๆ
"use client"; import Script from "next/script"; import { useState } from "react"; type LayoutProps = { children: React.ReactNode; }; /** * Layout for the add-on pages. Injects the Meet SDK script. */ export default function RootLayout({ children }: LayoutProps) { const [sdkAvailable, setSdkAvailable] = useState(false); return (<> <Script src="https://www.gstatic.com/meetjs/addons/0.7.0/meet.addons.js" onReady={() => setSdkAvailable(true)} /> {sdkAvailable ? children : <div>Loading...</div>} </>); }
สร้างไฟล์
src/app/meet/sidepanel/page.tsx
เนื้อหาของแผงด้านข้างสำหรับส่วนเสริม Meet หน้านี้จะจัดการกับการเลือกเนื้อหาโดยเฉพาะและการตั้งค่าสถานะเริ่มต้นของการทำงานร่วมกันเมื่อเลือกเนื้อหา
"use client"; import { firebaseApp } from "@/firebase/config"; import { getAuth } from "firebase/auth"; import { ProjectList } from "@/components/ProjectList"; import { createAddonSession } from "@/meet/utils"; import { DocumentReference } from "firebase/firestore"; import { useSearchParams } from "next/navigation"; import { useAuthState, useSignInWithGoogle } from "react-firebase-hooks/auth"; import GoogleButton from "react-google-button"; const auth = getAuth(firebaseApp); async function startCollaboration(ref: DocumentReference) { const url = new URL(window.location.href); // Initializing session const session = await createAddonSession(); const client = await session.createSidePanelClient(); client.setCollaborationStartingState({ mainStageUrl: `${url.protocol}//${url.host}/meet/project/${ref.id}`, sidePanelUrl: `${url.protocol}//${url.host}/meet/sidepanel?participant=true`, }); } export default function Home() { const params = useSearchParams(); const [user] = useAuthState(auth); const [signInWithGoogle] = useSignInWithGoogle(auth); const handleProjectSelect = async (ref: DocumentReference) => { // Before navigating, make sure project selection is saved // for when a shared activity is started. await startCollaboration(ref); }; if (!user) { return ( <GoogleButton onClick={() => signInWithGoogle()} ></GoogleButton> ); } if (params.get("participant")) { return <div>You may now close this panel.</div>; } return ( <div className="px-4"> <ProjectList onSelect={handleProjectSelect} /> </div> ); }
สร้างไฟล์
src/app/meet/project/\[id\]/page.tsx
เนื้อหาหลักของพื้นที่ทำงานสำหรับส่วนเสริม Meet โดยจะแสดงเนื้อหาของโปรเจ็กต์ที่เลือกจากแผงด้านข้าง
"use client"; import { Project } from "@/components/Project"; import { createAddonSession } from "@/meet/utils"; import { firebaseApp } from "@/firebase/config"; import { getAuth, User } from "firebase/auth"; import { useRouter } from "next/navigation"; import { useAuthState, useSignInWithGoogle } from "react-firebase-hooks/auth"; import GoogleButton from "react-google-button"; const auth = getAuth(firebaseApp); // Monitor auth state changes. if (typeof window !== "undefined") { auth.onAuthStateChanged(() => { onAuthStateSettled(auth.currentUser); }); auth.authStateReady().then(() => { onAuthStateSettled(auth.currentUser); }); } /** * Check for auth & doc access when auth state changes. */ async function onAuthStateSettled(user: User | null | undefined) { const session = await createAddonSession(); const client = await session.createMainStageClient(); // For participants, side panel should be closed after authentication await client.unloadSidePanel(); } type PageParams = { params: { id: string; }; }; export default function Page({ params }: PageParams) { const router = useRouter(); const [user, isUserLoading] = useAuthState(auth); if (window.meet.addon.getFrameType() === "MAIN_STAGE") { if (isUserLoading) { return <div>Loading...</div>; } } if (!user) { return ( <GoogleButton onClick={() => signInWithGoogle()} ></GoogleButton> ); } let backButton = null; if (window.meet.addon.getFrameType() === "SIDE_PANEL") { backButton = ( <div className="px-2 pb-2 -my-2"> <button className="flex flex-row" onClick={() => router.back()}> <span className="material-icons">arrow_back</span>previous screen <div className="sr-only">navigate back</div> </button> </div> ); } return ( <div className="w-full min-h-screen px-2"> {backButton} <div className="flex flex-col min-h-screeen"> <Project id={params.id} /> </div> </div> ); }
สร้างการทำให้ใช้งานได้
ตั้งค่าการทำให้ใช้งานได้ของส่วนเสริม
ไปที่ Google Workspace Add-ons API ในคอนโซล Google Cloud
คลิกแท็บรันไทม์สำรอง
คลิกสร้างการทำให้ใช้งานได้ใหม่ แล้วป้อนรหัสการทำให้ใช้งานได้ของส่วนเสริม รหัสการทำให้ใช้งานได้เป็นสตริงที่กำหนดเองที่ช่วยให้นักพัฒนาซอฟต์แวร์ส่วนเสริมระบุการทำให้ใช้งานได้ที่มีไฟล์ Manifest ของส่วนเสริม ต้องระบุรหัสการทำให้ใช้งานได้และมีอักขระได้สูงสุด 100 ตัว
คลิกถัดไป
แผงด้านข้างจะเปิดขึ้นเพื่อให้คุณส่งข้อกำหนดของไฟล์ Manifest ของส่วนเสริมในรูปแบบ JSON ใช้แผงนี้เพื่อป้อนข้อมูลต่อไปนี้เป็นไฟล์ Manifest
{ "addOns": { "common": { "name": "My First Meet Web Add-on", "logoUrl": "https://fonts.gstatic.com/s/i/googlematerialicons/markunread_mailbox/v6/black-24dp/1x/gm_markunread_mailbox_black_24dp.png" }, "meet": { "web": { "sidePanelUri": "http://localhost:3000/meet/sidepanel", "addOnOrigins": ["http://localhost:3000"] } } } }
คลิกส่ง หากทำให้ส่วนเสริมใช้งานได้เรียบร้อยแล้ว ข้อความต่อไปนี้ควรปรากฏขึ้น: สร้าง "รหัส" การทำให้ใช้งานได้แล้ว
ยืนยันการติดตั้งใช้งานในส่วนการทำให้ใช้งานได้ของหน้า
ทดสอบ SDK ส่วนเสริมของ Meet สำหรับเว็บ
หากต้องการทดสอบ SDK ส่วนเสริม Meet ที่สมบูรณ์สำหรับเว็บ ให้เรียกใช้ Google Meet และยืนยันว่าแอปทำงานตามที่คาดไว้ โดยทำดังนี้
- ไปที่ Meet แล้วเริ่มการประชุมใหม่
- คลิกกิจกรรม
- ในส่วนส่วนเสริมของคุณ คุณควรเห็นส่วนเสริมบนเว็บ Meet ครั้งแรกของฉัน เลือก เพื่อเรียกใช้ส่วนเสริม
- เมื่อส่วนเสริมทำงาน แผงด้านข้างจะเปิดขึ้น
- ลงชื่อเข้าใช้แอปโดยใช้บัญชี Google เมื่อลงชื่อเข้าใช้แล้ว ให้คลิกโปรเจ็กต์ใหม่
- เลือกโปรเจ็กต์ที่ไม่มีชื่อที่สร้างขึ้น
- คลิกเริ่มกิจกรรมในแผงด้านข้าง
- เมื่อเริ่มใช้งานแล้ว แผงด้านข้างจะปิดและเวทีหลักจะเปิดขึ้น
ส่วนเสริมจะทำงานตามที่คาดไว้ แต่เฉพาะผู้ใช้ที่ลงชื่อเข้าใช้ผ่านแอปเท่านั้น (ขั้นตอนที่ 5) ผู้เข้าร่วมคนอื่นๆ ที่เข้าร่วมกิจกรรมผ่าน Meet จะไม่สามารถทำงานร่วมกันภายในแอปได้เนื่องจากจะไม่สามารถแชร์เซสชันเดียวกันนี้กับผู้ใช้คนแรก สำหรับการแชร์เนื้อหากับผู้อื่น จำเป็นต้องมีการใช้งานเพิ่มเติม (เช่น กลไกการแชร์โทเค็น)
ล้างข้อมูล
เราขอแนะนำให้คุณลบโปรเจ็กต์ Cloud เพื่อหลีกเลี่ยงการเรียกเก็บเงินในบัญชี Google Cloud สำหรับทรัพยากรที่ใช้ในบทแนะนำนี้
- ในคอนโซล Google Cloud ให้ไปที่หน้าจัดการทรัพยากร คลิก เมนู > IAM และผู้ดูแลระบบ > จัดการทรัพยากร
- ในรายการโปรเจ็กต์ ให้เลือกโปรเจ็กต์ที่ต้องการลบ แล้วคลิกลบ
- ในกล่องโต้ตอบ ให้พิมพ์รหัสโปรเจ็กต์แล้วคลิกปิดเพื่อลบโปรเจ็กต์
หัวข้อที่เกี่ยวข้อง
โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับการทำงานร่วมกันที่หัวข้อทำงานร่วมกันโดยใช้ส่วนเสริม Meet
ดูข้อมูลเพิ่มเติมเกี่ยวกับการแชร์หน้าจอได้ที่โปรโมตส่วนเสริมให้กับผู้ใช้ผ่านการแชร์หน้าจอ