Bagaimana cara meneruskan satu parameter lagi selain opsi dari maksud yang menampilkan carousel ke maksud yang menangani carousel?

Aug 17 2020

Saya menggunakan maksud untuk menampilkan carousel terlebih dahulu kepada pengguna. Saat pengguna mengklik salah satu opsi di carousel, di maksud penangan saya mendapatkan kunci dari item carousel yang dipilih pengguna.

Contoh maksud carousel,

app.intent('search', async (conv,params) => {
 conv.ask(`Choose one item`,new Carousel({
   title :`Search results`,
   items : carouselItems,
        }));
});

Contoh maksud penangan,

app.intent('handle_carousel', async (conv,params,option) => {
const key = parseInt(option);
});

Namun, bersama dengan kunci dari opsi yang dipilih, saya juga ingin meneruskan bilangan bulat lain dari maksud carousel ke maksud penangan. Bilangan bulat lainnya ini berbeda untuk setiap opsi. Anda dapat menganggap bilangan bulat lain sebagai ID, itu unik untuk setiap opsi. Bagaimana saya bisa mencapai itu?

Jawaban

1 Prisoner Aug 17 2020 at 19:26

Anda memiliki beberapa pendekatan untuk meneruskan data tambahan yang harus dikaitkan dengan setiap kunci.

Yang pertama adalah, saat Anda mencatat dalam jawaban Anda, menyimpan pemetaan itu dalam tabel yang disimpan sebagai bagian dari data sesi (baik menggunakan conv.dataatau konteks Dialogflow).

Cara lainnya adalah menyandikan data tersebut sebagai bagian dari kunci yang Anda sertakan dengan setiap opsi, dan kemudian mendekode kunci tersebut saat Anda mendapatkannya kembali.

Jadi, misalnya, Anda dapat membuat kunci sebagai hasil dari fungsi enkode seperti

function encodeOptionKey( key, otherValue ){
  return `${key}:${otherValue}`
}

dan kemudian mendekodekannya dengan fungsi seperti

function decodeOptionKey( option ){
  const [key,otherValue] = option.split(':');
  return {
    key,
    otherValue
  }
}

dan menyebutnya dari pawang Anda dengan sesuatu seperti

app.intent('handle_carousel', async (conv,params,option) => {
  const {key, otherValue} = decodeOptionKey( option );
  // ...
});
1 VaroOP Aug 17 2020 at 18:37

Saya membuat peta kunci dari berbagai opsi carousel dan parameter terkait yang ingin saya sampaikan, menyimpan peta itu di conv.data.store, yang merupakan penyimpanan percakapan yang disediakan oleh actions-on-google. Lalu saya menggunakan peta itu untuk mendapatkan parameter dari kunci carousel yang diteruskan ke maksud penangan.

Misalnya di maksud carousel:

let map = {
keyofcarousel : option,
other_parameter : otherparam,
};

conv.data.store = map;

Kemudian panggil konv.data.store di maksud penangan.