میتوانید پاسخهای تماس زیر را در اکشن Canvas Interactive خود پیادهسازی کنید:
onUpdate()
onUpdate()
onUpdate داده ها را از webhook به برنامه وب شما منتقل می کند تا برنامه وب را به طور مناسب به روز کند. شما فقط باید از این پاسخ تماس با مدل اجرای سمت سرور توسعه Interactive Canvas استفاده کنید.
برای اطلاعات بیشتر در مورد onUpdate()
به Pass data برای به روز رسانی برنامه وب مراجعه کنید.
onTtsMark()
زمانی که تگهای <mark>
سفارشی موجود در زبان نشانهگذاری سنتز گفتار ( SSML ) پاسخ شما در طول متن به گفتار (TTS) برای کاربر خوانده میشود، فراخوانی onTtsMark()
فراخوانی میشود. شما می توانید از onTtsMark()
در هر دو مدل توسعه اجرای سمت سرور و مشتری استفاده کنید.
در قطعههای زیر، onTtsMark()
انیمیشن برنامه وب را با خروجی TTS مربوطه همگامسازی میکند. هنگامی که Action به کاربر میگوید «متاسفم، شما باختید»، برنامه وب کلمه صحیح را املا میکند و حروف را به کاربر نمایش میدهد.
در مثال زیر، بازدارنده وب هوک revealWord
یک علامت سفارشی در پاسخ به کاربر در زمانی که بازی را باخته است، شامل میشود:
جاوا اسکریپت
… 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()
را اجرا میکند که برنامه وب را بهروزرسانی میکند:
جاوا اسکریپت
… 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()
زمانی که وضعیت ورودی در اکشن Interactive Canvas شما تغییر می کند، پاسخ تماس onInputStatusChanged()
به شما اطلاع می دهد. تغییرات وضعیت ورودی نشاندهنده زمانی است که میکروفون باز و بسته میشود یا زمانی که دستیار در حال پردازش درخواستی است. رویدادهای زیر می توانند باعث تغییر وضعیت ورودی شوند:
- کاربر در حال صحبت با Action شما
- کاربر در حال وارد کردن متن در برنامه جستجوی Google Android (AGSA)
- برنامه وب با استفاده از
sendTextQuery()
API برای ارسال یک درخواست متنی به Action - نوشتن اقدام در فضای ذخیرهسازی خانه و سایر رویدادهای «دستیار».
مورد استفاده اولیه برای این پاسخ تماس، همگام سازی Action شما با تعاملات صوتی کاربر است. به عنوان مثال، اگر کاربری در حال انجام یک بازی Interactive Canvas است و میکروفون را باز می کند، می توانید بازی را در حالی که کاربر صحبت می کند متوقف کنید. همچنین میتوانید منتظر بمانید تا میکروفون باز شود تا یک درخواست متنی به «دستیار» ارسال شود تا از دریافت آن اطمینان حاصل کنید.
این API وضعیت های زیر را گزارش می کند:
-
LISTENING
- نشان می دهد که میکروفون باز است. -
IDLE
- نشان می دهد که میکروفون بسته است. -
PROCESSING
- نشان می دهد که Assistant در حال اجرای یک درخواست است و میکروفون بسته است.
API هر بار که وضعیت تغییر می کند وضعیت ورودی را به Action شما گزارش می دهد.
در حالی که هرگونه انتقال بین حالت ها ممکن است، جریان های زیر رایج هستند:
-
IDLE
>LISTENING
>PROCESSING
>IDLE
- کاربر درخواستی را می گوید، درخواست پردازش می شود و میکروفون بسته می شود. -
IDLE
>PROCESSING
>IDLE
- برنامه وب از APIsendTextQuery()
برای ارسال یک درخواست متنی به Action استفاده می کند. -
IDLE
>LISTENING
>IDLE
- کاربر میکروفون را باز می کند اما درخواستی نمی گوید.
برای استفاده از این ویژگی در Action خود، onInputStatusChanged()
را به کد برنامه وب خود اضافه کنید، همانطور که در قطعه زیر نشان داده شده است:
onInputStatusChanged(inputStatus) {
console.log("The new input status is: ", inputStatus);
}
فراخوانی 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);
}
}