Khắc phục lỗi và kích hoạt lại gói thuê bao Google Workspace

Trang này giải thích cách kích hoạt lại gói thuê bao bị tạm ngưng của Google Workspace bằng cách giải quyết hoặc khắc phục lỗi và gọi phương thức subscriptions.reactivate().

Các gói thuê bao của Google Workspace sẽ bị tạm ngưng bất cứ khi nào xảy ra lỗi khiến gói thuê bao không nhận được sự kiện. Ví dụ: một gói thuê bao sẽ bị tạm ngưng khi không tìm thấy tài nguyên đích hoặc điểm cuối thông báo của gói thuê bao đó. Sau khi khắc phục mọi lỗi về gói thuê bao, bạn có thể kích hoạt lại gói thuê bao đó để bắt đầu nhận lại sự kiện.

Bạn có thể tìm hiểu về gói thuê bao bị tạm ngưng theo các cách sau:

  • Ứng dụng của bạn nhận được một sự kiện trong vòng đời về việc tạm ngưng. Nếu gói thuê bao bị tạm ngưng do lỗi với điểm cuối, thì bạn có thể không nhận được sự kiện trong vòng đời.
  • Bạn sẽ sử dụng phương thức subscriptions.get() hoặc subscriptions.list() để xem trường state của gói thuê bao có được đặt thành SUSPENDED hay không.
  • Bạn sẽ được thông báo về lỗi gửi đến điểm cuối thông báo. Để tìm hiểu về cách theo dõi lỗi gửi thông báo cho các chủ đề trên Google Cloud Pub/Sub, hãy xem bài viết Xử lý lỗi thông báo.

Các gói thuê bao được kích hoạt lại sẽ giữ nguyên ngày hết hạn ban đầu. Để kéo dài thời gian hết hạn của gói thuê bao, hãy xem phần Cập nhật hoặc gia hạn gói thuê bao.

Apps Script

  • Một dự án Apps Script:
    • Sử dụng dự án của bạn trên Google Cloud thay vì dự án mặc định do Apps Script tạo tự động.
    • Đối với mọi phạm vi mà bạn đã thêm để định cấu hình màn hình xin phép bằng OAuth, bạn cũng phải thêm các phạm vi đó vào tệp appsscript.json trong dự án Apps Script. Ví dụ:
    • "oauthScopes": [
        "https://www.googleapis.com/auth/chat.messages.readonly"
      ]
          
    • Bật dịch vụ nâng cao của Google Workspace Events.

Python

  • Python 3.6 trở lên
  • Công cụ quản lý gói pip
  • Các thư viện ứng dụng mới nhất của Google dành cho Python. Để cài đặt hoặc cập nhật các công cụ này, hãy chạy lệnh sau trong giao diện dòng lệnh của bạn:
      pip3 install --upgrade google-api-python-client google-auth-oauthlib
      

Xác định và giải quyết lỗi

Để xác định lỗi của một gói thuê bao, hãy xem lại trường suspensionReason của gói thuê bao đó. Bạn có thể tìm thấy trường này khi nhận được sự kiện trong vòng đời về việc tạm ngưng, hoặc bằng cách sử dụng phương thức subscriptions.get() để xem xét tất cả các trường của gói thuê bao.

Bảng sau đây cho biết các lỗi có thể xảy ra với một gói thuê bao và cách khắc phục lỗi (nếu có thể). Nếu không thể khắc phục lỗi, bạn có thể xoá gói thuê bao hoặc chờ cho gói thuê bao hết hạn. API Sự kiện của Google Workspace sẽ tự động xoá các gói thuê bao đã hết hạn.

Lỗi Nội dung mô tả Cách giải quyết

USER_SCOPE_REVOKED

Người dùng cấp quyền đã thu hồi quyền truy cập một hoặc nhiều phạm vi OAuth cần thiết cho gói thuê bao. Lấy mã truy cập khác. Để biết thông tin chi tiết, hãy xem phần Lấy mã truy cập từ Máy chủ uỷ quyền của Google.

RESOURCE_DELETED

Tài nguyên đích cho gói thuê bao sẽ bị xoá. Nếu tài nguyên được khôi phục, hãy gọi phương thức reactivate(). Nếu không, bạn không cần làm gì cả vì bạn không thể kích hoạt lại gói thuê bao nếu không có tài nguyên đích ban đầu cho gói thuê bao đó.

USER_AUTHORIZATION_FAILURE

Người dùng được uỷ quyền không còn quyền truy cập vào tài nguyên cho gói thuê bao. Bạn không phải làm gì. Bạn không thể kích hoạt lại gói thuê bao vì người dùng đã uỷ quyền gói thuê bao không thể truy cập vào tài nguyên đích.

ENDPOINT_PERMISSION_DENIED

Ứng dụng Google Workspace không có quyền truy cập để gửi sự kiện đến điểm cuối thông báo của bạn. Cấp quyền truy cập vào tài khoản dịch vụ cho ứng dụng Google Workspace cung cấp sự kiện.

Đối với các sự kiện trong Google Chat, tài khoản dịch vụ là chat-api-push@system.gserviceaccount.com. Đối với các sự kiện trên Google Meet, tài khoản dịch vụ là meet-api-event-push@system.gserviceaccount.com.

Đối với các chủ đề Pub/Sub, hãy cấp vai trò Nhà xuất bản Pub/Sub (roles/pubsub.publisher) cho tài khoản dịch vụ.

ENDPOINT_NOT_FOUND

Không thể tìm thấy hoặc không có điểm cuối thông báo. Kiểm tra để đảm bảo rằng điểm cuối vẫn đang hoạt động. Để khắc phục sự cố về các chủ đề Pub/Sub, hãy xem Tài liệu khắc phục sự cố.

ENDPOINT_RESOURCE_EXHAUSTED

Điểm cuối của thông báo không nhận được sự kiện do không đủ hạn mức hoặc đã đạt đến giới hạn số lượng yêu cầu. Yêu cầu tăng hạn mức.

Kích hoạt lại gói thuê bao

Sau khi khắc phục lỗi khiến gói thuê bao bị tạm ngưng, bạn có thể sử dụng phương thức reactivate() để cho phép gói thuê bao nhận lại các sự kiện. Phương thức này sẽ kiểm tra để đảm bảo rằng tất cả các lỗi đã được giải quyết và thay đổi trường state của gói thuê bao từ SUSPENDED thành ACTIVE.

Cách kích hoạt lại gói thuê bao của Google Workspace:

Apps Script

  1. Trong dự án Apps Script, hãy tạo một tệp tập lệnh mới có tên là reactivateSubscription rồi thêm mã sau:

    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);
    }
    

    Thay thế các đoạn mã sau:

    • SUBSCRIPTION_ID: Mã của gói thuê bao. Để lấy mã nhận dạng, bạn có thể dùng bất kỳ cách nào sau đây:
      • Giá trị của trường uid.
      • Mã nhận dạng tên tài nguyên được thể hiện trong trường name. Ví dụ: nếu tên tài nguyên là subscriptions/subscription-123, hãy sử dụng subscription-123.
  2. Để kích hoạt lại gói thuê bao của Google Workspace, hãy chạy hàm reactivateSubscription trong dự án Apps Script.

Python

  1. Trong thư mục đang làm việc, hãy tạo một tệp có tên reactivate_subscription.py rồi thêm mã sau:

    """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('client_secrets.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)
    

    Thay thế các đoạn mã sau:

    • SCOPES: Một hoặc nhiều phạm vi OAuth hỗ trợ từng loại sự kiện cho gói thuê bao. Được định dạng dưới dạng một mảng chuỗi. Để liệt kê nhiều phạm vi, hãy phân tách bằng dấu phẩy. Ví dụ: 'https://www.googleapis.com/auth/chat.spaces.readonly', 'https://www.googleapis.com/auth/chat.memberships.readonly'.
    • SUBSCRIPTION_ID: Mã của gói thuê bao. Để lấy mã nhận dạng, bạn có thể dùng bất kỳ cách nào sau đây:
      • Giá trị của trường uid.
      • Mã nhận dạng tên tài nguyên được thể hiện trong trường name. Ví dụ: nếu tên tài nguyên là subscriptions/subscription-123, hãy sử dụng subscription-123.
  2. Trong thư mục đang làm việc, hãy đảm bảo rằng bạn đã lưu trữ thông tin đăng nhập của mã ứng dụng khách OAuth và đặt tên cho tệp là client_secrets.json. Mã mẫu sẽ sử dụng tệp JSON này để xác thực với Google Workspace và lấy thông tin đăng nhập của người dùng. Để biết hướng dẫn, hãy xem bài viết Tạo thông tin đăng nhập mã ứng dụng khách OAuth.

  3. Để kích hoạt lại gói thuê bao của Google Workspace, hãy chạy lệnh sau trong thiết bị đầu cuối của bạn:

    python3 reactivate_subscription.py
    
API Sự kiện của Google Workspace sẽ trả về một hoạt động diễn ra trong thời gian dài có chứa thực thể của tài nguyên Subscription.

Nếu yêu cầu không thành công, hãy xem phần sau đây để khắc phục các lỗi khác.

Khắc phục nhiều lỗi

Nếu bạn đã khắc phục lỗi khiến gói thuê bao bị tạm ngưng nhưng phương thức reactivate() không hoạt động, thì có thể một lỗi khác đã xảy ra sau khi gói thuê bao của bạn bị tạm ngưng.

Để xác định các lỗi khác, hãy xem lại kết quả của yêu cầu không thành công. Kết quả đầu ra chứa mọi lỗi vẫn còn tồn tại.

Khi gói thuê bao của bạn gặp nhiều lỗi, giá trị của trường suspensionReason luôn sử dụng lỗi ban đầu đã khiến gói thuê bao bị tạm ngưng.