اگر یک برنامه Google Chat ساخته و منتشر کردهاید که از رویدادهای تعاملی Google Chat API استفاده میکند، مانند برنامهای که مبتنی بر شروع سریع برنامه Google Chat است ، این صفحه نحوه تبدیل آن به یک افزونه Google Workspace که Google Chat را توسعه میدهد را نشان میدهد.
با تبدیل، برنامه Google Chat شما میتواند از چارچوب افزونههای Google Workspace استفاده کند و امکانات جدیدی را برای ادغام و ویژگیهای درون Google Chat و در سراسر Google Workspace فراهم کند. به عنوان مثال، به جای دو توزیع - یک برنامه Google Chat و یک افزونه Google Workspace - میتوانید یک افزونه Google Workspace واحد را از طریق Google Workspace Marketplace توزیع کنید که برنامههای Chat را در کنار سایر برنامههای میزبان Google Workspace، مانند Gmail، Calendar و Docs، گسترش میدهد.
محدودیتها
قبل از شروع تبدیل، افزونههای محدودیتهای Google Workspace که Google Chat را گسترش میدهند را بررسی کنید تا مطمئن شوید که برنامه Google Chat شما بدون از دست دادن قابلیتهای ضروری قابل تبدیل است.
مرحله ۱: کد برنامه چت گوگل فعلی خود را کپی کنید
فرآیند تبدیل نیاز به تغییر کد دارد. برای جلوگیری از تأثیرگذاری بر برنامه چت زنده گوگل خود، یک کپی از کد خود ایجاد کرده و روی آن کار کنید.
اسکریپت برنامهها
- پروژه اسکریپت گوگل اپس موجود در اپلیکیشن چت گوگل خود را باز کنید.
- در سمت چپ، روی کلی » کلیک کنید.
- در سمت راست، روی «کپی کردن کلیک کنید.
- در سمت چپ، روی پروژه کلیک کنید.
- در زیر پروژه Google Cloud ، روی تغییر پروژه کلیک کنید.
- همان شماره پروژه مرتبط با پروژه برنامه Google Chat موجود خود را وارد کنید.
- روی تنظیم پروژه کلیک کنید.
اچتیپی
یک انشعاب یا کپی از کدبیس موجود خود ایجاد کنید و آن را به عنوان یک سرویس جدید، جدا از برنامه چت گوگل زنده خود، مستقر کنید.
اگر برنامه شما روی Google Cloud مستقر شده است و به ویژگیهای مرتبط با پروژه Google Cloud (مثلاً هویت پیشفرض App Engine) متکی است، کد جدید باید روی سرویسی مرتبط با پروژه برنامه Google Chat موجود مستقر شود.
مرحله ۲: کد کپی شده را تغییر دهید
افزونههای Google Workspace که Google Chat را توسعه میدهند، در مقایسه با برنامههای Google Chat که با رویدادهای تعاملی Chat API ساخته شدهاند، از ساختارهای درخواست و پاسخ متفاوتی استفاده میکنند. شما باید کد خود را بهروزرسانی کنید تا از افزونه Google Workspace به نام EventObject به جای Event مربوط به Google Chat API برای درخواستها و پاسخها استفاده کنید. برای اصلاح کد خود از راهنمای تبدیل کد استفاده کنید.
مرحله ۳: پیکربندی افزونه Google Workspace را برای کاربران آزمایشی فعال کنید
از کنسول Google Cloud برای پیکربندی تنظیمات افزونه Google Workspace برای برنامه Google Chat خود استفاده کنید:
به صفحه پیکربندی Google Chat API در کنسول Google Cloud بروید.
در بخش ویژگیهای تعاملی ، روی تبدیل به افزونه کلیک کنید.
فعال کردن تنظیمات پیکربندی افزونه را فعال کنید .
در بخش «قابلیت مشاهده» ، آدرسهای ایمیل کاربران آزمایشی خود را اضافه کنید.
در صورت لزوم، تنظیمات اتصال را با URL نقطه پایانی استقرار یا شناسه استقرار اسکریپت برنامهها از کد برنامه Google Chat کپی و اصلاح شده خود از مرحله 2 بهروزرسانی کنید.
روی ذخیره کلیک کنید و تست کنید .
مرحله ۴: برنامه تبدیل شده را آزمایش کنید
با استفاده از حسابهای کاربری آزمایشی پیکربندیشده در مرحله ۳، عملکرد افزونه Google Workspace را بهطور کامل آزمایش کنید. تمام ویژگیها و تعاملات را تأیید کنید.
مرحله ۵: تبدیل را برای همه کاربران تکمیل کنید
پس از اینکه تأیید کردید افزونهی Google Workspace تبدیلشده به درستی کار میکند، میتوانید آن را در دسترس همه کاربران قرار دهید.
به صفحه پیکربندی Google Chat API در کنسول Google Cloud بروید.
در بخش «ویژگیهای تعاملی» ، روی «تبدیل به افزونه» کلیک کنید. یک پنل کناری باز میشود.
در پنل کناری، روی تبدیل به افزونه کلیک کنید.
شناسه پروژه خود را تایپ کنید و روی تبدیل کلیک کنید.
برنامه Google Chat شما اکنون یک افزونه Google Workspace است که Google Chat را گسترش میدهد.
اختیاری: منابع بلااستفاده Google Cloud را پاکسازی یا آزاد کنید
در صورت تمایل، پس از تبدیل برنامه Google Chat خود به افزونه Google Workspace، برای جلوگیری از تحمیل هزینه به حساب Google Cloud خود برای منابعی که توسط برنامه Google Chat استفاده میشوند و دیگر مورد استفاده قرار نمیگیرند، میتوانید آنها را غیرفعال کنید.
راهنمای تبدیل کد
این بخش جزئیات نگاشت بین قالب Event تعامل API چت گوگل و قالب EventObject افزونهی فضای کاری گوگل را شرح میدهد.
درخواست نقشه برداری
جدول زیر نشان میدهد که چگونه فیلدهای موجود در Event API چت گوگل به فیلدهای مربوطه در افزونه EventObject گوگل ورکاسپیس نگاشت میشوند.
فیلد Event تعامل API چت گوگل | فیلد EventObject افزونهی Google Workspace | یادداشتها |
|---|---|---|
action.actionMethodName | ناموجود | برای تعاملات کارت، نام متد میتواند به عنوان پارامتر در commonEventObject.parameters ارسال شود. به بخش «باز کردن یک کادر محاورهای اولیه» مراجعه کنید. |
action.parameters | commonEventObject.parameters | |
appCommandMetadata | chat.appCommandPayload.appCommandMetadata | |
common | commonEventObject | |
configCompleteRedirectUrl |
| بسته به نوع رویداد، در ظرفیتهای مختلف موجود است. |
dialogEventType |
| بسته به نوع رویداد، در ظرفیتهای مختلف موجود است. |
eventTime | chat.eventTime | |
isDialogEvent |
| بسته به نوع رویداد، در ظرفیتهای مختلف موجود است. |
message |
| بسته به نوع رویداد، در ظرفیتهای مختلف موجود است. |
space |
| |
thread |
| بسته به نوع رویداد، در ظرفیتهای مختلف موجود است. |
threadKey |
| بسته به نوع رویداد، در ظرفیتهای مختلف موجود است. |
token | ناموجود | تأیید به طور متفاوتی انجام میشود، به درخواست تأیید برای برنامههای HTTP مراجعه کنید. |
type | ناموجود | نوع رویداد را میتوان از تریگر (trigger) استنباط کرد. |
user | chat.user |
درخواست نگاشت بر اساس مورد استفاده
جدول زیر تفاوتهای موجود در بار داده درخواستها را برای موارد استفاده رایج بین برنامههای Google Chat ساخته شده با رویدادهای تعاملی Chat API و افزونههای Google Workspace که Google Chat را توسعه میدهند، نشان میدهد.
| مورد استفاده | تعامل API چت Event Payload | افزونهی EventObject Payload برای گوگل ورکاسپیس |
|---|---|---|
| برنامه به فضا اضافه شد | { "type": "ADDED_TO_SPACE", "space": { ... } } | { "chat": { "addedToSpacePayload": { "space": { ... } } } } |
| حذف برنامه از فضا | { "type": "REMOVED_FROM_SPACE", "space": { ... } } | { "chat": { "removedFromSpacePayload": { "space": { ... } } } } |
| کاربر @-به یک برنامه اشاره میکند | { "type": "MESSAGE", "message": { ... }, "space": { ... }, "configCompleteRedirectUrl": "..." } | { "chat": { "messagePayload": { "message": { ... }, "space": { ... }, "configCompleteRedirectUri": "..." } } } |
| کاربر @-یک برنامه را برای اضافه کردن به فضا منشن میکند | شما باید یک درخواست از گوگل چت را مدیریت کنید:{ "type": "ADDED_TO_SPACE", "space": { ... }, "message": { ... } } | شما باید دو درخواست از گوگل چت را مدیریت کنید. درخواست اول: { "chat": { "addedToSpacePayload": { "space": { ... }, "interactionAdd": true } } } درخواست دوم: { "chat": { "messagePayload": { "message": { ... }, "space": { ... } } } } |
| دستور اسلش | { "type": "MESSAGE", "message": { "slashCommand": { ... } }, "space": { ... } } | { "chat": { "appCommandPayload": { "message": { ... }, "space": { ... }, "appCommandMetadata": { ... } } } } |
| دستور اسلش برای اضافه کردن یک برنامه به فضا | شما باید یک درخواست از گوگل چت را مدیریت کنید: { "type": "ADDED_TO_SPACE", "space": { ... }, "message": { "slashCommand": { ... } } } | شما باید دو درخواست از گوگل چت را مدیریت کنید. درخواست اول: { "chat": { "addedToSpacePayload": { "space": { ... }, "interactionAdd": true } } } درخواست دوم: { "chat": { "appCommandPayload": { "message": { ... }, "space": { ... }, "appCommandMetadata": { ... } } } } |
| کاربر روی دکمهای روی کارت یا کادر محاورهای کلیک میکند | { "type": "CARD_CLICKED", "common": { ... }, "space": { ... }, "message": { ... }, "isDialogEvent": "...", "dialogEventType": "..." } برای رویدادهای دیالوگ، { "type": "CARD_CLICKED", "common": { "formInputs": { "contactName": { "": { "stringInputs": { "value": ["Kai 0"] }} } } }, "space": { ... }, "message": { ... }, "isDialogEvent": true, "dialogEventType": "..." } | { "commonEventObject": { ... }, "chat": { "buttonClickedPayload": { "message": { ... }, "space": { ... }, "isDialogEvent": "...", "dialogEventType": "..." } } } برای رویدادهای دیالوگ، { "commonEventObject": { "formInputs": { "contactName": { "stringInputs": { "value": ["Kai 0"] } } } }, "chat": { "buttonClickedPayload": { "message": { ... }, "space": { ... }, "isDialogEvent": "true", "dialogEventType": "..." } } } |
| کاربر اطلاعات را در کارت خانه برنامه ارسال میکند | { "type": "SUBMIT_FORM", "common": { ... }, "space": { ... }, "message": { ... }, "isDialogEvent": "...", "dialogEventType": "..." } | { "commonEventObject": { ... }, "chat": { "buttonClickedPayload": { "message": { ... }, "space": { ... }, "isDialogEvent": "...", "dialogEventType": "SUBMIT_DIALOG" } } } |
| کاربر با استفاده از یک دستور سریع، یک دستور برنامه را فراخوانی میکند. | { "type": "APP_COMMAND", "space": { ... }, "isDialogEvent": "...", "dialogEventType": "..." } | { "chat": { "appCommandPayload": { "message": { ... }, "space": { ... }, "appCommandMetadata": { ... } } } } |
| پیشنمایش لینک | { "type": "MESSAGE", "message": { "matchedUrl": "..." }, "space": { ... } } | { "chat": { "messagePayload": { "message": { "matchedUrl": "..." }, "space": { ... } } } } |
| کاربر یک ویجت را در یک پیام کارت یا کادر محاورهای بهروزرسانی میکند | { "type": "WIDGET_UPDATED", "space": { ... }, "common": { ... } } | { "commonEventObject": { ... }, "chat": { "widgetUpdatedPayload": { "space": { ... } } } } |
نگاشت پاسخ بر اساس مورد استفاده
افزونههای Google Workspace که Google Chat را بسط میدهند، به جای شیء Message اکشنهایی را برمیگردانند. جدول زیر انواع پاسخهای Message از API Google Chat را به معادلهای اکشن افزونه Google Workspace آنها نگاشت میکند.
| مورد استفاده | پاسخ Message API چت گوگل | پاسخ به اقدام چت افزونهی Google Workspace |
|---|---|---|
| ایجاد پیام در فضای فراخوانی شده | { "actionResponse": { "type": "NEW_MESSAGE" }, "text": "..." }
| { "hostAppDataAction": { "chatDataAction": { "createMessageAction": { "message": { "text": "..." } } } } } برای کسب اطلاعات بیشتر، به «ارسال پیام» مراجعه کنید. |
| بهروزرسانی یک پیام | { "actionResponse": { "type": "UPDATE_MESSAGE" }, "text": "..." } برای کسب اطلاعات بیشتر، به بهروزرسانی پیام (چت) مراجعه کنید. | { "hostAppDataAction": { "chatDataAction": { "updateMessageAction": { "message": { "text": "..." } } } } } برای کسب اطلاعات بیشتر، به بهروزرسانی پیام (افزونهها) مراجعه کنید. |
| پیشنمایش لینک | { "actionResponse": { "type": "UPDATE_USER_MESSAGE_CARDS" }, "cardsV2": [{ ... }] } برای کسب اطلاعات بیشتر، به پیشنمایش لینک (چت) مراجعه کنید. | { "hostAppDataAction": { "chatDataAction": { "updateInlinePreviewAction": { "cardsV2": [{ ... }] } } } } برای کسب اطلاعات بیشتر، به پیشنمایش یک پیوند (افزونهها) مراجعه کنید. |
| باز کردن یک کادر محاورهای اولیه | { "actionResponse": { "type": "DIALOG", "dialogAction": { "dialog": { "body": { /* Card object */ } } } } } برای کسب اطلاعات بیشتر، به باز کردن کادر گفتگو (چت) مراجعه کنید. | { "action": { "navigations": [{ "pushCard": { /* Card object */ } }] } } کارتی که ارسال میکنید میتواند شامل ویجتهایی با اکشنهای onClick باشد. برای افزونههای HTTP Google Workspace، این اکشنها را برای فراخوانی یک نقطه پایانی تابع پیکربندی کنید:{ "onClick": { "action": { "function": "https://...", "parameters": [{ "key": "clickedButton", "value": "submit" }] } } } برای کسب اطلاعات بیشتر، به باز کردن یک کادر محاورهای (افزونهها) مراجعه کنید. |
| بستن یک کادر محاورهای | { "actionResponse": { "type": "DIALOG", "dialogAction": { "actionStatus": { "userFacingMessage": "..." } } } } برای کسب اطلاعات بیشتر، به بستن کادر گفتگو (چت) مراجعه کنید. | { "action": { "navigations": [{ "endNavigation": "CLOSE_DIALOG" }], "notification": { "text": "..."} } } برای کسب اطلاعات بیشتر، به بستن کادر محاورهای (افزونهها) مراجعه کنید. |
| اتصال به یک سیستم خارجی (درخواست پیکربندی) | { "actionResponse": { "type": "REQUEST_CONFIG", "url": "..." } } برای کسب اطلاعات بیشتر، به اتصال به یک سیستم خارجی مراجعه کنید. | { "basic_authorization_prompt": { "authorization_url": "...", "resource": "..." } } برای کسب اطلاعات بیشتر، به بخش «افزونه Google Workspace خود را به یک سرویس شخص ثالث متصل کنید» مراجعه کنید. |
| تکمیل خودکار موارد در ابزارکهای تعاملی | { "actionResponse": { "type": "UPDATE_WIDGET", "updatedWidget": { "suggestions": { "items": ["..."] }, "widget": "widget_id" } } } برای کسب اطلاعات بیشتر، به افزودن منوی چندگزینهای مراجعه کنید. | { "action": { "modifyOperations": [{ "updateWidget": { "widgetId": "widget_id", "selectionInputWidgetSuggestions": { "suggestions": ["..."] } } }] } } برای کسب اطلاعات بیشتر، به جمعآوری و پردازش اطلاعات از کاربران Google Chat مراجعه کنید. |
مدیریت تعاملات کارت روی پیامهای ایجاد شده قبل از تبدیل
وقتی یک برنامه HTTP Google Chat را به یک افزونه Google Workspace تبدیل میکنید، تعاملات کارت روی پیامهای ایجاد شده قبل از تبدیل نیاز به مدیریت ویژه دارد. افزونههای Google Workspace از یک URL کامل HTTP برای action.function کارت استفاده میکنند، در حالی که برنامههای Google Chat ساخته شده با رویدادهای تعاملی Google Chat API از یک نام تابع استفاده میکنند. جدول زیر این تفاوتها را خلاصه میکند.
| برنامه گوگل چت با رویدادهای تعاملی API گوگل چت ساخته شده است | افزونهی Google Workspace که Google Chat را گسترش میدهد | |
|---|---|---|
| پیکربندی | شما یک نقطه پایانی واحد را برای همه رویدادها در کنسول Google Cloud پیکربندی میکنید. هنگام پیادهسازی تعاملات کارت، action یک کارت فقط شامل نام تابعی است که باید اجرا شود. نقطه پایانی HTTP مشترک برای رویدادهای کلیک کارت فراخوانی میشود.برای کسب اطلاعات بیشتر، به باز کردن کادر گفتگو (چت) مراجعه کنید. { "onClick": { "action": { "function": "submit" } } } | شما میتوانید به صورت اختیاری نقاط پایانی هر رویداد را در کنسول Google Cloud پیکربندی کنید، اما این شامل رویدادهای کلیک کارت نمیشود. هنگام پیادهسازی تعاملات کارت، action یک کارت باید حاوی URL کامل نقطه پایانی HTTP برای فراخوانی باشد. میتوانید برای هر دکمه یک نقطه پایانی HTTP منحصر به فرد تنظیم کنید، یا از یک نقطه پایانی مشترک استفاده کنید و اکشن را به عنوان پارامتر در action.parameters ارسال کنید.برای کسب اطلاعات بیشتر، به باز کردن یک کادر محاورهای (افزونهها) مراجعه کنید. { "onClick": { "action": { "function": "https://...", "parameters": [{ "key": "method", "value": "submit" }] } } } |
برای اطمینان از اینکه تعاملات کارت برای پیامهای ایجاد شده قبل از تبدیل، فعال هستند، یک URL تعامل کارت در صفحه پیکربندی Google Chat API پیکربندی کنید.
این URL فقط برای تعاملات روی پیامهایی که قبل از تبدیل برنامه شما ایجاد شدهاند، استفاده میشود. وقتی کاربری با یکی از این پیامها تعامل میکند، مقدار اصلی action.function به عنوان پارامتری به نام __action_method_name__ ارسال میشود.
مثال: کلیک روی کارت
اگر آدرس اینترنتی تعامل کارت را به صورت https://.../card-interaction-handler پیکربندی کرده باشید، و کاربر روی یک کارت در یک پیام تاریخی با اقدام زیر کلیک کند:
{
"onClick": {
"action": {
"function": "submit"
}
}
}
یک رویداد با فرمت زیر به آدرس اینترنتی تعامل کارت پیکربندی شده شما ارسال میشود:
{
"commonEventObject": {
"parameters": {
"__action_method_name__": "submit"
}
},
"chat": {
"buttonClickedPayload": { ... }
}
}
مثال: منوی چند انتخابی
اگر کاربری با یک منوی چند انتخابی با منبع داده خارجی تعامل داشته باشد:
{
"selectionInput": {
"name": "contacts",
"type": "MULTI_SELECT",
"externalDataSource": {
"function": "getContacts"
}
}
}
یک رویداد با فرمت زیر به آدرس اینترنتی تعامل کارت پیکربندی شده شما ارسال میشود:
{
"commonEventObject": {
"parameters": {
"__action_method_name__": "getContacts",
}
},
"chat": {
"widgetUpdatedPayload": { ... }
}
}
اگر گزینهی «استفاده از آدرس اینترنتی مشترک HTTP برای همه محرکها» را برای تریگرهای HTTP خود فعال کنید، URL مشترک برای رویدادهای کلیک دکمه نیز استفاده میشود.
درخواستهای مربوط به افزونههای HTTP Google Workspace که Chat را گسترش میدهند، تأیید کنید
برای برنامههای چت گوگل مبتنی بر HTTP، منطق تأیید اینکه درخواستها از گوگل سرچشمه میگیرند، هنگام تبدیل به افزونهی Google Workspace باید بهروزرسانی شود.
- رویداد تعامل API گوگل چت HTTP تأیید برنامه گوگل چت: درخواستهای گوگل چت را تأیید کنید
- تأیید HTTP افزونهی Google Workspace: تأیید درخواستهای گوگل
تفاوتهای کلیدی در تأیید درخواست عبارتند از:
| نوع برنامه | مخاطبان پشتیبانیشده | ایمیل حساب کاربری سرویس |
|---|---|---|
| برنامه گوگل چت با رویدادهای تعاملی API گوگل چت ساخته شده است | شماره پروژه | chat@system.gserviceaccount.com |
| افزونهی Google Workspace که گوگل چت را گسترش میدهد | فقط نقطه پایانی HTTP | ایمیل حساب کاربری خدمات به ازای هر پروژه |
ایمیل حساب سرویس منحصر به فرد برای افزونه Google Workspace شما را میتوانید در بخش افزونههای Convert to Google Workspace در صفحه پیکربندی Google Chat API در کنسول Google Cloud پیدا کنید.
برای تأیید درخواستها در افزونهی ارتقا یافتهی Google Workspace خود:
- اگر از توابع Cloud Run استفاده میکنید، نقش
roles/cloudfunctions.invokerرا به حساب سرویس per-addon اعطا کنید. به بخش «مجاز کردن دسترسی با IAM» مراجعه کنید. - کد تأیید توکن خود را بهروزرسانی کنید تا از ایمیل حساب سرویس افزونه Google Workspace برای تأیید امضای توکن Bearer استفاده کنید. به بخش اعتبارسنجی درخواستها از Google مراجعه کنید.