Pembaruan harian (Dialogflow)

Pengguna berlangganan info terbaru harian Action di ponsel mereka

Jika Action Anda memberikan nilai kepada pengguna setiap hari, beri pengguna pengingat untuk menggunakannya dengan mengonfigurasi update harian. Jika berlangganan update harian Action Anda, pengguna akan menerima notifikasi push yang dapat diketuk untuk memanggil salah satu intent Action Anda.

Pengalaman pengguna terkait update ini adalah sebagai berikut:

  1. Pengguna memanggil salah satu intent Action yang telah Anda konfigurasi sebagai update harian.
  2. Pengguna mengikuti perintah untuk berlangganan update harian. Dialog ini diberikan di tengah percakapan atau sebagai chip saran saat percakapan berakhir.
  3. Pengguna menjadwalkan waktu untuk menerima update harian Anda, mendaftarkan update tersebut ke Asisten Google.
  4. Pada waktu yang dijadwalkan setiap hari, pengguna akan menerima notifikasi Asisten di perangkat selulernya.
  5. Saat membuka notifikasi ini, pengguna akan memanggil intent yang dikonfigurasi sebagai update harian dan berinteraksi dengan Action Anda.

Secara default, permintaan pendaftaran update harian akan muncul sebagai chip saran saat pengguna berhasil keluar dari Action. Anda juga dapat menambahkan perintah pendaftaran di tengah percakapan atau mempersonalisasi update pengguna.

Kasus penggunaan

Update harian dapat menjadi alat interaksi yang berguna, tetapi tidak boleh disertakan dalam setiap Action. Pertimbangkan tips berikut saat memutuskan apakah akan menambahkan langganan update harian ke Action:

  • Pastikan info terbaru harian akan membuat pengguna melihat informasi yang berbeda dan berguna setiap hari. Jika mengetuk update harian menghasilkan perintah yang sama setiap kali, pengguna mungkin akan berhenti berlangganan setelah beberapa hari.
  • Pastikan dialog Anda masuk akal bagi pengguna jika mereka langsung ke maksud update harian. Pengguna Anda tidak harus memulai dari awal percakapan, jadi mereka seharusnya tidak memiliki banyak konteks.
  • Tunjukkan manfaat Action Anda kepada pengguna sebelum meminta mereka mendaftar untuk mendapatkan info terbaru harian. Pengguna Anda seharusnya berpikir "Saya ingin konten ini setiap hari" saat mereka diberi opsi untuk berlangganan.
  • Jangan membuat pengguna bingung dengan saran berulang untuk mendaftar. Tawarkan langganan update harian tepat setelah menampilkan langganan kepada pengguna, dan hindari mengulangi penawaran dalam konteks lain.
  • Buat percakapan singkat setelah intent pembaruan dipicu. Sebagian besar update harian hanya boleh terdiri dari satu respons, lalu ditutup tanpa memerlukan input pengguna.

Menyiapkan info terbaru 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 sampel:

  1. Masukkan nama agen dan buat agen Dialogflow baru untuk contoh.
  2. Setelah agen selesai mengimpor, klik Buka agen.
  3. Dari menu navigasi utama, buka Fulfillment.
  4. Aktifkan Inline Editor, lalu klik Deploy. Editor berisi kode contoh.
  5. Dari menu navigasi utama, buka Integrations, lalu klik Google Assistant.
  6. Di jendela modal yang muncul, aktifkan Perubahan pratinjau otomatis, lalu klik Uji untuk membuka simulator Action.
  7. Pada simulator, masukkan Talk to my test app untuk menguji sampel.
Lanjutkan

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

1. Menyiapkan intent update

Konfigurasikan salah satu intent Action Anda sebagai intent pemicu. Intent ini memungkinkan update harian dikirim kepada pengguna; saat pengguna membuka notifikasi update harian, intent terpicu dan percakapan berlanjut dari sana.

Untuk menentukan intent pemicu di Dialogflow, lakukan hal berikut:

  1. Di Dialogflow Console, klik Integrations.
  2. Di bagian Asisten Google, klik Setelan Integrasi.
  3. Di bagian Discovery > Implicit invocation, klik Add intent, lalu pilih intent pemicu jika belum ada di sana.
  4. Aktifkan perubahan Pratinjau otomatis jika belum diaktifkan.
  5. Klik Close.

Di Actions SDK, tentukan intent pembaruan Anda sebagai intent pemicu dalam paket Action.

2. Aktifkan update

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

  1. Di Konsol Actions, buka Develop > Actions.
  2. Pilih intent pemicu Anda. Jika intent Anda tidak muncul dalam daftar, pastikan intent tersebut dikonfigurasi sebagai intent pemicu dan integrasi Asisten Dialogflow ditetapkan ke perubahan pratinjau 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 sekarang telah mengonfigurasi Action untuk menawarkan langganan update harian untuk suatu intent. Kini Anda dapat menguji info terbaru harian di perangkat seluler Anda sendiri.

Menyesuaikan pendaftaran update (opsional)

Selain chip saran dan alur pendaftaran update harian yang ditangani Asisten, buat pengguna berlangganan info terbaru harian melalui dialog dan perintah pendaftaran Anda sendiri.

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

Untuk menambahkan dialog pendaftaran update harian kustom ke percakapan Anda, ikuti petunjuk berikut:

1. Tambahkan dialog pendaftaran

Tambahkan dialog dan chip saran ke percakapan saat Anda ingin meminta pengguna untuk berlangganan info terbaru harian. Tawarkan perintah ini setelah pengguna berinteraksi dengan intent update Anda, agar mereka memahami konten update harian Anda.

Kode contoh berikut meminta pengguna untuk berlangganan update harian yang menawarkan perkiraan suhu 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

Perhatikan bahwa JSON di bawah menjelaskan 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 SDK Tindakan

Perhatikan bahwa JSON di bawah menjelaskan 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

Siapkan intent baru yang akan dipicu saat pengguna mengikuti permintaan pendaftaran Anda. Dalam fulfillment untuk intent baru ini, picu intent bawaan actions_intent_CONFIGURE_UPDATES dengan parameter berikut:

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

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

Dialogflow Node.js
app.intent('Subscribe to Daily Updates', (conv) => {
  conv.ask(new RegisterUpdate({
    intent: 'Daily Lowest Temperature',
    frequency: 'DAILY',
  }));
});
SDK Node.js Actions
conv.ask(new RegisterUpdate({
  intent: 'Daily Lowest Temperature',
  frequency: 'DAILY',
}));
Dialogflow Java
@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();
}
SDK Action Java
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 SDK Tindakan
{
  "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 menangani percakapan Anda dan memandu pengguna untuk menyelesaikan konfigurasi update hariannya. Setelah pendaftaran selesai, Asisten akan memicu intent dengan parameter yang menunjukkan 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, buat intent baru.
  2. Tambahkan peristiwa actions_intent_REGISTER_UPDATE.
  3. Aktifkan fulfillment webhook untuk intent.
  4. Klik Simpan.
Dalam fulfillment Anda untuk intent, periksa parameter registered untuk mendapatkan hasilnya, dan lakukan pivot pada percakapan sebagaimana mestinya.
Dialogflow Node.js
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.`);
  }
});
Dialogflow Java
@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 Tindakan

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

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.`);
  }
});
SDK Action Java
@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 SDK Tindakan
{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "simpleResponse": {
            "textToSpeech": "Ok, I'll start giving you daily updates."
          }
        }
      ]
    }
  }
}

Mempersonalisasi update (opsional)

Untuk mempersonalisasi intent update Anda, tambahkan parameter kustom saat pengguna mendaftarkan update harian. Saat Anda memenuhi intent update, referensikan parameter ini untuk menyesuaikan update 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 serahkan nilai parameter sebagai argumen untuk intent update Anda. Untuk menyiapkan update yang dipersonalisasi di Dialogflow, lakukan langkah-langkah berikut:

  1. Di konsol Dialogflow, buat entity baru.
  2. Tambahkan beberapa entri dan sinonim yang relevan untuk parameter Anda.
  3. Klik Save, lalu buka intent update Anda.
  4. Di bagian Tindakan dan parameter, tetapkan actions.intent.CONFIGURE_UPDATES sebagai peristiwa. Di bagian yang sama, tambahkan parameter dengan jenis yang sama dengan entity baru.
  5. Buka intent "update registration" 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 update:

Dialogflow Node.js
app.intent('setup_update', (conv) => {
  conv.ask(new RegisterUpdate({
    intent: 'update_of_the_day',
    arguments: [
      {
        name: 'category',
        textValue: 'Daily_lowest_temperature',
      },
    ],
    frequency: 'DAILY',
  }));
});
Dialogflow Java
@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 Tindakan

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

  1. Minta informasi kepada pengguna yang ingin Anda gunakan untuk personalisasi.
  2. Dalam kode fulfillment untuk intent "update pendaftaran" Anda yang menangani CONFIGURE UPDATES, sertakan 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 pembaruan:

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',
    }));
  }
});
SDK Action Java
@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 SDK Tindakan
{
  "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 kini menyertakan argumen yang berisi nilai yang diberikan oleh pengguna selama pendaftaran. Gunakan nilai ini untuk mempersonalisasi update bagi setiap pengguna.

Uji pembaruan harian

Uji update harian Anda menggunakan perangkat seluler dengan Asisten Google menggunakan Akun Google yang sama dengan yang Anda gunakan untuk membuat Action. Panggil Action Anda dan berlangganan info terbaru harian, lalu periksa notifikasi perangkat Anda sekitar waktu update.