Pembaruan harian (Dialogflow)

Pengguna berlangganan update harian Action di ponselnya

Jika Action Anda memberikan nilai kepada pengguna setiap hari, beri pengguna pengingat untuk menggunakannya dengan mengkonfigurasi pembaruan harian. Saat pengguna berlangganan harian pembaruan untuk Action Anda, mereka akan menerima notifikasi push yang dapat ketuk untuk memanggil salah satu intent Action Anda.

Pengalaman pengguna terkait pembaruan ini adalah sebagai berikut:

  1. Pengguna memanggil salah satu intent Action yang telah Anda konfigurasi sebagai pembaruan harian.
  2. Pengguna mengikuti permintaan untuk berlangganan info terbaru harian. Prompt ini merupakan diberikan di tengah percakapan atau sebagai chip saran saat percakapan berakhir.
  3. Pengguna menjadwalkan waktu yang mereka inginkan untuk menerima laporan harian Anda {i>update<i}, mendaftarkan pembaruan Anda dengan Asisten Google.
  4. Pada waktu yang dijadwalkan setiap hari, pengguna akan menerima Asisten notifikasi di perangkat seluler mereka.
  5. Ketika pengguna membuka notifikasi ini, mereka memanggil intent yang telah Anda dikonfigurasi sebagai update harian dan berinteraksi dengan Action Anda.

Secara default, dialog pendaftaran update harian muncul sebagai chip saran saat pengguna berhasil keluar dari Action Anda. Anda juga bisa menambahkan tambahkan kolom di tengah percakapan konfirmasi pendaftaran atau personalisasi pembaruan pengguna.

Kasus penggunaan

Info terbaru harian bisa menjadi alat interaksi yang berguna, tetapi seharusnya tidak digabungkan dalam setiap Tindakan. Pertimbangkan kiat-kiat ini saat memutuskan apakah akan menambahkan langganan update harian ke Action:

  • Pastikan pembaruan harian akan membuat pengguna melihat tampilan yang berbeda dan bermanfaat informasi sehari-hari. Jika mengetuk update harian menampilkan dialog yang sama setiap saat, pengguna mungkin akan berhenti berlangganan setelah beberapa hari.
  • Pastikan dialog Anda masuk akal bagi pengguna jika mereka langsung menuju ke intent update harian. Pengguna Anda belum tentu memulai dari awal percakapan, jadi mereka seharusnya tidak diharapkan memiliki banyak konteks.
  • Tunjukkan manfaat Action Anda kepada pengguna sebelum meminta mereka untuk mendaftar untuk mendapatkan info terbaru harian. Pengguna Anda harus berpikir, "Saya ingin konten ini setiap hari" saat mereka diberi opsi untuk berlangganan.
  • Jangan membanjiri pengguna dengan saran berulang untuk mendaftar. Tawarkan langganan pembaruan harian tepat setelah menunjukkan kepada pengguna apa yang akan mereka berlangganan dan menghindari pengulangan penawaran dalam konteks lain.
  • Buat percakapan tetap singkat setelah intent update dipicu. Paling sering setiap hari pembaruan hanya boleh terdiri dari satu respons lalu ditutup tanpa memerlukan input pengguna.

Siapkan pembaruan harian

Jelajahi di Dialogflow

Klik Continue untuk mengimpor contoh Update harian di Dialogflow. Kemudian, ikuti langkah-langkah di bawah ini untuk men-deploy dan menguji contoh:

  1. Masukkan nama agen dan buat agen Dialogflow baru untuk contoh.
  2. Setelah agen selesai diimpor, klik Go to agent.
  3. Dari menu navigasi utama, buka Fulfillment.
  4. Aktifkan Inline Editor, lalu klik Deploy. Editor berisi contoh tersebut pada kode sumber.
  5. Dari menu navigasi utama, buka Integrations, lalu klik Google Asisten.
  6. Di jendela modal yang muncul, aktifkan Pratinjau perubahan secara otomatis, lalu klik Uji untuk membuka simulator Actions.
  7. Dalam simulator, masukkan Talk to my test app untuk menguji sampel.
Lanjutkan

Untuk mengonfigurasi salah satu intent Action Anda untuk update harian, ikuti berikut petunjuk:

1. Menyiapkan intent update

Mengonfigurasi salah satu intent Action Anda sebagai intent pemicu. Intent ini memungkinkan pembaruan harian dikirim ke pengguna; saat pengguna membuka update harian mereka notifikasi, pemicu intent, dan percakapan berlanjut dari sana.

Untuk menentukan intent pemicu di Dialogflow, lakukan hal berikut:

  1. Di Dialogflow Console, klik Integrasi.
  2. Di bagian Google Assistant, klik Integration Settings.
  3. Di bagian Penemuan > Pemanggilan implisit, klik Tambahkan intent dan pilih intent pemicu jika belum ada.
  4. Aktifkan perubahan Pratinjau otomatis jika belum diaktifkan.
  5. Klik Tutup.

Di Actions SDK, definisikan intent pembaruan Anda sebagai intent pemicu di Paket Action.

2. Aktifkan update

Guna mengaktifkan update harian untuk intent pemicu Anda, lakukan hal berikut:

  1. Di Konsol Actions, buka Develop > Tindakan.
  2. Pilih intent pemicu. Jika intent Anda tidak muncul dalam daftar, pastikan sudah dikonfigurasi sebagai intent pemicu dan Asisten Dialogflow integrasi disetel ke pratinjau perubahan otomatis.
  3. Scroll ke bawah ke bagian Engagement pengguna, lalu aktifkan Apakah Anda ingin menawarkan info terbaru harian kepada pengguna.
  4. Masukkan Judul konten.
  5. Klik Simpan.

Anda kini telah mengonfigurasi Action untuk menawarkan langganan update harian untuk intent. Sekarang Anda dapat menguji pembaruan harian di perangkat seluler Anda sendiri.

Menyesuaikan pendaftaran update (opsional)

Selain chip saran dan info harian yang ditangani Asisten alur pendaftaran, membuat pengguna berlangganan pembaruan harian dengan dialog pendaftaran dan dialog Anda sendiri.

Untuk contoh lengkap dari {i>Action <i}yang menangani fitur update harian opsional, lihat contoh interaksi pengguna Actions on Google (Node.js dan Java).

Untuk menambahkan dialog pendaftaran pembaruan harian khusus ke percakapan, ikuti petunjuk berikut:

1. Tambahkan dialog pendaftaran

Tambahkan dialog dan chip saran ke percakapan saat Anda ingin memberikan perintah pengguna untuk berlangganan {i>update<i} harian. Tawarkan perintah ini setelah pengguna berinteraksi dengan maksud memperbarui, sehingga mereka memahami isi harian Anda pembaruan.

Kode contoh berikut meminta pengguna untuk berlangganan pembaruan harian yang menawarkan suhu yang diperkirakan terendah setiap hari:

Node.js
app.intent('Daily Lowest Temperature', (conv, params) => {
  const today = DAYS[new Date().getDay()];
  const lowestTemperature = lowestTemperatures[today];
  conv.ask(`The lowest temperature for today is ${lowestTemperature}`);
  conv.ask('I can send you daily updates with the lowest temperature' +
    ' of the day. Would you like that?');
  conv.ask(new Suggestions('Send daily updates'));
});
Java
@ForIntent("Daily Lowest Temperature")
public ActionResponse dailyLowestTemperature(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  Integer lowestTemperature =
      LOWEST_TEMPERATURES.get(LocalDate.now().getDayOfWeek());
  responseBuilder
      .add("The lowest temperature for today is " +  lowestTemperature + " degrees Fahrenheit.")
      .add("I can send you daily updates with the lowest temperature of " +
          "the day. Would you like that?")
      .addSuggestions(new String[] {
          "Send daily updates"
      });
  return responseBuilder.build();
}
JSON Dialogflow

Perlu diperhatikan bahwa JSON di bawah mendeskripsikan respons webhook.

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "The lowest temperature for today is 75 degrees Fahrenheit"
            }
          },
          {
            "simpleResponse": {
              "textToSpeech": "I can send you daily updates with the lowest temperature of the day. Would you like that?"
            }
          }
        ],
        "suggestions": [
          {
            "title": "Send daily updates"
          }
        ]
      }
    }
  }
}
JSON Actions SDK

Perlu diperhatikan bahwa JSON di bawah mendeskripsikan respons webhook.

{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "possibleIntents": [
        {
          "intent": "actions.intent.TEXT"
        }
      ],
      "inputPrompt": {
        "richInitialPrompt": {
          "items": [
            {
              "simpleResponse": {
                "textToSpeech": "The lowest temperature for today is 75 degrees Fahrenheit"
              }
            },
            {
              "simpleResponse": {
                "textToSpeech": "I can send you daily updates with the lowest temperature of the day. Would you like that?"
              }
            }
          ],
          "suggestions": [
            {
              "title": "Send daily updates"
            }
          ]
        }
      }
    }
  ]
}

2. Menangani pendaftaran update

Menyiapkan intent baru yang terpicu saat pengguna mengikuti pendaftaran Anda . Dalam fulfillment untuk intent baru ini, picu actions_intent_CONFIGURE_UPDATES intent bawaan dengan parameter berikut:

  • intent - Tetapkan ke intent update yang Anda konfigurasi.
  • frequency - Tetapkan ke "Daily".

Kode berikut mendaftarkan update harian untuk "Suhu Terendah Harian" intent:

Node.js Dialogflow
app.intent('Subscribe to Daily Updates', (conv) => {
  conv.ask(new RegisterUpdate({
    intent: 'Daily Lowest Temperature',
    frequency: 'DAILY',
  }));
});
Node.js Actions SDK
conv.ask(new RegisterUpdate({
  intent: 'Daily Lowest Temperature',
  frequency: 'DAILY',
}));
Java Dialogflow
@ForIntent("Subscribe to Daily Updates")
public ActionResponse subscribeToDailyUpdates(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  return responseBuilder.add(new RegisterUpdate()
      .setIntent("Daily Lowest Temperature")
      .setFrequency("DAILY"))
      .build();
}
Java Actions SDK
ResponseBuilder responseBuilder = getResponseBuilder(request);
return responseBuilder.add(new RegisterUpdate()
    .setIntent("Daily Lowest Temperature")
    .setFrequency("DAILY"))
    .build();
JSON Dialogflow
{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "systemIntent": {
        "intent": "actions.intent.REGISTER_UPDATE",
        "data": {
          "@type": "type.googleapis.com/google.actions.v2.RegisterUpdateValueSpec",
          "intent": "Daily Lowest Temperature",
          "triggerContext": {
            "timeContext": {
              "frequency": "DAILY"
            }
          }
        }
      }
    }
  }
}
JSON Actions SDK
{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "possibleIntents": [
        {
          "intent": "actions.intent.REGISTER_UPDATE",
          "inputValueData": {
            "@type": "type.googleapis.com/google.actions.v2.RegisterUpdateValueSpec",
            "intent": "Daily Lowest Temperature",
            "triggerContext": {
              "timeContext": {
                "frequency": "DAILY"
              }
            }
          }
        }
      ]
    }
  ]
}

3. Menangani hasil

Asisten akan mengambil alih percakapan Anda dan memandu pengguna melalui konfigurasi update hariannya yang lain. Ketika pendaftaran selesai, Asisten memicu intent dengan parameter yang menunjukkan apakah apakah pendaftaran berhasil atau tidak.

Petunjuk untuk langkah ini berbeda-beda bergantung pada apakah Anda menggunakan Dialogflow atau Actions SDK untuk pengembangan.

Dialogflow

Ikuti langkah-langkah berikut untuk membuat intent yang menangani hasil pendaftaran:

  1. Di konsol Dialogflow, membuat intent baru.
  2. Tambahkan peristiwa actions_intent_REGISTER_UPDATE.
  3. Aktifkan fulfillment webhook untuk intent.
  4. Klik Simpan.
Dalam fulfillment Anda untuk intent, periksa registered untuk mendapatkan hasil, dan lakukan perubahan kreatif pada percakapan tersebut.
Node.js Dialogflow
app.intent('Confirm Daily Updates Subscription', (conv, params, registered) => {
  if (registered && registered.status === 'OK') {
    conv.close(`Ok, I'll start giving you daily updates.`);
  } else {
    conv.close(`Ok, I won't give you daily updates.`);
  }
});
Java Dialogflow
@ForIntent("Confirm Daily Updates Subscription")
public ActionResponse confirmDailyUpdatesSubscription(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  if (request.isUpdateRegistered()) {
    responseBuilder.add("Ok, I'll start giving you daily updates.");
  } else {
    responseBuilder.add("Ok, I won't give you daily updates.");
  }
  return responseBuilder.endConversation().build();
}
JSON Dialogflow
{
  "payload": {
    "google": {
      "expectUserResponse": false,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "Ok, I'll start giving you daily updates."
            }
          }
        ]
      }
    }
  }
}
SDK Actions

Dalam kode fulfillment Anda, tambahkan penanganan untuk actions.intent.REGISTER.UPDATE intent bawaan. Periksa parameter registered untuk hasilnya, dan menyesuaikan percakapan.

Node.js Actions SDK
app.intent('actions.intent.REGISTER_UPDATE', (conv, params, registered) => {
  if (registered && registered.status === 'OK') {
    conv.close(`Ok, I'll start giving you daily updates.`);
  } else {
    conv.close(`Ok, I won't give you daily updates.`);
  }
});
Java Actions SDK
@ForIntent("actions.intent.REGISTER_UPDATE")
public ActionResponse confirmDailyUpdatesSubscription(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  if (request.isUpdateRegistered()) {
    responseBuilder.add("Ok, I'll start giving you daily updates.");
  } else {
    responseBuilder.add("Ok, I won't give you daily updates.");
  }
  return responseBuilder.endConversation().build();
}
JSON Actions SDK
{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "simpleResponse": {
            "textToSpeech": "Ok, I'll start giving you daily updates."
          }
        }
      ]
    }
  }
}

Personalisasi update (opsional)

Untuk mempersonalisasi intent update Anda, tambahkan parameter kustom saat pengguna mendaftar pembaruan harian. Saat Anda memenuhi intent update, referensikan parameter ini untuk menyesuaikan pembaruan harian bagi pengguna tersebut.

Petunjuk untuk fitur ini berbeda-beda bergantung pada apakah Anda menggunakan Dialogflow atau Actions SDK untuk pengembangan.

Dialogflow

Tentukan entity Dialogflow untuk menangani parameter kustom untuk update, lalu menyerahkan nilai parameter sebagai argumen untuk intent update Anda. Untuk menyiapkan update yang dipersonalisasi di Dialogflow, lakukan langkah-langkah berikut:

  1. Pada konsol Dialogflow, buat entity baru.
  2. Tambahkan beberapa entri dan sinonim yang relevan untuk parameter Anda.
  3. Klik Save, lalu buka intent pembaruan Anda.
  4. Di bagian Tindakan dan parameter, tetapkan actions.intent.CONFIGURE_UPDATES sebagai peristiwa. Di bagian yang sama, tambahkan parameter dengan jenis yang sama seperti entity baru.
  5. Buka "update pendaftaran" intent yang menangani intent bawaan CONFIGURE_UPDATES.
  6. Di bagian Tindakan dan parameter, tambahkan parameter wajib dan tetapkan jenisnya ke entity yang dibuat sebelumnya.
  7. Perbarui kode fulfillment intent pendaftaran Anda untuk menyertakan objek arguments dengan konten berikut:
    • name - Nama parameter Anda seperti yang dikonfigurasi di Dialogflow.
    • textValue - Nilai parameter Anda.

Kode berikut membaca nilai parameter dan menggunakannya dalam permintaan pendaftaran pembaruan:

Node.js Dialogflow
app.intent('setup_update', (conv) => {
  conv.ask(new RegisterUpdate({
    intent: 'update_of_the_day',
    arguments: [
      {
        name: 'category',
        textValue: 'Daily_lowest_temperature',
      },
    ],
    frequency: 'DAILY',
  }));
});
Java Dialogflow
@ForIntent("setup_update")
public ActionResponse setupUpdate2(ActionRequest request) {
  List<Argument> args =
      Arrays.asList(
          new Argument()
              .setName("category")
              .setTextValue(request.getParameter("category").toString()));
  return getResponseBuilder(request)
      .add(new RegisterUpdate().setIntent("intent_name").setArguments(args).setFrequency("DAILY"))
      .build();
}
JSON Dialogflow
{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "PLACEHOLDER"
            }
          }
        ]
      },
      "userStorage": "{\"data\":{}}",
      "systemIntent": {
        "intent": "actions.intent.REGISTER_UPDATE",
        "data": {
          "@type": "type.googleapis.com/google.actions.v2.RegisterUpdateValueSpec",
          "intent": "update_of_the_day",
          "arguments": [
            {
              "name": "category",
              "textValue": "Daily_lowest_temperature"
            }
          ],
          "triggerContext": {
            "timeContext": {
              "frequency": "DAILY"
            }
          }
        }
      }
    }
  },
  "outputContexts": [
    {
      "name": "/contexts/_actions_on_google",
      "lifespanCount": 99,
      "parameters": {
        "data": "{}"
      }
    }
  ]
}
SDK Actions

Minta informasi tambahan dari pengguna dalam fulfillment intent Anda, lalu berikan informasi sebagai argumen untuk intent update Anda. Untuk menyiapkan update yang dipersonalisasi di Actions SDK, lakukan langkah-langkah berikut:

  1. Meminta pengguna untuk memberikan informasi yang ingin Anda gunakan personalisasi.
  2. Di kode fulfillment untuk "pendaftaran update" Anda maksud yang menangani CONFIGURE UPDATES include sebuah objek arguments dengan konten berikut:
    • name - Nama untuk argumen Anda.
    • textValue - Informasi dari pengguna, yang akan diteruskan sebagai argumen.

Kode berikut mengirim argumen bersama permintaan pendaftaran update:

Node.js Actions SDK
app.intent('actions.intent.TEXT', (conv) => {
  if (conv.input.raw === 'Send daily') {
    conv.ask(new RegisterUpdate({
      intent: 'update_of_the_day',
      arguments: [
        {
          name: 'category',
          textValue: 'Daily_lowest_temperature',
        },
      ],
      frequency: 'DAILY',
    }));
  }
});
Java Actions SDK
@ForIntent("actions.intent.CONFIGURE_UPDATES")
public ActionResponse configureUpdatesActionsSdk(ActionRequest request) {
  List<Argument> args =
      Arrays.asList(
          new Argument()
              .setName("category")
              .setTextValue(request.getParameter("category").toString()));
  return getResponseBuilder(request)
      .add(new RegisterUpdate().setIntent("intent_name").setArguments(args).setFrequency("DAILY"))
      .build();
}

@ForIntent("actions.intent.TEXT")
public ActionResponse text(ActionRequest request) {
  ResponseBuilder rb = getResponseBuilder(request);
  String input = request.getRawInput().getQuery();
  if (input.equals("DAILY_NOTIFICATION_SUGGESTION")) {
    rb.add("For which category do you want to receive daily updates?");
  } else {
    rb.add("Sorry, I didn't get that. Please try again later").endConversation();
  }
  return rb.build();
}
JSON Actions SDK
{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "inputPrompt": {
        "richInitialPrompt": {
          "items": [
            {
              "simpleResponse": {
                "textToSpeech": "PLACEHOLDER"
              }
            }
          ]
        }
      },
      "possibleIntents": [
        {
          "intent": "actions.intent.REGISTER_UPDATE",
          "inputValueData": {
            "@type": "type.googleapis.com/google.actions.v2.RegisterUpdateValueSpec",
            "intent": "update_of_the_day",
            "arguments": [
              {
                "name": "category",
                "textValue": "Daily_lowest_temperature"
              }
            ],
            "triggerContext": {
              "timeContext": {
                "frequency": "DAILY"
              }
            }
          }
        }
      ]
    }
  ],
  "conversationToken": "{\"data\":{}}",
  "userStorage": "{\"data\":{}}"
}

Saat pengguna memanggil update harian, intent update Anda sekarang mencakup argumen yang berisi nilai yang diberikan oleh pengguna selama pendaftaran. Gunakan ini untuk mempersonalisasi pembaruan bagi setiap pengguna.

Menguji pembaruan harian

Menguji info terbaru harian menggunakan perangkat seluler dengan Asisten Google menggunakan akun Google yang sama yang Anda gunakan untuk membuat Action. Memanggil Action Anda dan berlangganan pembaruan harian, lalu periksa notifikasi perangkat Anda waktu pembaruan.