Bagaimana cara meneruskan satu parameter lagi selain opsi dari maksud yang menampilkan carousel ke maksud yang menangani carousel?
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
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.data
atau 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 );
// ...
});
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.