Notifikasi push

Action Anda dapat mengirim notifikasi kepada pengguna kapan pun 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 yang diaktifkan dengan suara, layar smart, atau platform lainnya.

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 intent ini, ikuti langkah-langkah berikut:

  1. Buka Actions console, lalu klik Develop di menu atas.
  2. Klik Intent di menu kiri untuk meluaskan bagian.
  3. Klik di bagian bawah daftar dan masukkan nama untuk intent baru.
  4. Tekan Enter/Return untuk membuat intent baru.
  5. Menambahkan 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 Scene di menu kiri, klik scene yang ingin Anda tambahi alur langganan notifikasi.
  2. Di bagian User intent management pada scene tersebut, 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 Scene di menu kiri, pilih scene sistem Notifications baru.
  2. Di bagian Configure intent, klik Select intent.
  3. Di bagian Select 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 berlangganan notifikasi push. Perintahnya dalam bentuk "Bolehkah saya mengirim notifikasi push untuk $prompt".

  5. Klik Simpan.

Konfigurasi keikutsertaan

Untuk mengonfigurasi ikut serta dalam notifikasi push, ikuti langkah-langkah berikut:

  1. Di bagian Scene, 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 dikirimi 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 pilihan tidak ikut

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 tidak menerima notifikasi.

Konfigurasi webhook

Untuk mengonfigurasi webhook, ikuti langkah-langkah berikut:

  1. Di webhook, 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 serta menyiapkan dan mendownload kunci akun layanan JSON.

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

Dapatkan kunci akun layanan

  1. Buka konsol API Google dan pilih project Anda dari dropdown Select a project.
  2. Klik Enable untuk mengaktifkan Actions API untuk project Anda.
  3. Buka halaman kredensial konsol Google Cloud dan pilih project Anda dari menu dropdown Select a project.
  4. Klik Create credentials > Service account.
  5. Masukkan nama akun layanan, lalu klik Buat.
  6. Dari menu drop-down Select a role, pilih Project > Owner.
  7. Klik Continue.
  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 perlu menukar kunci akun layanan dengan token akses. Sebaiknya gunakan library klien Google API untuk hal ini. Dalam rangkaian cuplikan kode berikut ini, kita menggunakan library klien Node.js Google API.

  1. Instal library klien dan permintaan 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));
      });
    });