คุณใช้ Callback ต่อไปนี้ได้ใน Interactive Canvas Action
onUpdate()
onUpdate()ข้อมูล Callback Pass จากเว็บฮุคไปยังเว็บแอปเพื่ออัปเดต
เว็บแอปให้เหมาะสม คุณควรใช้ Callback นี้กับฝั่งเซิร์ฟเวอร์เท่านั้น
โมเดลการดำเนินการตามคำสั่งซื้อของการพัฒนา Interactive Canvas
ดูข้อมูลเพิ่มเติมเกี่ยวกับ onUpdate() ได้ที่
ส่งข้อมูลเพื่ออัปเดตเว็บแอป
onTtsMark()
ระบบจะเรียก Callback onTtsMark() เมื่อมีแท็ก <mark> ที่กำหนดเองรวมอยู่ในแท็ก
ภาษามาร์กอัปการสังเคราะห์เสียง (SSML)
ของการตอบกลับจะอ่านออกเสียงให้ผู้ใช้ทราบในระหว่างการอ่านออกเสียงข้อความ (TTS) คุณสามารถ
ใช้ onTtsMark() ในการพัฒนาการดำเนินการตามคำสั่งซื้อทั้งฝั่งเซิร์ฟเวอร์และฝั่งไคลเอ็นต์
ในข้อมูลโค้ดต่อไปนี้ onTtsMark() จะซิงค์ข้อมูลภาพเคลื่อนไหวของเว็บแอป
ด้วยเอาต์พุต TTS ที่เกี่ยวข้อง เมื่อการดำเนินการพูดกับผู้ใช้ว่า "ขออภัย
คุณแพ้" เว็บแอปสะกดคำที่ถูกต้องและแสดงตัวอักษรที่
ผู้ใช้รายนั้น
ในตัวอย่างต่อไปนี้ ตัวแฮนเดิลเว็บฮุค revealWord มี
ทำเครื่องหมายในการตอบกลับผู้ใช้ในกรณีที่ชนะเกม:
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()); }); …
จากนั้นข้อมูลโค้ดต่อไปนี้จะบันทึกการติดต่อกลับของ onTtsMark() โปรดตรวจสอบ
ของเครื่องหมาย และใช้ฟังก์ชัน revealCorrectWord() ซึ่งจะอัปเดต
เว็บแอป:
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() จะแจ้งให้ทราบเมื่อสถานะอินพุตมีการเปลี่ยนแปลง
ในการทำงานของ Interactive Canvas การเปลี่ยนแปลงสถานะอินพุตจะแสดงเมื่อ
ไมโครโฟนจะเปิดและปิด หรือเมื่อ Assistant กำลังประมวลผลคำถาม
เหตุการณ์ต่อไปนี้อาจทำให้สถานะอินพุตเปลี่ยนแปลงได้
- ผู้ใช้พูดกับการดำเนินการของคุณ
- ผู้ใช้ป้อนข้อความในแอป Google Search ของ Android (AGSA)
- เว็บแอปที่ใช้
sendTextQuery()API เพื่อส่งคำค้นหาไปยังการดำเนินการ - การดำเนินการเขียนไปยังพื้นที่เก็บข้อมูลในบ้านและเหตุการณ์อื่นๆ ของ Assistant
กรณีการใช้งานหลักสำหรับ Callback นี้คือซิงค์ข้อมูลการดำเนินการของคุณกับ การโต้ตอบด้วยเสียงของผู้ใช้ เช่น หากผู้ใช้กำลังเล่นโฆษณาอินเทอร์แอกทีฟ เกม Canvas และเปิดไมโครโฟน คุณสามารถหยุดเกมชั่วคราวในขณะที่ผู้ใช้ พูด นอกจากนี้ คุณยังรอจนกว่าไมโครโฟนจะเปิดเพื่อส่งข้อความค้นหาไปยัง Assistant ตรวจดูว่าได้รับข้อความแล้ว
API นี้จะรายงานสถานะต่อไปนี้
LISTENING- บ่งบอกว่าไมโครโฟนเปิดอยู่IDLE- บ่งบอกว่าไมโครโฟนปิดอยู่PROCESSING- บ่งบอกว่า Assistant กำลังดำเนินการค้นหาอยู่ และ ไมโครโฟนปิดอยู่
API จะรายงานสถานะอินพุตไปยังการดำเนินการของคุณทุกครั้งที่สถานะมีการเปลี่ยนแปลง
แม้ว่าการเปลี่ยนระหว่างรัฐต่างๆ จะเป็นไปได้ แต่กระบวนการต่อไปนี้เป็นเรื่องปกติ
IDLE>LISTENING>PROCESSING>IDLE- ผู้ใช้พูดข้อความค้นหา ประมวลผลการค้นหา และไมโครโฟนจะปิดIDLE>PROCESSING>IDLE- เว็บแอปใช้sendTextQuery()API เพื่อส่งข้อความค้นหาไปที่การดำเนินการIDLE>LISTENING>IDLE- ผู้ใช้เปิดไมโครโฟนแต่ไม่ พูดข้อความค้นหา
หากต้องการใช้ฟีเจอร์นี้ในการดำเนินการ ให้เพิ่ม onInputStatusChanged() ลงในเว็บแอป
ดังที่แสดงในข้อมูลโค้ดต่อไปนี้
onInputStatusChanged(inputStatus) {
console.log("The new input status is: ", inputStatus);
}
Callback onInputStatusChanged() จะส่งพารามิเตอร์ enum เดียวกลับมา
inputStatus คุณสามารถตรวจสอบค่านี้เพื่อดูสถานะอินพุตปัจจุบันได้
inputStatus จะเป็น LISTENING, PROCESSING หรือ IDLE ก็ได้
ถัดไป ให้เพิ่ม onInputStatusChanged() ลงในออบเจ็กต์ callbacks เพื่อลงทะเบียนเป็น
ที่แสดงในตัวอย่างต่อไปนี้
/**
* 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);
}
}