Notifiche push

L'Azione può inviare notifiche push agli utenti ogni volta che è pertinente, ad esempio l'invio di un promemoria in prossimità della data di scadenza di un'attività.

Questa guida descrive come configurare le notifiche push per l'Azione.

Piattaforme supportate

Le notifiche push sono disponibili su dispositivi Android e iOS. Per ricevere le notifiche push, sui dispositivi iOS è necessario installare l'app dell'assistente. Al momento non sono supportati su speaker ad attivazione vocale, smart display o altre piattaforme.

Prerequisiti

Il progetto deve contenere almeno un intent globale, che viene richiamato quando l'utente tocca una notifica push ricevuta dall'assistente.

Inizia

Le seguenti sezioni descrivono come configurare le notifiche push nell'Azione.

Crea un intent per l'attivazione

L'intent creato in questa sezione attiva il flusso delle notifiche. Per creare questo intent, segui questi passaggi:

  1. Vai alla console di Actions e fai clic su Sviluppa nel menu in alto.
  2. Fai clic su Intent nel menu a sinistra per espandere la sezione.
  3. Fai clic sulla in fondo all'elenco e inserisci un nome per il nuovo intent.
  4. Premi Enter/Return per creare il nuovo intent.
  5. Aggiungi frasi di addestramento per attivare il flusso di notifiche. Ecco alcuni esempi:

    • Notify me
    • Send notifications
    • Subscribe to notifications
  6. Fai clic su Salva.

Transizione all'intent di sistema

Per configurare la transizione alla scena di sistema Notifications:

  1. In Scene nel menu a sinistra, fai clic sulla scena a cui vuoi aggiungere il flusso di iscrizione alle notifiche.
  2. Nella sezione Gestione intent utente della scena, fai clic su + per aggiungere un nuovo gestore di intent.
  3. In Intent, seleziona l'intent creato nella sezione precedente.
  4. In Transizione, seleziona la scena di sistema Notifiche.

  5. Fai clic su Salva.

Configura scena di sistema

Per configurare la scena di sistema Notifications:

  1. In Scene nel menu a sinistra, seleziona la nuova scena di sistema Notifiche.
  2. Nella sezione Configura intent, fai clic su Seleziona intent.
  3. Nella sezione Seleziona intent, seleziona l'intent a cui fare riferimento quando un utente tocca una notifica push.

  4. In Personalizza richiesta di attivazione, inserisci una richiesta che verrà mostrata agli utenti quando viene loro richiesto di iscriversi alle notifiche push. Il formato del prompt è "Is it ok if I send push notifications for $prompt" (va bene se invio notifiche push per $prompt).

  5. Fai clic su Salva.

Configura attivazione

Per configurare l'attivazione delle notifiche push:

  1. In Scene, seleziona la scena di sistema Notifiche.
  2. In Condizioni, seleziona Se l'utente dice "sì".
  3. Attiva l'opzione Chiama il tuo webhook e fornisci un nome per il gestore di eventi, ad esempio subscribe_to_notifications.
  4. Attiva l'opzione Invia richieste e fornisci un semplice messaggio per comunicare all'utente che riceverà le notifiche:

    candidates:
    - first simple:
      variants:
      - speech: 'Great, I'll send you notifications.'
    
  5. In Transizione, seleziona Termina conversazione per terminare la conversazione dopo che un utente si è iscritto alle notifiche.

Configura disattivazione

Per configurare la disattivazione delle notifiche push:

  1. In Condizioni, seleziona Se l'utente dice "no".
  2. Attiva l'opzione Invia richieste e fornisci un semplice messaggio per informare l'utente che non riceverà notifiche:

    candidates:
    - first simple:
      variants:
      - speech: Okay, I won't send you notifications.
    
  3. In Transizione, seleziona Termina conversazione per terminare la conversazione dopo che un utente ha disattivato le notifiche.

Configura webhook

Per configurare il webhook:

  1. Aggiungi un gestore di intent per archiviare updatesUserId nel webhook:

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

Invia notifiche

Le notifiche push vengono inviate agli utenti utilizzando l'API Actions. Per utilizzare questa API, devi attivarla nel tuo progetto Google Cloud e configurare e scaricare una chiave dell'account di servizio JSON.

Puoi quindi utilizzare la libreria client OAuth2 di Google per scambiare la chiave dell'account di servizio con un token di accesso e utilizzare il token per autenticare le tue richieste all'API Actions.

Generazione di una chiave dell'account di servizio

  1. Vai alla console API di Google e seleziona il progetto dal menu a discesa Seleziona un progetto.
  2. Fai clic su Abilita per abilitare l'API Actions per il tuo progetto.
  3. Vai alla pagina delle credenziali della console Google Cloud e seleziona il tuo progetto dal menu a discesa Seleziona un progetto.
  4. Fai clic su Crea credenziali > Account di servizio.
  5. Inserisci un nome per l'account di servizio e fai clic su Crea.
  6. Nel menu a discesa Seleziona un ruolo, scegli Progetto > Proprietario.
  7. Fai clic su Continua.
  8. Fai clic su Create key (Crea chiave) per scaricare il file JSON dell'account di servizio.

Scambia la chiave con un token di accesso e invia una notifica

Per inviare notifiche push tramite l'API Actions, devi scambiare la chiave dell'account di servizio con un token di accesso. A questo scopo, consigliamo di utilizzare una libreria client API di Google. Nella serie di snippet di codice che seguono, utilizziamo la libreria client Node.js dell'API di Google.

  1. Installa la libreria client dell'API di Google e richiedi:

    npm install googleapis request --save

  2. Usa il codice seguente per ottenere un token di accesso dalla chiave dell'account di servizio e inviare una notifica 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));
      });
    });