Notificaciones push

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

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

Superficies compatibles

Las notificaciones push están disponibles en dispositivos iOS y Android (los dispositivos iOS deben tener la app del Asistente instalada 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 recibida de Asistente.

Comenzar

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 ese intent, sigue estos pasos:

  1. Ve a la Consola de Actions y haz clic en Develop, en el menú 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 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 Scenes, en el 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 management 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 Transición, selecciona la escena del sistema Notificaciones.

  5. Haz clic en Guardar.

Configura 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 Notifications.
  2. En la sección Configurar intent (Configure intent), haz clic en Seleccionar intent (Select intent).
  3. En la sección Seleccionar intent, elige el intent con el que quieras que se detecte la coincidencia cuando un usuario presione una notificación push.

  4. En Personalizar mensaje de habilitación, ingresa un mensaje que se muestre a los usuarios cuando se les solicite que se suscriban a las notificaciones push. El mensaje tiene el formato "¿Está bien si envío notificaciones push de $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 Notifications.
  2. En Condiciones, selecciona Si el usuario dice "sí".
  3. Habilita Call your webhook y proporciona un nombre de controlador de eventos, como subscribe_to_notifications.
  4. Habilita Send prompts y proporciona un mensaje simple para informarle 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 la inhabilitación

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

  1. En Condiciones, selecciona Si el usuario dice "no".
  2. Habilita Send prompts y proporciona un mensaje simple para informarle 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 el usuario inhabilite las notificaciones.

Configura 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 que usan 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 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 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 de cuenta de servicio y haz clic en Crear.
  6. En el menú desplegable Seleccionar una función, elige 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 siguen, 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 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));
      });
    });