Resuelve errores y reactiva una suscripción a Google Workspace

En esta página, se explica cómo reactivar una suscripción suspendida a Google Workspace mediante la resolución o la solución de errores y una llamada al método subscriptions.reactivate().

Las suscripciones a Google Workspace se suspenden cada vez que un error impide que la suscripción reciba eventos. Por ejemplo, una suscripción se suspende cuando no se puede encontrar su recurso de destino o extremo de notificación. Después de resolver los errores de la suscripción, puedes reactivarla para comenzar a recibir eventos nuevamente.

Puedes obtener más información sobre una suscripción suspendida de las siguientes maneras:

  • Tu app recibe un evento de ciclo de vida sobre la suspensión. Si tu suscripción está suspendida debido a un error con su extremo, es posible que no recibas un evento de ciclo de vida.
  • Usa los métodos subscriptions.get() o subscriptions.list() para ver si el campo state de la suscripción está configurado como SUSPENDED.
  • Recibes una notificación sobre un error de entrega al extremo de notificaciones. Para obtener información sobre cómo supervisar las fallas de entrega en temas de Google Cloud Pub/Sub, consulta Soluciona los problemas de los mensajes.

Las suscripciones reactivadas mantienen la fecha de vencimiento original. Para extender el tiempo de vencimiento de una suscripción, consulta Cómo actualizar o renovar una suscripción.

Apps Script

  • Un proyecto de Apps Script:
    • Usa tu proyecto de Google Cloud en lugar del predeterminado que Apps Script crea automáticamente.
    • Si agregaste permisos para configurar la pantalla de consentimiento de OAuth, también debes agregarlos al archivo appsscript.json en tu proyecto de Apps Script. Por ejemplo:
    • "oauthScopes": [
        "https://www.googleapis.com/auth/chat.messages.readonly"
      ]
          
    • Habilita el servicio avanzado Google Workspace Events.

Python

  • Python 3.6 o superior
  • La herramienta de administración de paquetes pip
  • Las bibliotecas cliente de Google más recientes para Python. Para instalarlos o actualizarlos, ejecuta el siguiente comando en tu interfaz de línea de comandos:
      pip3 install --upgrade google-api-python-client google-auth-oauthlib
      

Identifica y resuelve errores

Para identificar el error de una suscripción, revisa el campo suspensionReason de la suscripción. Puedes encontrar este campo cuando recibes un evento de ciclo de vida sobre la suspensión o con el método subscriptions.get() para revisar todos los campos de la suscripción.

En la siguiente tabla, se muestran los posibles errores de una suscripción y, cuando sea posible, cómo resolverlos. Si no puedes resolver el error, puedes borrar la suscripción o esperar a que venza. La API de Google Workspace Events borra automáticamente las suscripciones vencidas.

Error Descripción Formas de resolverlo

USER_SCOPE_REVOKED

El usuario que autoriza revocó el otorgamiento de uno o más permisos de OAuth que se requieren para la suscripción. Obtén otro token de acceso. Para obtener más información, consulta Cómo obtener un token de acceso del servidor de autorización de Google.

RESOURCE_DELETED

Se borrará el recurso de destino para la suscripción. Si se restablece el recurso, llama al método reactivate(). De lo contrario, no se requiere ninguna acción, ya que no puedes reactivar una suscripción sin su recurso de destino original.

USER_AUTHORIZATION_FAILURE

El usuario que autoriza el acceso ya no tiene acceso al recurso de la suscripción. No se requiere ninguna acción. No puedes reactivar la suscripción, ya que el usuario que la autorizó no puede acceder al recurso de destino.

ENDPOINT_PERMISSION_DENIED

La aplicación de Google Workspace no tiene acceso para entregar eventos al extremo de notificación. Otorga acceso a la cuenta de servicio para la aplicación de Google Workspace que entrega eventos.

Para los eventos de Google Chat, la cuenta de servicio es chat-api-push@system.gserviceaccount.com. Para los eventos de Google Meet, la cuenta de servicio es meet-api-event-push@system.gserviceaccount.com.

Para los temas de Pub/Sub, otorga la función de Publicador de Pub/Sub (roles/pubsub.publisher) a la cuenta de servicio.

ENDPOINT_NOT_FOUND

El extremo de notificación no existe o no se puede encontrar. Verifica que el extremo aún esté activo y en funcionamiento. Para solucionar problemas de temas de Pub/Sub, consulta la documentación de solución de problemas.

ENDPOINT_RESOURCE_EXHAUSTED

El extremo de notificación no pudo recibir eventos debido a que la cuota era insuficiente o que alcanzó el límite de frecuencia. Solicita un aumento de la cuota.

Cómo reactivar una suscripción

Una vez que resuelvas el error que suspendió la suscripción, puedes usar el método reactivate() para permitir que la suscripción vuelva a recibir eventos. El método verifica que se hayan resuelto todos los errores y cambia el campo state de la suscripción de SUSPENDED a ACTIVE.

Para reactivar una suscripción a Google Workspace, sigue estos pasos:

Apps Script

  1. En tu proyecto de Apps Script, crea un nuevo archivo de secuencia de comandos llamado reactivateSubscription y agrega el siguiente código:

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

    Reemplaza lo siguiente:

    • SUBSCRIPTION_ID: Es el ID de la suscripción. Para obtener el ID, puedes usar cualquiera de las siguientes opciones:
      • El valor del campo uid.
      • El ID del nombre del recurso representado en el campo name. Por ejemplo, si el nombre del recurso es subscriptions/subscription-123, usa subscription-123.
  2. Para reactivar la suscripción a Google Workspace, ejecuta la función reactivateSubscription en tu proyecto de Apps Script.

Python

  1. En tu directorio de trabajo, crea un archivo llamado reactivate_subscription.py y agrega el siguiente código:

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

    Reemplaza lo siguiente:

    • SCOPES: Uno o más permisos de OAuth que admiten cada tipo de evento para la suscripción. Tiene el formato de un array de cadenas. Para enumerar varios permisos, sepáralos con comas. Por ejemplo, 'https://www.googleapis.com/auth/chat.spaces.readonly', 'https://www.googleapis.com/auth/chat.memberships.readonly'.
    • SUBSCRIPTION_ID: Es el ID de la suscripción. Para obtener el ID, puedes usar cualquiera de las siguientes opciones:
      • El valor del campo uid.
      • El ID del nombre del recurso representado en el campo name. Por ejemplo, si el nombre del recurso es subscriptions/subscription-123, usa subscription-123.
  2. En el directorio de trabajo, asegúrate de haber almacenado las credenciales de tu ID de cliente de OAuth y de haber asignado el nombre client_secrets.json al archivo. En la muestra de código, se usa este archivo JSON para autenticarse con Google Workspace y obtener credenciales de usuario. Para obtener instrucciones, consulta Cómo crear credenciales de ID de cliente de OAuth.

  3. Para reactivar la suscripción a Google Workspace, ejecuta lo siguiente en tu terminal:

    python3 reactivate_subscription.py
    
La API de Google Workspace Events muestra una operación de larga duración que contiene la instancia del recurso Subscription.

Si la solicitud falla, consulta la siguiente sección para solucionar errores adicionales.

Cómo solucionar varios errores

Si resolviste el error que suspendió la suscripción y falla el método reactivate(), es posible que se haya producido otro error después de que se suspendió la suscripción.

Para identificar errores adicionales, revisa el resultado de la solicitud con errores. El resultado contiene los errores que aún están presentes.

Cuando tu suscripción tiene varios errores, el valor del campo suspensionReason siempre usa el error original que suspendió la suscripción.