این صفحه نحوه فعالسازی مجدد اشتراک معلقشده Google Workspace را با حل یا عیبیابی خطاها و فراخوانی متد subscriptions.reactivate توضیح میدهد.
اشتراکهای Google Workspace هر زمان که خطایی مانع از دریافت رویدادها توسط اشتراک شود، به حالت تعلیق در میآیند. برای مثال، یک اشتراک زمانی به حالت تعلیق در میآید که منبع هدف یا نقطه پایانی اعلان آن پیدا نشود. پس از رفع هرگونه خطای مربوط به اشتراک، میتوانید اشتراک را دوباره فعال کنید تا دوباره شروع به دریافت رویدادها کنید.
از روشهای زیر درباره اشتراک معلقشده اطلاعات کسب کنید:
- برنامه شما یک رویداد چرخه حیات در مورد تعلیق دریافت میکند. اگر اشتراک شما به دلیل خطایی در نقطه پایانی آن به حالت تعلیق درآمده باشد، ممکن است رویداد چرخه حیات را دریافت نکنید.
- برای بررسی اینکه آیا فیلد
stateاشتراک رویSUSPENDEDتنظیم شده است یا خیر، از متدهایsubscriptions.getیاsubscriptions.listاستفاده کنید. - شما از عدم موفقیت در تحویل به نقطه پایانی اعلان خود مطلع شدهاید. برای کسب اطلاعات بیشتر در مورد نظارت بر عدم موفقیت در تحویل به مباحث Google Cloud Pub/Sub، به بخش مدیریت شکستهای پیام مراجعه کنید.
اشتراکهای دوباره فعالشده، تاریخ انقضای اصلی را حفظ میکنند. برای تمدید زمان انقضای اشتراک، به بهروزرسانی یا تمدید اشتراک Google Workspace مراجعه کنید.
اسکریپت برنامهها
- اشتراک Google Workspace. برای ایجاد آن، به «ایجاد اشتراک» مراجعه کنید.
- یک پروژه اسکریپت برنامهها:
- به جای پروژه پیشفرضی که به طور خودکار توسط Apps Script ایجاد شده است، از پروژه Google Cloud خود استفاده کنید.
- برای تمام محدودههایی که برای پیکربندی صفحه رضایت OAuth اضافه کردهاید، باید محدودهها را به فایل
appsscript.jsonدر پروژه Apps Script خود نیز اضافه کنید. برای مثال، اگر محدودهchat.messagesرا مشخص کردهاید، موارد زیر را اضافه کنید: - سرویس پیشرفته
Google Workspace Eventsرا فعال کنید .
"oauthScopes": [ "https://www.googleapis.com/auth/chat.messages" ]
برای هر نوع رویداد در اشتراک، احراز هویت و محدوده مجوز مناسب لازم است:
- برای احراز هویت کاربر، به یک یا چند محدوده نیاز است که حداقل از یکی از انواع رویدادهای اشتراک پشتیبانی کنند. برای شناسایی یک محدوده، به بخش محدودهها بر اساس نوع رویداد مراجعه کنید.
- برای عضویت در یک رویداد چت به عنوان یک برنامه چت، نیاز به احراز هویت برنامه با تأیید یکباره مدیر است.
پایتون
- پایتون ۳.۶ یا بالاتر
- ابزار مدیریت بسته pip
- جدیدترین کتابخانههای کلاینت گوگل برای پایتون. برای نصب یا بهروزرسانی آنها، دستور زیر را در رابط خط فرمان خود اجرا کنید:
pip3 install --upgrade google-api-python-client google-auth-oauthlib
- اشتراک Google Workspace. برای ایجاد آن، به «ایجاد اشتراک» مراجعه کنید.
برای هر نوع رویداد در اشتراک، احراز هویت و محدوده مجوز مناسب لازم است:
- برای احراز هویت کاربر، به یک یا چند محدوده نیاز است که حداقل از یکی از انواع رویدادهای اشتراک پشتیبانی کنند. برای شناسایی یک محدوده، به بخش محدودهها بر اساس نوع رویداد مراجعه کنید.
- برای عضویت در یک رویداد چت به عنوان یک برنامه چت، نیاز به احراز هویت برنامه با تأیید یکباره مدیر است.
شناسایی و رفع خطاها
برای شناسایی خطای مربوط به یک اشتراک، فیلد suspensionReason مربوط به اشتراک را بررسی کنید. میتوانید این فیلد را هنگام دریافت یک رویداد چرخه عمر در مورد تعلیق ، یا با استفاده از متد subscriptions.get برای بررسی تمام فیلدهای مربوط به اشتراک، پیدا کنید.
جدول زیر خطاهای احتمالی مربوط به یک اشتراک و در صورت امکان، نحوه رفع خطاها را نشان میدهد. اگر نمیتوانید خطا را برطرف کنید، میتوانید اشتراک را حذف کنید یا منتظر بمانید تا منقضی شود. API رویدادهای Google Workspace اشتراکهای منقضی شده را به طور خودکار حذف میکند.
| خطا | توضیحات | راههای حل و فصل |
|---|---|---|
| کاربر مجاز، اعطای یک یا چند محدوده OAuth مورد نیاز برای اشتراک را لغو کرده است. | Obtain another access token. For details, see Obtain an access token from the Google Authorization Server . |
| منبع هدف برای اشتراک حذف شده است. | اگر منبع بازیابی شده باشد، متد reactivate را فراخوانی کنید. در غیر این صورت، هیچ اقدامی لازم نیست، زیرا نمیتوانید اشتراک را بدون منبع هدف اصلی آن دوباره فعال کنید. |
| کاربر مجاز دیگر به منبع مربوط به اشتراک دسترسی ندارد. | هیچ اقدامی لازم نیست. شما نمیتوانید اشتراک را دوباره فعال کنید، زیرا کاربری که آن را مجاز کرده است نمیتواند به منبع هدف دسترسی پیدا کند. |
| برنامه Google Workspace دسترسی لازم برای ارسال رویدادها به نقطه پایانی اعلان شما را ندارد. | به حساب سرویس برنامه Google Workspace که رویدادها را ارائه میدهد، دسترسی بدهید. حسابهای خدماتی:
For Pub/Sub topics, grant the role of Pub/Sub Publisher ( roles/pubsub.publisher) to the service account. |
| نقطه پایانی اعلان وجود ندارد یا نمیتوان آن را پیدا کرد. | بررسی کنید که نقطه پایانی هنوز فعال و در حال کار باشد. برای عیبیابی موضوعات Pub/Sub، به مستندات عیبیابی مراجعه کنید. |
| به دلیل سهمیه ناکافی یا رسیدن به محدودیت سرعت، نقطه پایانی اعلان نتوانست رویدادها را دریافت کند. | درخواست افزایش سهمیه. |
| مدیر دامنه، اعطای یک یا چند محدوده OAuth را برای برنامه چت لغو کرده است. | دریافت تاییدیه مدیر . |
| برنامهی چتی که ایجاد اشتراک را مجاز کرده بود، دیگر به منبع هدف اشتراک دسترسی ندارد. | دسترسی مجدد به منبع هدف. برای مثال، اگر منبع هدف یک فضای چت باشد، ممکن است برنامه چت به عضویت در آن فضا نیاز داشته باشد. |
فعالسازی مجدد اشتراک
پس از اینکه خطایی که اشتراک شما را به حالت تعلیق درآورده بود برطرف کردید، از متد reactivate برای دریافت مجدد رویدادها توسط اشتراک استفاده کنید. این متد بررسی میکند که آیا همه خطاها برطرف شدهاند یا خیر و فیلد state اشتراک شما را از SUSPENDED به ACTIVE تغییر میدهد.
برای فعالسازی مجدد اشتراک Google Workspace:
اسکریپت برنامهها
در پروژه Apps Script خود، یک فایل اسکریپت جدید با نام
reactivateSubscriptionایجاد کنید و کد زیر را به آن اضافه کنید:function reactivateSubscription() { // The name of the subscription to reactivate. const name = 'subscriptions/SUBSCRIPTION_ID'; // Call the Workspace Events API using the advanced service. const response = WorkspaceEvents.Subscriptions.reactivate({}, name); console.log(response); }موارد زیر را جایگزین کنید:
برای فعالسازی مجدد اشتراک Google Workspace، تابع
reactivateSubscriptionرا در پروژه Apps Script خود اجرا کنید.
پایتون
در دایرکتوری کاری خود، فایلی با نام
reactivate_subscription.pyایجاد کنید و کد زیر را به آن اضافه کنید:"""Reactivate subscription.""" from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build # Specify required scopes. SCOPES = [SCOPES] # Authenticate with Google Workspace and get user authentication. flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES) CREDENTIALS = flow.run_local_server() # Call the Workspace Events API using the service endpoint. service = build( 'workspaceevents', 'v1', credentials=CREDENTIALS, ) NAME = 'subscriptions/SUBSCRIPTION_ID' response = service.subscriptions().reactivate(name=NAME).execute() print(response)موارد زیر را جایگزین کنید:
-
SCOPES: یک یا چند محدودهی OAuth که از هر نوع رویداد برای اشتراک پشتیبانی میکنند. به صورت آرایهای از رشتهها قالببندی شده است. برای فهرست کردن چندین محدوده، آنها را با کاما از هم جدا کنید. به عنوان مثال،'https://www.googleapis.com/auth/chat.spaces.readonly', 'https://www.googleapis.com/auth/chat.memberships.readonly'. -
SUBSCRIPTION_ID: شناسه اشتراک. برای دریافت شناسه، میتوانید از هر یک از موارد زیر استفاده کنید:
-
در دایرکتوری کاری خود، مطمئن شوید که اعتبارنامههای شناسه کلاینت OAuth خود را ذخیره کرده و فایل را با نام
credentials.jsonنامگذاری کردهاید. نمونه کد از این فایل JSON برای احراز هویت با Google Workspace و دریافت اعتبارنامههای کاربر استفاده میکند. برای دستورالعملها، به Create OAuth client ID credentials مراجعه کنید.برای فعالسازی مجدد اشتراک Google Workspace، دستور زیر را در ترمینال خود اجرا کنید:
python3 reactivate_subscription.py
Subscription است.اگر درخواست ناموفق بود، برای عیبیابی خطاهای اضافی به بخش زیر مراجعه کنید.
فعالسازی مجدد اشتراک به عنوان یک برنامه چت
شما میتوانید اشتراک در رویدادهای چت را به عنوان یک برنامه چت به جای یک کاربر دوباره فعال کنید. روند کار مشابه است، با این تفاوت که:
به جای احراز هویت کاربر، به عنوان یک برنامه چت با تأیید یکباره مدیر، احراز هویت کنید .
محدودههای مجوزدهی را مشخص کنید که به برنامه چت اجازه میدهد در رویدادهای چت مشترک شود. این محدودههای مجوزدهی همیشه با
chat.appشروع میشوند و شامل موارد زیر هستند:-
https://www.googleapis.com/auth/chat.app.memberships: در رویدادهای اعضای فضای چت مشترک شوید. -
https://www.googleapis.com/auth/chat.app.memberships.readonly: در رویدادهای اعضای فضای چت مشترک شوید. -
https://www.googleapis.com/auth/chat.app.messages.readonly: در رویدادهای پیام و واکنش فضای چت مشترک شوید. -
https://www.googleapis.com/auth/chat.app.spaces: در رویدادهای فضای چت مشترک شوید. -
https://www.googleapis.com/auth/chat.app.spaces.readonly: در رویدادهای فضای چت مشترک شوید.
-
اسکریپتی بنویسید که API رویدادهای Google Workspace را فراخوانی کند
نمونه کد زیر اشتراک Google Workspace یک برنامه چت را دوباره فعال میکند:
پایتون
"""Reactivate subscription."""
from google.oauth2 import service_account
from apiclient.discovery import build
# Specify required scopes.
SCOPES = [SCOPES]
# Specify service account details.
CREDENTIALS = (
service_account.Credentials.from_service_account_file('credentials.json')
.with_scopes(SCOPES)
)
# Call the Workspace Events API using the service endpoint.
service = build(
'workspaceevents',
'v1beta',
credentials=CREDENTIALS,
)
NAME = 'subscriptions/SUBSCRIPTION_ID'
response = service.subscriptions().reactivate(name=NAME).execute()
print(response)
موارد زیر را جایگزین کنید:
SCOPES: محدودههای مجوزدهی را مشخص کنید که به برنامه چت اجازه میدهد در رویدادهای چت مشترک شود. این محدودههای مجوزدهی همیشه باchat.appشروع میشوند و شامل موارد زیر هستند:-
https://www.googleapis.com/auth/chat.app.memberships: در رویدادهای اعضای فضای چت مشترک شوید. -
https://www.googleapis.com/auth/chat.app.memberships.readonly: در رویدادهای اعضای فضای چت مشترک شوید. -
https://www.googleapis.com/auth/chat.app.messages.readonly: در رویدادهای پیام و واکنش فضای چت مشترک شوید. -
https://www.googleapis.com/auth/chat.app.spaces: در رویدادهای فضای چت مشترک شوید. -
https://www.googleapis.com/auth/chat.app.spaces.readonly: در رویدادهای فضای چت مشترک شوید.
-
SUBSCRIPTION_ID: شناسه اشتراک. برای دریافت شناسه، میتوانید از هر یک از موارد زیر استفاده کنید:
عیب یابی خطاهای متعدد
اگر خطایی که اشتراک را به حالت تعلیق درآورده بود برطرف کردید و روش reactivate با شکست مواجه شد، ممکن است خطای دیگری پس از تعلیق اشتراک شما رخ داده باشد.
برای شناسایی خطاهای بیشتر، خروجی درخواست ناموفق را بررسی کنید. خروجی شامل هرگونه خطایی است که هنوز وجود دارد.
وقتی اشتراک شما چندین خطا داشته باشد، مقدار فیلد suspensionReason همیشه از خطای اصلی که اشتراک شما را به حالت تعلیق درآورده است، استفاده میکند.