Notificaciones push

Tu acción puede enviar notificaciones a los usuarios cuando sea relevante, como enviar un recordatorio cuando se acerque la fecha límite de una tarea.

En esta guía, se describe cómo configurar notificaciones push para tu acción.

Plataformas admitidas

Las notificaciones push están disponibles en dispositivos iOS y Android (los dispositivos iOS deben tener instalada la app del Asistente para recibir notificaciones push). Actualmente, no son compatibles con bocinas activadas por voz, pantallas inteligentes ni otras plataformas.

Requisitos previos

Tu proyecto debe contener al menos un intent global, que se invoca cuando el usuario presiona una notificación push que recibió de Asistente.

Primeros pasos

En las siguientes secciones, se describe cómo configurar las notificaciones push en tu acción.

Crea un intent para la activación

El intent que creas en esta sección activa el flujo de notificaciones. Para crear este intent, sigue estos pasos:

  1. Vaya a la Consola de Actions y, en el menú superior, haga clic en Develop.
  2. Haz clic en Intents, en el menú de la izquierda, para expandir la sección.
  3. Haz clic en en la parte inferior de la lista y, luego, ingresa un nombre para el intent nuevo.
  4. Presiona Enter/Return para crear el intent nuevo.
  5. Agrega frases de entrenamiento para activar el flujo de notificaciones. Por ejemplo:

    • Notify me
    • Send notifications
    • Subscribe to notifications
  6. Haz clic en Guardar.

Transición al intent del sistema

Para configurar la transición a la escena del sistema Notifications, sigue estos pasos:

  1. En la sección Escenas del menú de la izquierda, haz clic en la escena a la que quieras agregar el flujo de suscripción de notificaciones.
  2. En la sección User intent handle, haz clic en + para agregar un controlador de intents nuevo.
  3. En Intent, selecciona el intent que creaste en la sección anterior.
  4. En Transition, selecciona la escena del sistema Notifications.

  5. Haz clic en Guardar.

Cómo configurar la escena del sistema

Para configurar la escena del sistema Notifications, sigue estos pasos:

  1. En Scenes en el menú de la izquierda, selecciona la nueva escena del sistema Notificaciones.
  2. En la sección Configurar intent, haz clic en Seleccionar intent.
  3. En la sección Select intent, selecciona el intent con el que quieres que se detecte la coincidencia cuando un usuario presione una notificación push.

  4. En Personalizar mensaje de aceptación, ingresa un mensaje que se mostrará a los usuarios cuando se les solicite suscribirse a las notificaciones push. La solicitud es la siguiente: ¿Está bien si envío notificaciones push de $prompt?

  5. Haz clic en Guardar.

Configurar habilitación

Si deseas configurar la habilitación de las notificaciones push, sigue estos pasos:

  1. En Scenes, selecciona la escena del sistema Notificaciones.
  2. En Condiciones, seleccione Si el usuario dice "sí".
  3. Habilita Llamar a tu webhook y proporciona un nombre de controlador de eventos, como subscribe_to_notifications.
  4. Habilita Enviar mensajes y proporciona un mensaje sencillo para informar al usuario que recibirá notificaciones:

    candidates:
    - first simple:
      variants:
      - speech: 'Great, I'll send you notifications.'
    
  5. En Transición, selecciona Finalizar conversación para finalizar la conversación después de que un usuario se suscriba a las notificaciones.

Configurar inhabilitación

Para inhabilitar las notificaciones push, sigue estos pasos:

  1. En Condiciones, selecciona Si el usuario dice que "no".
  2. Habilita Enviar mensajes y proporciona un mensaje simple para informar al usuario que no se le enviarán notificaciones:

    candidates:
    - first simple:
      variants:
      - speech: Okay, I won't send you notifications.
    
  3. En Transición, selecciona Finalizar conversación para finalizar la conversación después de que el usuario inhabilita las notificaciones.

Configurar webhook

Para configurar tu webhook, sigue estos pasos:

  1. En tu webhook, agrega un controlador de intents para almacenar el updatesUserId:

    app.handle('subscribe_to_notifications', conv => {
      const intentName = '<name_of_intent_to_trigger>';
      const notificationsSlot = conv.session.params['NotificationSlot_${intentName}'];
      if(notificationsSlot.permissionStatus == 'PERMISSION_GRANTED') {
        const updateUserId = notificationsSlot.additionalUserData.updateUserId;
        // Store the user ID and the notification's target intent for later use.
        // (Use a database, like Firestore, for best practice.)
      }
    });
    

Envíe notificaciones

Las notificaciones push se envían a los usuarios mediante la API de Actions. Para usar esta API, debes activarla en tu proyecto de Google Cloud y configurar y descargar una clave de cuenta de servicio JSON.

Luego, puedes usar la biblioteca cliente de Google OAuth2 para intercambiar la clave de la cuenta de servicio por un token de acceso y usarlo para autenticar tus solicitudes a la API de Actions.

Obtener una clave de cuenta de servicio

  1. Ve a la Consola de API de Google y selecciona tu proyecto del menú desplegable Seleccionar un proyecto.
  2. Haz clic en Habilitar para habilitar la API de Actions en tu proyecto.
  3. Ve a la página de credenciales de la consola de Google Cloud y selecciona tu proyecto del menú desplegable Selecciona un proyecto.
  4. Haz clic en Crear credenciales > Cuenta de servicio.
  5. Ingresa un nombre de cuenta de servicio y haz clic en Crear.
  6. En el menú desplegable Seleccionar una función, selecciona Proyecto > Propietario.
  7. Haz clic en Continuar.
  8. Haz clic en Crear clave para descargar el archivo JSON de la cuenta de servicio.

Intercambia la clave por un token de acceso y envía una notificación

Para enviar notificaciones push a través de la API de Actions, debes intercambiar la clave de la cuenta de servicio por un token de acceso. Para ello, recomendamos utilizar una biblioteca cliente de las API de Google. En la siguiente serie de fragmentos de código, usamos la biblioteca cliente de Node.js de la API de Google.

  1. Instala la biblioteca cliente de la API de Google y solicita lo siguiente:

    npm install googleapis request --save

  2. Usa el siguiente código para obtener un token de acceso de la clave de cuenta de servicio y enviar una notificación push:

    // Use the Actions API to send a Google Assistant push notification.
    let client = auth.fromJSON(require('./service-account.json'));
    client.scopes = ['https://www.googleapis.com/auth/actions.fulfillment.conversation'];
    let notification = {
      userNotification: {
        title: 'Example notification title',
      },
      target: {
        userId: '<UPDATES_USER_ID>',
        intent: 'Notifications Intent',
      },
    };
    client.authorize((err, tokens) => {
      if (err) {
        throw new Error('Auth error: ${err}');
      }
      request.post('https://actions.googleapis.com/v2/conversations:send', {
        'auth': {
          'bearer': tokens.access_token,
        },
        'json': true,
        'body': {'customPushMessage': notification, 'isInSandbox': true},
      }, (err, httpResponse, body) => {
        if (err) {
          throw new Error('API request error: ${err}');
        }
        console.log('${httpResponse.statusCode}: ' + '${httpResponse.statusMessage}');
        console.log(JSON.stringify(body));
      });
    });