Anda dapat menerapkan callback berikut di Action Canvas Interaktif:
onUpdate()
Callback onUpdate()
meneruskan data dari webhook ke aplikasi web Anda untuk melakukan pembaruan
aplikasi web dengan tepat. Anda hanya boleh menggunakan callback ini dengan sisi server
model fulfillment pengembangan Interactive Canvas.
Untuk informasi selengkapnya tentang onUpdate()
, lihat
Teruskan data untuk mengupdate aplikasi web.
onTtsMark()
Callback onTtsMark()
dipanggil saat tag <mark>
kustom disertakan dalam
Bahasa Markup Sintesis Ucapan (SSML)
respons Anda dibacakan kepada pengguna selama Text to Speech (TTS). Anda dapat
gunakan onTtsMark()
dalam pengembangan fulfillment sisi server dan sisi klien
jaringan.
Dalam cuplikan berikut, onTtsMark()
menyinkronkan animasi aplikasi web
dengan output TTS yang sesuai. Ketika Action berkata kepada pengguna, "Maaf,
Anda kehilangan", aplikasi web mengeja kata yang benar dan menampilkan huruf-huruf
pengguna.
Pada contoh berikut, pengendali webhook revealWord
mencakup objek kustom
sebagai respons kepada pengguna jika mereka kalah dalam game:
JavaScript
… app.handle('revealWord', conv => { conv.add(new Simple(`<speak>Sorry, you lost.<mark name="REVEAL_WORD"/> The word is ${conv.session.params.word}.</speak>`)); conv.add(new Canvas()); }); …
Cuplikan kode berikut kemudian mendaftarkan callback onTtsMark()
, memeriksa
nama tanda, dan mengeksekusi fungsi revealCorrectWord()
, yang memperbarui
aplikasi web:
JavaScript
… setCallbacks() { // declare Assistant Canvas Action callbacks const callbacks = { onTtsMark(markName) { if (markName === 'REVEAL_WORD') { // display the correct word to the user that.revealCorrectWord(); } }, } callbacks.onUpdate.bind(this); } …
onInputStatusChanged()
Callback onInputStatusChanged()
memberi tahu Anda saat status input berubah
di Action Canvas Interaktif Anda. Perubahan status input menunjukkan kapan
mikrofon terbuka dan tertutup, atau saat Asisten memproses kueri. Tujuan
peristiwa berikut dapat menyebabkan status input berubah:
- Pengguna berbicara dengan Action Anda
- Pengguna memasukkan teks di Aplikasi Google Penelusuran Android (AGSA)
- Aplikasi web yang menggunakan
sendTextQuery()
API untuk mengirim kueri teks ke Action - Tindakan menulis ke penyimpanan rumah dan peristiwa Asisten lainnya
Kasus penggunaan utama untuk callback ini adalah menyinkronkan Action Anda dengan interaksi suara pengguna. Misalnya, jika pengguna memainkan game Game Canvas dan membuka mikrofon, Anda dapat menjeda game saat pengguna berbicara. Anda juga dapat menunggu hingga mikrofon terbuka untuk mengirim kueri teks ke Asisten untuk memastikan data sudah diterima.
API ini melaporkan status berikut:
LISTENING
- Menunjukkan bahwa mikrofon terbuka.IDLE
- Menunjukkan bahwa mikrofon ditutup.PROCESSING
- Menunjukkan bahwa Asisten sedang mengeksekusi kueri, dan mikrofon ditutup.
API melaporkan status input ke Action Anda setiap kali status berubah.
Meskipun transisi antarstatus dapat dilakukan, alur berikut biasa terjadi:
IDLE
>LISTENING
>PROCESSING
>IDLE
- Pengguna mengucapkan kueri, kueri diproses, dan mikrofon ditutup.IDLE
>PROCESSING
>IDLE
- Aplikasi web ini menggunakansendTextQuery()
API untuk mengirim kueri teks ke Action.IDLE
>LISTENING
>IDLE
- Pengguna membuka mikrofon, tetapi tidak ucapkan kueri.
Untuk menggunakan fitur ini di Action, tambahkan onInputStatusChanged()
ke aplikasi web Anda
seperti yang ditunjukkan dalam cuplikan berikut:
onInputStatusChanged(inputStatus) {
console.log("The new input status is: ", inputStatus);
}
Callback onInputStatusChanged()
meneruskan kembali satu parameter enum,
inputStatus
. Anda dapat memeriksa nilai ini untuk melihat status input saat ini. Tujuan
inputStatus
dapat berupa LISTENING
, PROCESSING
, atau IDLE
.
Selanjutnya, tambahkan onInputStatusChanged()
ke objek callbacks
untuk mendaftarkannya, sebagai
yang ditampilkan dalam cuplikan berikut:
/**
* Register all callbacks used by the Interactive Canvas Action
* executed during game creation time.
*/
setCallbacks() {
const that = this;
// Declare the Interactive Canvas action callbacks.
const callbacks = {
onUpdate(data) {
console.log('Received data', data);
},
onInputStatusChanged(inputStatus) {
console.log("The new input status is: ", inputStatus);
},
};
// Called by the Interactive Canvas web app once web app has loaded to
// register callbacks.
this.canvas.ready(callbacks);
}
}