Notifikasi push

Action Anda dapat mengirimkan notifikasi kepada pengguna jika relevan, seperti mengirim pengingat saat batas waktu tugas sudah dekat.

Panduan ini menjelaskan cara menyiapkan notifikasi push untuk Action Anda.

Platform yang didukung

Notifikasi push tersedia di perangkat Android dan iOS (perangkat iOS harus menginstal aplikasi Asisten untuk menerima notifikasi push). Fitur tersebut saat ini tidak didukung di speaker, layar smart, atau platform lainnya yang diaktifkan dengan suara.

Prasyarat

Project Anda harus berisi setidaknya satu intent global yang dipanggil saat pengguna mengetuk notifikasi push yang diterima dari Asisten.

Mulai

Bagian berikut menjelaskan cara menyiapkan notifikasi push di Action Anda.

Membuat intent untuk memicu

Intent yang Anda buat di bagian ini akan memicu alur notifikasi. Untuk membuat untuk intent ini, ikuti langkah-langkah berikut:

  1. Buka Konsol Actions, lalu klik Kembangkan di menu atas.
  2. Klik Intent di menu kiri untuk meluaskan bagian tersebut.
  3. Klik di bagian bawah daftar dan masukkan nama untuk intent baru.
  4. Tekan Enter/Return untuk membuat intent baru.
  5. Tambahkan frasa pelatihan untuk memicu alur notifikasi. Contohnya antara lain:

    • Notify me
    • Send notifications
    • Subscribe to notifications
  6. Klik Simpan.

Transisi ke intent sistem

Untuk menyiapkan transisi ke scene sistem Notifications, ikuti langkah-langkah berikut:

  1. Di bagian Scenes di menu kiri, klik scene yang ingin Anda tambahi alur langganan notifikasi.
  2. Di bagian User intent penanganan pada scene, klik + untuk menambahkan pengendali intent baru.
  3. Di bagian Intent, pilih intent yang Anda buat di bagian sebelumnya.
  4. Di bagian Transition, pilih scene sistem Notifications.

  5. Klik Simpan.

Mengonfigurasi scene sistem

Untuk mengonfigurasi scene sistem Notifications, ikuti langkah-langkah berikut:

  1. Di bagian Scenes di menu kiri, pilih scene sistem Notifications yang baru.
  2. Di bagian Configure intent, klik Select intent.
  3. Di bagian Pilih intent, pilih intent yang ingin dicocokkan saat pengguna mengetuk notifikasi push.

  4. Untuk Sesuaikan dialog keikutsertaan, masukkan perintah yang ditampilkan kepada pengguna saat mereka diminta untuk berlangganan notifikasi push. Perintahnya berbentuk "Apakah tidak apa-apa jika saya mengirim notifikasi push untuk $prompt".

  5. Klik Simpan.

Mengonfigurasi keikutsertaan

Untuk mengonfigurasi keikutsertaan dalam notifikasi push, ikuti langkah-langkah berikut:

  1. Di bagian Scenes, pilih scene sistem Notifications.
  2. Di bagian Kondisi, pilih Jika pengguna mengatakan "ya".
  3. Aktifkan Call your webhook dan berikan nama pengendali peristiwa, seperti subscribe_to_notifications.
  4. Aktifkan Kirim perintah dan berikan perintah sederhana untuk memberi tahu pengguna bahwa mereka akan menerima notifikasi:

    candidates:
    - first simple:
      variants:
      - speech: 'Great, I'll send you notifications.'
    
  5. Di bagian Transisi, pilih Akhiri percakapan untuk mengakhiri percakapan setelah pengguna berlangganan notifikasi.

Mengonfigurasi ketidakikutsertaan

Untuk mengonfigurasi penonaktifan notifikasi push, ikuti langkah-langkah berikut:

  1. Di bagian Kondisi, pilih Jika pengguna mengatakan "tidak".
  2. Aktifkan Kirim perintah dan berikan perintah sederhana untuk memberi tahu pengguna bahwa mereka tidak akan menerima notifikasi:

    candidates:
    - first simple:
      variants:
      - speech: Okay, I won't send you notifications.
    
  3. Di bagian Transisi, pilih Akhiri percakapan untuk mengakhiri percakapan setelah pengguna memilih untuk tidak menerima notifikasi.

Konfigurasi webhook

Untuk mengonfigurasi webhook Anda, ikuti langkah-langkah berikut:

  1. Di webhook Anda, tambahkan pengendali intent untuk menyimpan 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.)
      }
    });
    

Kirim notifikasi

Notifikasi push dikirim ke pengguna menggunakan Actions API. Untuk menggunakan API ini, Anda perlu mengaktifkan API di project Google Cloud Anda serta menyiapkan dan mendownload kunci akun layanan JSON.

Anda kemudian dapat menggunakan library klien Google OAuth2 untuk menukar kunci akun layanan dengan token akses, dan menggunakan token tersebut untuk mengautentikasi permintaan ke Actions API.

Dapatkan kunci akun layanan

  1. Buka konsol Google API, lalu pilih project Anda dari menu dropdown Select a project.
  2. Klik Enable untuk mengaktifkan Actions API untuk project Anda.
  3. Buka halaman kredensial Konsol Google Cloud, lalu pilih project Anda dari menu dropdown Pilih project.
  4. Klik Create credentials > Akun layanan.
  5. Masukkan nama akun layanan, lalu klik Create.
  6. Dari dropdown Select a role, pilih Project > Pemilik.
  7. Klik Lanjutkan.
  8. Klik Create key untuk mendownload file JSON akun layanan.

Tukar kunci dengan token akses dan kirim notifikasi

Untuk mengirim notifikasi push melalui Actions API, Anda harus menukar kunci akun layanan dengan token akses. Sebaiknya gunakan library klien Google API untuk hal ini. Dalam seri cuplikan kode berikut, kami menggunakan library klien Node.js Google API.

  1. Instal library dan permintaan klien Google API:

    npm install googleapis request --save

  2. Gunakan kode berikut untuk mendapatkan token akses dari kunci akun layanan dan mengirim notifikasi 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));
      });
    });