Push bildirimleri

İşleminiz uygun olduğunda kullanıcılara push bildirimleri gönderebilir (ör. bir görevin son tarihi yaklaştığında hatırlatıcı göndermek).

Bu kılavuzda, İşleminiz için push bildirimlerini nasıl ayarlayacağınız açıklanmaktadır.

Desteklenen yüzeyler

Push bildirimleri, Android ve iOS cihazlarda kullanılabilir (iOS cihazlarda push bildirimlerini almak için Asistan uygulaması yüklü olmalıdır). Sesle etkinleştirilen hoparlörlerde, akıllı ekranlarda veya diğer yüzeylerde şu anda desteklenmemektedir.

Ön koşullar

Projeniz, kullanıcı Asistan'dan alınan bir push bildirimine dokunduğunda çağrılan en az bir genel amaç içermelidir.

Başlayın

Aşağıdaki bölümlerde, İşleminizde push bildirimlerini nasıl ayarlayacağınız açıklanmaktadır.

Tetiklemek için amaç oluşturun

Bu bölümde oluşturduğunuz amaç, bildirim akışını tetikler. Bu niyeti oluşturmak için şu adımları izleyin:

  1. Actions Console'a gidin ve üst menüde Geliştir'i tıklayın.
  2. Bölümü genişletmek için soldaki menüde Niyetler'i tıklayın.
  3. Listenin en altındaki simgesini tıklayın ve yeni amaç için bir ad girin.
  4. Yeni amacı oluşturmak için Enter/Return tuşlarına basın.
  5. Bildirim akışını tetiklemek için eğitim ifadeleri ekleyin. Bu parçalardan bazıları:

    • Notify me
    • Send notifications
    • Subscribe to notifications
  6. Kaydet'i tıklayın.

Sistem amacına geçiş

Notifications sistem sahnesine geçişi ayarlamak için aşağıdaki adımları uygulayın:

  1. Soldaki menüde yer alan Sahneler bölümünde, bildirim aboneliği akışını eklemek istediğiniz sahneyi tıklayın.
  2. Sahnenin Kullanıcı amacı işleme bölümünde, yeni bir amaç işleyici eklemek için + simgesini tıklayın.
  3. Niyet altında, önceki bölümde oluşturduğunuz amacı seçin.
  4. Geçiş bölümünde, Bildirimler sistem sahnesini seçin.

  5. Kaydet'i tıklayın.

Sistem düzeni yapılandırın

Notifications sistem sahnesini yapılandırmak için aşağıdaki adımları uygulayın:

  1. Soldaki menüde yer alan Sahneler bölümünde, yeni Bildirimler sistem sahnesini seçin.
  2. Niyeti yapılandır bölümünde Niyet seç'i tıklayın.
  3. Amaç seçin bölümünde, kullanıcılar push bildirimine dokunduğunda eşleştirilmesini istediğiniz amacı seçin.

  4. Kaydolma istemini özelleştirme için push bildirimlerine abone olmaları istendiğinde kullanıcılara gösterilecek bir istem girin. İstem, "$prompt için push bildirimleri göndersem olur mu" biçimindedir.

  5. Kaydet'i tıklayın.

Kaydolmayı yapılandır

Push bildirimlerini etkinleştirmeyi yapılandırmak için aşağıdaki adımları uygulayın:

  1. Sahneler bölümünde, Bildirimler sistem sahnesini seçin.
  2. Koşullar bölümünde, Kullanıcı "evet" diyorsa'yı seçin.
  3. Webhook'unuzu çağırın'ı etkinleştirin ve subscribe_to_notifications gibi bir etkinlik işleyici adı girin.
  4. İstem gönder'i etkinleştirin ve kullanıcıya bildirim gönderileceğini belirten basit bir istem sağlayın:

    candidates:
    - first simple:
      variants:
      - speech: 'Great, I'll send you notifications.'
    
  5. Bir kullanıcı bildirimlere abone olduktan sonra görüşmeyi sonlandırmak için Geçiş bölümünde Görüşmeyi sonlandır'ı seçin.

Devre dışı bırakmayı yapılandırın

Push bildirimlerini devre dışı bırakmayı yapılandırmak için aşağıdaki adımları uygulayın:

  1. Koşullar bölümünde, Kullanıcı "hayır" diyorsa seçeneğini belirleyin.
  2. İstem gönder'i etkinleştirin ve kullanıcıya bildirim gönderilmeyeceğini bildirmek için basit bir istem sağlayın:

    candidates:
    - first simple:
      variants:
      - speech: Okay, I won't send you notifications.
    
  3. Kullanıcı bildirimleri devre dışı bırakmayı seçtiğinde görüşmeyi sonlandırmak için Geçiş bölümünde Görüşmeyi sonlandır'ı seçin.

Webhook'u yapılandırın

Webhook'unuzu yapılandırmak için aşağıdaki adımları uygulayın:

  1. Webhook'unuzda, updatesUserId depolamak için bir amaç işleyici ekleyin:

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

Bildirim gönder

Push bildirimleri, kullanıcılara Actions API'si kullanılarak gönderilir. Bu API'yi kullanmak için Google Cloud projenizde API'yi etkinleştirmeniz ve bir JSON hizmet hesabı anahtarı oluşturup indirmeniz gerekir.

Ardından, Google OAuth2 istemci kitaplığını kullanarak hizmet hesabı anahtarını erişim jetonuyla değiştirebilir ve bu jetonu Actions API'ye yönelik isteklerinizin kimliğini doğrulamak için kullanabilirsiniz.

Hizmet hesabı anahtarı alma

  1. Google API konsoluna gidin ve Proje seçin açılır menüsünden projenizi seçin.
  2. Projeniz için Actions API'yi etkinleştirmek üzere Etkinleştir'i tıklayın.
  3. Google Cloud Console kimlik bilgileri sayfasına gidin ve Proje seçin açılır menüsünden projenizi seçin.
  4. Kimlik bilgileri oluştur > Hizmet hesabı'nı tıklayın.
  5. Bir hizmet hesabı adı girip Oluştur'u tıklayın.
  6. Bir rol seçin açılır menüsünden Proje > Sahip'i seçin.
  7. Devam'ı tıklayın.
  8. Hizmet hesabı JSON dosyasını indirmek için Anahtar oluştur'u tıklayın.

Anahtarı bir erişim jetonuyla değiştirin ve bildirim gönderin

Actions API üzerinden push bildirimleri göndermek için hizmet hesabı anahtarını erişim jetonuyla değiştirmeniz gerekir. Bunun için Google API istemci kitaplığı kullanmanızı öneririz. Takip eden kod snippet'leri dizisinde Google API Node.js istemci kitaplığını kullanıyoruz.

  1. Google API istemci kitaplığını yükleyip isteyin:

    npm install googleapis request --save

  2. Hizmet hesabı anahtarından erişim jetonu almak ve push bildirimi göndermek için aşağıdaki kodu kullanın:

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