Notificaciones push

Tu acción puede enviar notificaciones push a los usuarios cuando sea relevante, por ejemplo, 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 compatibles

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). Por el momento, 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.

Comenzar

En las siguientes secciones, se describe cómo configurar 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. Ve a la Consola de Actions y haz clic en Develop, en el menú de la parte superior.
  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 nuevo intent.
  4. Presiona Enter/Return para crear el intent nuevo.
  5. Agregar 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 Scenes, en el menú de la izquierda, haz clic en la escena a la que quieres agregar el flujo de suscripción a las notificaciones.
  2. En la sección Manejo de intents de usuario de la escena, haz clic en + para agregar un nuevo controlador de intents.
  3. En Intent, selecciona el intent que creaste en la sección anterior.
  4. En Transition, selecciona la escena del sistema Notificaciones.

  5. Haz clic en Guardar.

Configura la escena del sistema

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

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

  4. En Personalizar mensaje de aceptación, ingresa un mensaje que se muestre a los usuarios cuando se les pida que se suscriban a las notificaciones push. El mensaje tiene la forma de "Is it ok if I send push notifications for $prompt".

  5. Haz clic en Guardar.

Configurar la habilitación

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

  1. En Scenes, selecciona la escena del sistema Notificaciones.
  2. En Condiciones, selecciona Si el usuario dice "sí".
  3. Habilita la opción Call your webhook y proporciona un nombre de controlador de eventos, como subscribe_to_notifications.
  4. Habilita la opción Send prompts 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 el rechazo

Para configurar la inhabilitación de las notificaciones push, sigue estos pasos:

  1. En Condiciones, selecciona Si el usuario dice "no".
  2. Habilita la opción Send prompts y proporciona un mensaje sencillo para indicarle al usuario que no recibirá 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 un usuario inhabilite las notificaciones.

Configura el 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 a través de 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 OAuth2 de Google para intercambiar la clave de la cuenta de servicio por un token de acceso y usar el token para autenticar tus solicitudes a la API de Actions.

Obtener una clave de cuenta de servicio

  1. Ve a la consola de la API de Google y selecciona tu proyecto en el 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 en el menú desplegable Seleccionar un proyecto.
  4. Haz clic en Crear credenciales > Cuenta de servicio.
  5. Ingresa un nombre para la cuenta de servicio y haz clic en Crear.
  6. En el menú desplegable Selecciona un rol, 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. Recomendamos usar una biblioteca cliente de la API de Google para esto. En la serie de fragmentos de código que aparece a continuación, 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 la cuenta de servicio y envía 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));
      });
    });