این آموزش نحوه ساخت یک افزونه با استفاده از کیت توسعه نرم افزار افزودنی Google Meet (SDK) برای وب را نشان می دهد. این به شما امکان میدهد بدون خروج از Google Meet در یک برنامه وب به اشتراک بگذارید و با آن همکاری کنید.
مرحله اصلی Meet Add-ons SDK برای وب که در آن کاربران با یکدیگر همکاری می کنند.
اهداف
- ایجاد و استقرار Meet Add-ons SDK برای وب در کنسول Google Cloud.
- یک مرحله اصلی و پانل جانبی برای Meet Add-ons SDK for Web ایجاد کنید.
محیط خود را آماده کنید
این بخش نحوه ایجاد و پیکربندی پروژه Google Cloud را برای Meet Add-ons SDK for Web نشان میدهد.
یک پروژه Google Cloud ایجاد کنید
کنسول Google Cloud
- در کنسول Google Cloud، به > IAM & Admin > ایجاد پروژه بروید. منو
- در قسمت Project Name یک نام توصیفی برای پروژه خود وارد کنید.
اختیاری: برای ویرایش شناسه پروژه ، روی ویرایش کلیک کنید. شناسه پروژه پس از ایجاد پروژه قابل تغییر نیست، بنابراین شناسه ای را انتخاب کنید که نیازهای شما را برای طول عمر پروژه برآورده کند.
- در قسمت Location ، روی Browse کلیک کنید تا مکان های احتمالی پروژه شما نمایش داده شود. سپس، روی انتخاب کلیک کنید.
- روی ایجاد کلیک کنید. کنسول Google Cloud به صفحه داشبورد می رود و پروژه شما در عرض چند دقیقه ایجاد می شود.
gcloud CLI
در یکی از محیطهای توسعه زیر، به Google Cloud CLI («gcloud») دسترسی پیدا کنید:
- Cloud Shell : برای استفاده از ترمینال آنلاین با Gcloud CLI که قبلاً راه اندازی شده است، Cloud Shell را فعال کنید.
Cloud Shell را فعال کنید - Local Shell : برای استفاده از یک محیط توسعه محلی، gcloud CLI را نصب و مقداردهی اولیه کنید .
برای ایجاد یک پروژه Cloud، از دستور 'gcloud projects create' استفاده کنید:gcloud projects create PROJECT_ID
API ها را فعال کنید
کنسول
در کنسول Google Cloud، Google Workspace Marketplace SDK و Google Workspace Add-ons API را فعال کنید.
تأیید کنید که APIها را در پروژه Cloud صحیح فعال میکنید، سپس روی Next کلیک کنید.
تأیید کنید که API های صحیح را فعال می کنید، سپس روی فعال کردن کلیک کنید.
gcloud CLI
در صورت لزوم، پروژه فعلی Google Cloud را روی پروژه ای که با دستور
gcloud config set project
ایجاد کرده اید، تنظیم کنید:gcloud config set project PROJECT_ID
PROJECT_ID با Project ID پروژه Cloud که ایجاد کردید جایگزین کنید.
Google Workspace Marketplace SDK و Google Workspace Add-ons API را با دستور
gcloud services enable
فعال کنید:gcloud services enable appsmarket-component.googleapis.com gsuiteaddons.googleapis.com
برنامه وب را ایجاد و اجرا کنید
در بخش بعدی، کل پروژه برنامه وب (ساخته شده با استفاده از Firebase ) را کپی و به روز می کنید که حاوی همه کد برنامه مورد نیاز برای Meet Add-ons SDK برای وب شما است. ابتدا باید برنامه وب را پیکربندی و اجرا کنید.
کد نمونه را مرور کنید
می توانید برنامه وب پایه را در GitHub مشاهده و دانلود کنید.
در اینجا یک نمای کلی از کد پایه آورده شده است:
- این با استفاده از Next.js ساخته شده است که یک چارچوب مبتنی بر React است.
- از Tailwind CSS برای یک ظاهر طراحی شده استفاده می کند.
-
src/components
شامل بخش عمده ای از منطق برنامه است. هیچ چیزی برای به روز رسانی یا تغییر در اینجا وجود ندارد. -
src/firebase
شامل پیکربندی Firebase و کد اولیه است. -
src/app
حاوی نقاط ورود برنامه وب است. -
src/app/page.tsx
صفحه اصلی یا لیست پروژه است. -
src/app/project/[id]/page.tsx
صفحهای برای یک پروژه و لیست وظایف فردی است. -
.env
شامل پیکربندی محیط است.
پروژه Firebase و CLI را راه اندازی کنید
Firebase یک پلت فرم توسعه اپلیکیشن موبایل و وب است که به توسعه دهندگان در ساخت اپلیکیشن کمک می کند. Firestore یک پایگاه داده اسناد NoSQL است که به کاربران اجازه می دهد داده ها را برای برنامه های موبایل و وب ذخیره، همگام سازی و جستجو کنند. Firestore جایی است که ما اطلاعات لیست کارها را ذخیره می کنیم. از آنجایی که برنامه از ویژگی های Firebase استفاده می کند، پروژه Firebase به همراه Firebase CLI باید راه اندازی شود. برای انجام این:
به فهرست اصلی برنامه پایه خود بروید.
پروژه خود را راه اندازی کنید
فایل های پروژه محلی خود را به پروژه Firebase خود متصل کنید:
firebase init firestore
در طول اولیه سازی پروژه، از Firebase CLI درخواست می کند:
یک گزینه را انتخاب کنید:
Use an existing project
انتخاب کنید و سپس پروژه Firebase را که ایجاد کردید انتخاب کنید.پروژه Firebase انتخاب شده پروژه Firebase "پیش فرض" شما برای فهرست پروژه محلی شما است.
چه فایلی باید برای قوانین Firestore استفاده شود؟
اگر
(firestore.rules)
نمایش داده شد، Enter را فشار دهید. اگر نه، قبل از اینکه Enter را فشار دهید،firestore.rules
را تایپ کنید.فایل firestore.rules از قبل وجود دارد. آیا می خواهید آن را با قوانین Firestore از کنسول Firebase بازنویسی کنید؟ (Y/N)
"N" را تایپ کرده و Enter را فشار دهید.
چه فایلی باید برای ایندکس های Firestore استفاده شود؟
اگر
(firestore.indexes.json)
نمایش داده شد، Enter را فشار دهید. اگر نه،firestore.indexes.json
را قبل از فشار دادن Enter تایپ کنید.
پایگاه داده Firestore اکنون راه اندازی شده و آماده استفاده برای برنامه است.
Firebase را با Google احراز هویت کنید
در مرحله بعد، احراز هویت با ارائه دهنده Google را فعال کنید. برای انجام این:
در کنسول Firebase، به صفحه Authentication بروید.
اگر این اولین باری است که ارائه دهنده راه اندازی می کنید، روی تنظیم روش ورود به سیستم کلیک کنید. در غیر این صورت، روی افزودن ارائه دهنده جدید کلیک کنید.
Google را انتخاب کنید و مطمئن شوید که وضعیت روی Enable تنظیم شده است.
یک برنامه وب در Firebase ایجاد کنید
در نهایت، یک برنامه وب در پروژه Firebase خود ایجاد کنید و پیکربندی را دریافت کنید. برای انجام این:
در کنسول Firebase، برنامه وب خود را در پروژه Firebase خود ثبت کنید.
در برنامه های شما ، برنامه وب ثبت شده خود را پیدا کرده و روی آن کلیک کنید.
به مقادیر موجود در
firebaseConfig
توجه کنید. در قسمت بعدی در به روز رسانی متغیرهای محیطی از آنها استفاده خواهید کرد.
شماره پروژه Google Cloud خود را پیدا کنید
کنسول Google Cloud را باز کنید.
در کنار کنسول Google Cloud ، روی پیکان روبه پایین کلیک کنید و پروژه خود را انتخاب کنید.
روی منو کلیک کنید > نمای کلی ابر .
در بخش اطلاعات پروژه ، به مقدار Project number توجه کنید. در قسمت زیر از آن برای به روز رسانی متغیرهای محیطی استفاده خواهید کرد.
متغیرهای محیط را به روز کنید
در فایل .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 Cloud شما -
PROJECT_ID
:projectId
برنامه وب Firebase شما -
API_KEY
:apiKey
برنامه وب Firebase شما -
AUTH_DOMAIN
:authDomain
برنامه وب Firebase شما -
STORAGE_BUCKET
:storageBucket
برنامه وب Firebase شما -
MSG_SENDER_ID
:messagingSenderId
برنامه وب Firebase شما -
APP_ID
:appId
برنامه وب Firebase شما
اعتبار برنامه خود را تنظیم کنید
برای تنظیم اعتبار برنامه Google خود، موارد زیر را انجام دهید:
در کنسول Firebase، به صفحه تنظیمات پروژه بروید.
در تب حسابهای سرویس ، تب Firebase Admin SDK را انتخاب کنید.
روی Generate new private key کلیک کنید و مسیر فایل JSON دانلود شده را یادداشت کنید.
در ترمینال خود دستور را اجرا کنید:
export GOOGLE_APPLICATION_CREDENTIALS="JSON_PATH"
مسیری که فایل JSON دانلود شده در آن قرار دارد را جایگزین
JSON_PATH
کنید.
به سرور توسعه خود مستقر کنید
اکنون که کد و محیط موجود است، اکنون می توانید برنامه وب را در سرور توسعه محلی خود مستقر کنید. برای انجام این کار، به دایرکتوری برنامه وب خود بروید و موارد زیر را انجام دهید:
دستور
npm install
را اجرا کنید و منتظر بمانید تا ماژولهای نود دانلود و نصب شوند.دستور:
npm run dev
اجرا کنید.به
http://localhost:3000/
بروید تا تأیید کنید که برنامه وب راهاندازی و اجرا میشود.
از Meet Add-ons SDK برای وب استفاده کنید
گام بعدی این است که کدهای لازم را بهروزرسانی کنید تا کد را یکپارچه کنید و آن را به افزونه 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 Meet ایجاد می شود.export function createAddonSession() { let session; session = window.meet.addon.createAddonSession({ cloudProjectNumber: `${process.env.NEXT_PUBLIC_GOOGLE_PROJECT_NUMBER}`, }); return session; }
دایرکتوری
src/app/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 Cloud، به Google Workspace Add-ons API بروید.
روی تب Alternate Runtimes کلیک کنید.
روی Create new Deployment کلیک کنید و شناسه استقرار افزونه را وارد کنید. شناسه استقرار یک رشته دلخواه است که به توسعه دهنده افزونه کمک می کند تا استقرار حاوی مانیفست الحاقی را شناسایی کند. شناسه های استقرار مورد نیاز هستند و حداکثر می توانند 100 کاراکتر داشته باشند.
روی Next کلیک کنید.
یک پانل جانبی برای شما باز می شود تا مشخصات مانیفست افزودنی را با فرمت JSON ارسال کنید. از این پانل برای وارد کردن موارد زیر به عنوان فایل مانیفست خود استفاده کنید:
{ "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"] } } } }
روی ارسال کلیک کنید. اگر افزونه با موفقیت اجرا شود، پیام زیر باید ظاهر شود: Deployment "ID" ایجاد شد .
استقرار را در بخش Deployments صفحه تأیید کنید.
Meet Add-ons SDK for Web را آزمایش کنید
برای آزمایش کامل Meet Add-ons SDK برای وب، Google Meet را اجرا کنید و تأیید کنید که برنامه همانطور که انتظار میرود کار میکند. برای انجام این:
- به Meet بروید و جلسه جدیدی را شروع کنید.
- روی Activities کلیک کنید.
- در بخش افزونههای شما ، باید افزونه My First Meet Web را ببینید. آن را انتخاب کنید تا افزونه اجرا شود.
- پس از اجرا شدن افزونه، پنل کناری باز می شود.
- با استفاده از حساب Google خود وارد برنامه شوید. پس از ورود به سیستم، روی پروژه جدید کلیک کنید.
- پروژه بدون عنوان ایجاد شده را انتخاب کنید.
- روی Start Activity در پانل کناری کلیک کنید.
- پس از شروع، پانل کناری بسته می شود و مرحله اصلی باز می شود.
این افزونه اکنون همانطور که انتظار می رود اجرا می شود، اما فقط برای کاربری که از طریق برنامه وارد شده است (مرحله 5). سایر شرکتکنندگانی که از طریق Meet به فعالیت میپیوندند، نمیتوانند در برنامه همکاری کنند، زیرا نمیتوانند همان جلسه را با کاربر اول به اشتراک بگذارند. برای به اشتراک گذاشتن محتوا با دیگران نیاز به پیاده سازی بیشتر (مانند مکانیزم به اشتراک گذاری توکن) وجود دارد.
پاک کردن
برای جلوگیری از تحمیل هزینه به حساب Google Cloud خود برای منابع استفاده شده در این آموزش، توصیه می کنیم پروژه Cloud را حذف کنید.
- در کنسول Google Cloud، به صفحه مدیریت منابع بروید. > IAM & Admin > Manage Resources کلیک کنید. منو
- در لیست پروژه، پروژه ای را که می خواهید حذف کنید انتخاب کنید و سپس روی حذف حذف کنید.
- در گفتگو، ID پروژه را تایپ کنید و سپس بر روی Shut down کلیک کنید تا پروژه حذف شود.
مطالب مرتبط
برای کسب اطلاعات بیشتر درباره همکاری، به همکاری با استفاده از افزونه Meet مراجعه کنید.
برای کسب اطلاعات بیشتر درباره اشتراکگذاری صفحه، به تبلیغ یک افزونه برای کاربران از طریق اشتراکگذاری صفحه رجوع کنید.