Устраните ошибки и повторно активируйте подписку на Google Workspace.

На этой странице объясняется, как повторно активировать приостановленную подписку Google Workspace, устранив ошибки и вызвав метод subscriptions.reactivate .

Подписки Google Workspace приостанавливаются, если ошибка препятствует получению событий. Например, подписка приостанавливается, если не удается найти целевой ресурс или конечную точку уведомлений. После устранения всех ошибок в подписке вы можете повторно активировать ее, чтобы снова начать получать события.

Узнать о приостановленной подписке можно следующими способами:

  • Ваше приложение получает событие жизненного цикла, связанное с приостановкой подписки. Если ваша подписка приостановлена ​​из-за ошибки в конечной точке, вы можете не получить событие жизненного цикла.
  • Используйте методы subscriptions.get или subscriptions.list , чтобы проверить, установлено ли поле state подписки в значение SUSPENDED .
  • Вы получили уведомление о сбое доставки сообщения в вашу точку уведомлений. Чтобы узнать больше о мониторинге сбоев доставки сообщений в темы Google Cloud Pub/Sub, см. раздел «Обработка сбоев сообщений» .

При повторном включении подписки сохраняется первоначальная дата истечения срока действия. Чтобы продлить срок действия подписки, см. раздел «Обновление или продление подписки Google Workspace» .

Apps Script

  • Проект на Apps Script:
    • Используйте свой проект Google Cloud вместо проекта, автоматически создаваемого Apps Script по умолчанию.
    • Для всех областей действия (scopes), которые вы добавили для настройки экрана согласия OAuth, необходимо также добавить эти области в файл appsscript.json в вашем проекте Apps Script. Например, если вы указали область действия chat.messages , добавьте следующее:
    • "oauthScopes": [
        "https://www.googleapis.com/auth/chat.messages"
      ]
          
    • Включите расширенную службу « Google Workspace Events .

Python

  • Python 3.6 или выше
  • Инструмент управления пакетами pip
  • Новейшие клиентские библиотеки Google для Python. Для их установки или обновления выполните следующую команду в командной строке:
      pip3 install --upgrade google-api-python-client google-auth-oauthlib
      

Выявление и устранение ошибок

Чтобы определить причину ошибки в подписке, проверьте поле suspensionReason этой подписки. Вы можете найти это поле, получив событие жизненного цикла, связанное с приостановкой , или используя метод subscriptions.get для просмотра всех полей подписки.

В следующей таблице показаны возможные ошибки, связанные с подпиской, и, если это возможно, способы их устранения. Если вы не можете устранить ошибку, вы можете удалить подписку или дождаться истечения ее срока действия. API событий Google Workspace автоматически удаляет просроченные подписки.

Ошибка Описание Способы решения

USER_SCOPE_REVOKED

Пользователь, предоставивший авторизацию, отозвал разрешение на использование одной или нескольких областей действия OAuth, необходимых для подписки. Получите еще один токен доступа. Подробнее см. раздел «Получение токена доступа от сервера авторизации Google» .

RESOURCE_DELETED

Целевой ресурс для подписки удален. Если ресурс восстановлен, вызовите метод reactivate . В противном случае никаких действий не требуется, поскольку невозможно повторно активировать подписку без исходного целевого ресурса.

USER_AUTHORIZATION_FAILURE

Пользователь, предоставивший авторизацию, больше не имеет доступа к ресурсу, указанному в подписке. Никаких действий не требуется. Вы не можете повторно активировать подписку, поскольку пользователь, который её авторизовал, не имеет доступа к целевому ресурсу.

ENDPOINT_PERMISSION_DENIED

Приложение Google Workspace не имеет доступа к доставке событий на вашу точку уведомлений. Предоставьте доступ к учетной записи службы для приложения Google Workspace, которое осуществляет доставку событий.

Служебные аккаунты:
  • События Google Chat : chat-api-push@system.gserviceaccount.com
  • События Google Drive : drive-api-event-push@system.gserviceaccount.com
  • События Google Meet : meet-api-event-push@system.gserviceaccount.com

Для тем Pub/Sub предоставьте учетной записи службы роль издателя Pub/Sub ( roles/pubsub.publisher) .

ENDPOINT_NOT_FOUND

Точка доступа для уведомлений не существует или не может быть найдена. Убедитесь, что конечная точка по-прежнему активна и работает. Для устранения неполадок в темах Pub/Sub см. документацию по устранению неполадок .

ENDPOINT_RESOURCE_EXHAUSTED

Точка уведомлений не смогла получить события из-за недостаточной квоты или достижения лимита скорости. Запросить увеличение квоты.

APP_SCOPE_REVOKED

Администратор домена отозвал разрешение на использование одной или нескольких областей действия OAuth для приложения «Чат». Получите одобрение администратора .

APP_AUTHORIZATION_FAILURE

Приложение чата, авторизовавшее создание подписки, больше не имеет доступа к целевому ресурсу подписки. Восстановите доступ к целевому ресурсу. Например, если целевой ресурс — это пространство чата, приложению чата может потребоваться членство в этом пространстве.

Возобновить подписку

После устранения ошибки, приостановившей вашу подписку, используйте метод reactivate , чтобы возобновить получение событий подпиской. Метод проверяет, устранены ли все ошибки, и изменяет поле state вашей подписки с SUSPENDED на ACTIVE .

Чтобы повторно активировать подписку Google Workspace:

Apps Script

  1. В проекте 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);
    }
    

    Замените следующее:

    • SUBSCRIPTION_ID : Идентификатор подписки. Чтобы получить идентификатор, можно использовать любой из следующих способов:
      • Значение поля uid .
      • Идентификатор имени ресурса, представленного в поле name . Например, если имя ресурса — subscriptions/subscription-123 , используйте subscription-123 .
  2. Чтобы повторно активировать подписку Google Workspace, запустите функцию reactivateSubscription в вашем проекте Apps Script.

Python

  1. В рабочей директории создайте файл с именем 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 : Идентификатор подписки. Чтобы получить идентификатор, можно использовать любой из следующих способов:
      • Значение поля uid .
      • Идентификатор имени ресурса, представленного в поле name . Например, если имя ресурса — subscriptions/subscription-123 , используйте subscription-123 .
  2. В рабочей директории убедитесь, что вы сохранили учетные данные клиента OAuth и назвали файл credentials.json . В примере кода этот JSON-файл используется для аутентификации в Google Workspace и получения учетных данных пользователя. Инструкции см. в разделе «Создание учетных данных клиента OAuth» .

  3. Для повторной активации подписки Google Workspace выполните в терминале следующую команду:

    python3 reactivate_subscription.py
API событий Google Workspace возвращает длительную операцию , содержащую экземпляр ресурса Subscription .

Если запрос не удался, обратитесь к следующему разделу для устранения дополнительных ошибок.

Возобновите подписку в качестве приложения для чата.

Вы можете повторно активировать подписку на события чата как приложение чата, а не как пользователь. Процесс аналогичен, за исключением следующего:

  1. Вместо аутентификации пользователя используйте аутентификацию в качестве приложения чата с одноразовым подтверждением администратора .

  2. Укажите области авторизации, которые позволяют приложению «Чат» подписываться на события чата. Эти области авторизации всегда начинаются с 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 для приложения чата:

Python

  """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 : Идентификатор подписки. Чтобы получить идентификатор, можно использовать любой из следующих способов:

    • Значение поля uid .
    • Идентификатор имени ресурса, представленного в поле name . Например, если имя ресурса — subscriptions/subscription-123 , используйте subscription-123 .

Устранение множественных ошибок

Если вы устранили ошибку, приведшую к приостановке подписки, и метод reactivate не сработал, возможно, после приостановки подписки возникла другая ошибка.

Для выявления дополнительных ошибок просмотрите вывод неудачного запроса. В выводе будут указаны все ошибки, которые все еще присутствуют.

Если в вашей подписке возникает несколько ошибок, значение поля suspensionReason всегда будет использовать исходную ошибку, которая привела к приостановке вашей подписки.