Push bildirimleri

İşleminiz uygun olduğunda kullanıcılara bildirimler gönderebilir. Örneğin, bir görevin son tarihi yaklaştığında hatırlatıcı gönderebilir.

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

Desteklenen yüzeyler

Push bildirimlerini Android ve iOS cihazlarda kullanabilirsiniz (iOS cihazlarda push bildirimleri alabilmek için Asistan uygulamasının yüklü olması gerekir). Sesle etkinleştirilen hoparlörlerde, akıllı ekranlarda veya diğer yüzeylerde şu an için desteklenmemektedir.

Ön koşullar

Projeniz, kullanıcı Asistan'dan gelen 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.

Tetikleme için amaç oluşturun

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

  1. İşlemler konsoluna gidin ve üst menüden Geliştir'i tıklayın.
  2. Bölümü genişletmek için soldaki menüden Niyetler'i tıklayın.
  3. Listenin altındaki simgesini tıklayın ve yeni amaç için bir ad girin.
  4. Yeni niyeti 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 şu adımları uygulayın:

  1. Soldaki menüde bulunan Sahneler bölümünde, bildirim aboneliği akışını eklemek istediğiniz sahneyi tıklayın.
  2. Yeni bir amaç işleyici eklemek için sahnenin Kullanıcı amacı işleme bölümünde + 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 sahnesini yapılandırın

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

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

  4. Etkinleştirme istemini özelleştir alanına, push bildirimlerine abone olmaları istenen kullanıcılara gösterilecek bir istem girin. İstem, "$prompt için push bildirimleri gönderirsem sorun olur mu?" biçimindedir.

  5. Kaydet'i tıklayın.

Kaydolma seçeneğini yapılandırın

Push bildirimlerini etkinleştirme seçeneğini 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" derse seçeneğini belirleyin.
  3. Webhook'unuzu arama özelliğini etkinleştirin ve subscribe_to_notifications gibi bir etkinlik işleyici adı sağlayın.
  4. İstemleri gönder'i etkinleştirin ve kullanıcıya bildirim gönderileceğini bildirmek için basit bir istem ekleyin:

    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

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" derse seçeneğini belirleyin.
  2. İstemleri gönder'i etkinleştirin ve kullanıcıya bildirim gönderilmeyeceğini basit bir istemle belirtin:

    candidates:
    - first simple:
      variants:
      - speech: Okay, I won't send you notifications.
    
  3. Bir kullanıcı bildirimleri devre dışı bıraktıktan sonra 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

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

  1. Webhook'unuzda, updatesUserId öğesini depolamak için bir intent 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 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, hizmet hesabı anahtarını bir erişim jetonuyla değiştirmek için Google OAuth2 istemci kitaplığını kullanabilir ve Actions API'ye yönelik isteklerinizin kimliğini doğrulamak için jetonu kullanabilirsiniz.

Hizmet hesabı anahtarı al

  1. Google API konsoluna gidin ve Proje seçin açılır menüsünden projenizi seçin.
  2. Projenizde Actions API'yi etkinleştirmek için Etkinleştir'i tıklayın.
  3. Google Cloud Console kimlik bilgileri sayfasına gidin ve Proje seçin açılır listesinden projenizi seçin.
  4. Kimlik bilgileri oluştur > Hizmet hesabı.
  5. Bir hizmet hesabı adı girin ve Create'i (Oluştur) tıklayın.
  6. Rol seçin açılır listesinden Proje > Sahibi.
  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. İzleyen kod snippet'i dizisinde, Google API Node.js istemci kitaplığını kullanacağız.

  1. Google API istemci kitaplığını yükleyin ve şunları 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));
      });
    });