Risolvi gli errori e riattiva un abbonamento a Google Workspace

In questa pagina viene spiegato come riattivare un abbonamento a Google Workspace sospeso risolvendo gli errori o risolvendoli e chiamando il metodo subscriptions.reactivate().

Gli abbonamenti a Google Workspace vengono sospesi ogni volta che un errore impedisce all'abbonamento di ricevere eventi. Ad esempio, un abbonamento viene sospeso quando non è possibile trovare la risorsa di destinazione o l'endpoint di notifica. Dopo aver risolto gli eventuali errori dell'abbonamento, puoi riattivarlo per iniziare a ricevere di nuovo gli eventi.

Puoi trovare informazioni su un abbonamento sospeso nei seguenti modi:

  • L'app riceve un evento del ciclo di vita relativo alla sospensione. Se l'abbonamento viene sospeso a causa di un errore dell'endpoint, potresti non ricevere un evento del ciclo di vita.
  • Puoi utilizzare i metodi subscriptions.get() o subscriptions.list() per vedere se il campo state dell'abbonamento è impostato su SUSPENDED.
  • Ricevi una notifica relativa a un errore di recapito al tuo endpoint di notifica. Per scoprire di più sul monitoraggio degli errori di consegna negli argomenti Google Cloud Pub/Sub, consulta Gestire gli errori di consegna dei messaggi.

Gli abbonamenti riattivati mantengono la data di scadenza originale. Per estendere la scadenza di un abbonamento, consulta Aggiornare o rinnovare un abbonamento.

Apps Script

  • Un progetto Apps Script:
    • Utilizza il tuo progetto Google Cloud anziché quello predefinito creato automaticamente da Apps Script.
    • Per tutti gli ambiti che hai aggiunto per configurare la schermata per il consenso OAuth, devi aggiungere anche gli ambiti al file appsscript.json nel tuo progetto Apps Script. Ad esempio:
    • "oauthScopes": [
        "https://www.googleapis.com/auth/chat.messages.readonly"
      ]
          
    • Abilita il servizio avanzato Google Workspace Events.

Python

  • Python 3.6 o versioni successive
  • Lo strumento di gestione dei pacchetti pip
  • Le librerie client di Google più recenti per Python. Per installarli o aggiornarli, esegui questo comando nell'interfaccia a riga di comando:
      pip3 install --upgrade google-api-python-client google-auth-oauthlib
      

Identificare e risolvere gli errori

Per identificare l'errore relativo a un abbonamento, esamina il campo suspensionReason dell'abbonamento. Puoi trovare questo campo quando ricevi un evento del ciclo di vita relativo alla sospensione o utilizza il metodo subscriptions.get() per esaminare tutti i campi dell'abbonamento.

La tabella seguente mostra i possibili errori relativi a una sottoscrizione e, se possibile, mostra come risolverli. Se non riesci a risolvere l'errore, puoi eliminare l'abbonamento o attendere che scada. L'API Google Workspace Eventi elimina automaticamente gli abbonamenti scaduti.

Errore Descrizione Modi per risolvere il problema

USER_SCOPE_REVOKED

L'utente autorizzante ha revocato la concessione di uno o più ambiti OAuth richiesti per l'abbonamento. Richiedi un altro token di accesso. Per maggiori dettagli, consulta Ottenere un token di accesso dal server di autorizzazione di Google.

RESOURCE_DELETED

La risorsa di destinazione per la sottoscrizione è stata eliminata. Se la risorsa viene ripristinata, chiama il metodo reactivate(). In caso contrario, non è richiesta alcuna azione, poiché non puoi riattivare una sottoscrizione senza la risorsa di destinazione originale.

USER_AUTHORIZATION_FAILURE

L'utente che ha concesso l'autorizzazione non ha più accesso alla risorsa per l'abbonamento. Non occorre alcun intervento. Non puoi riattivare l'abbonamento, poiché l'utente che l'ha autorizzato non può accedere alla risorsa di destinazione.

ENDPOINT_PERMISSION_DENIED

L'applicazione Google Workspace non dispone dell'accesso per inviare eventi all'endpoint di notifica. Concedi l'accesso all'account di servizio per l'applicazione Google Workspace che pubblica eventi.

Per gli eventi di Google Chat, l'account di servizio è chat-api-push@system.gserviceaccount.com. Per gli eventi di Google Meet, l'account di servizio è meet-api-event-push@system.gserviceaccount.com.

Per gli argomenti Pub/Sub, concedi il ruolo Publisher Pub/Sub (roles/pubsub.publisher) all'account di servizio.

ENDPOINT_NOT_FOUND

L'endpoint di notifica non esiste o non è possibile trovarlo. Verifica che l'endpoint sia ancora attivo e funzionante. Per risolvere i problemi relativi agli argomenti Pub/Sub, consulta la documentazione per la risoluzione dei problemi.

ENDPOINT_RESOURCE_EXHAUSTED

L'endpoint di notifica non è riuscito a ricevere eventi a causa di una quota insufficiente o del raggiungimento di una limitazione di frequenza. Richiedi un aumento della quota.

Riattivare un abbonamento

Dopo aver risolto l'errore che ha causato la sospensione dell'abbonamento, puoi utilizzare il metodo reactivate() per consentire di nuovo all'abbonamento di ricevere eventi. Il metodo verifica che tutti gli errori siano stati risolti e modifica il campo state dell'abbonamento da SUSPENDED a ACTIVE.

Per riattivare un abbonamento a Google Workspace:

Apps Script

  1. Nel tuo progetto Apps Script, crea un nuovo file script denominato reactivateSubscription e aggiungi il seguente codice:

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

    Sostituisci quanto segue:

    • SUBSCRIPTION_ID: l'ID dell'abbonamento. Per ottenere l'ID, puoi utilizzare uno dei seguenti documenti:
      • Il valore del campo uid.
      • L'ID del nome della risorsa rappresentato nel campo name. Ad esempio, se il nome della risorsa è subscriptions/subscription-123, utilizza subscription-123.
  2. Per riattivare l'abbonamento a Google Workspace, esegui la funzione reactivateSubscription nel tuo progetto Apps Script.

Python

  1. Nella directory di lavoro, crea un file denominato reactivate_subscription.py e aggiungi il seguente codice:

    """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)
    

    Sostituisci quanto segue:

    • SCOPES: uno o più ambiti OAuth che supportano ogni tipo di evento per l'abbonamento. Formattato come array di stringhe. Per elencare più ambiti, separali con virgole. Ad esempio: 'https://www.googleapis.com/auth/chat.spaces.readonly', 'https://www.googleapis.com/auth/chat.memberships.readonly'.
    • SUBSCRIPTION_ID: l'ID dell'abbonamento. Per ottenere l'ID, puoi utilizzare uno dei seguenti documenti:
      • Il valore del campo uid.
      • L'ID del nome della risorsa rappresentato nel campo name. Ad esempio, se il nome della risorsa è subscriptions/subscription-123, utilizza subscription-123.
  2. Nella directory di lavoro, assicurati di aver archiviato le credenziali dell'ID client OAuth e denominato client_secrets.json. L'esempio di codice utilizza questo file JSON per eseguire l'autenticazione con Google Workspace e ottenere le credenziali utente. Per le istruzioni, consulta la pagina Creare le credenziali dell'ID client OAuth.

  3. Per riattivare l'abbonamento a Google Workspace, esegui questo comando nel tuo terminale:

    python3 reactivate_subscription.py
    
L'API Google Workspace Eventi restituisce un'operazione a lunga esecuzione che contiene l'istanza della risorsa Subscription.

Se la richiesta non va a buon fine, consulta la sezione seguente per risolvere altri errori.

Risolvere più errori

Se hai risolto l'errore che causava la sospensione dell'abbonamento e il metodo reactivate() non va a buon fine, è possibile che si sia verificato un altro errore dopo la sospensione dell'abbonamento.

Per identificare altri errori, esamina l'output della richiesta non riuscita. L'output contiene eventuali errori ancora presenti.

Se l'abbonamento contiene più errori, il valore del campo suspensionReason utilizza sempre l'errore originale che ha sospeso l'abbonamento.