Interactive Canvas 작업에서 다음 콜백을 구현할 수 있습니다.
onUpdate()
onUpdate()
콜백은 웹훅에서 웹 앱으로 데이터를 전달하여 웹 앱을 적절하게 업데이트합니다. 이 콜백은 Interactive Canvas 개발의 서버 측 처리 모델에서만 사용해야 합니다.
onUpdate()
에 관한 자세한 내용은 데이터를 전달하여 웹 앱 업데이트를 참고하세요.
onTtsMark()
onTtsMark()
콜백은 TTS (텍스트 음성 변환) 중에 응답의 음성 합성 마크업 언어 (SSML)에 포함된 맞춤 <mark>
태그를 사용자에게 읽을 때 호출됩니다. 서버 측 처리 개발 모델과 클라이언트 측 처리 개발 모델 모두에서 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()
Interactive Canvas 작업에서 입력 상태가 변경되면 onInputStatusChanged()
콜백이 알려줍니다. 입력 상태 변경은 마이크가 열리고 닫히는 시점 또는 어시스턴트가 쿼리를 처리하는 시점을 나타냅니다. 다음과 같은 이벤트로 인해 입력 상태가 변경될 수 있습니다.
- 작업에 말하는 사용자
- 사용자가 Android Google 검색 앱 (AGSA)에 텍스트를 입력하는 중입니다.
sendTextQuery()
API를 사용하여 작업에 텍스트 쿼리를 전송하는 웹 앱- 집 스토리지 및 기타 어시스턴트 이벤트에 쓰는 작업
이 콜백의 기본 사용 사례는 작업을 사용자의 음성 상호작용과 동기화하는 것입니다. 예를 들어 사용자가 Interactive Canvas 게임을 하면서 마이크를 열면 사용자가 말하는 동안 게임을 일시중지할 수 있습니다. 마이크가 켜질 때까지 기다렸다가 어시스턴트에 텍스트 쿼리를 보내 수신되었는지 확인할 수도 있습니다.
이 API는 다음 상태를 보고합니다.
LISTENING
- 마이크가 열려 있음을 나타냅니다.IDLE
- 마이크가 닫혀 있음을 나타냅니다.PROCESSING
- 어시스턴트가 현재 쿼리를 실행 중이며 마이크가 닫혀 있음을 나타냅니다.
API는 상태가 변경될 때마다 작업에 입력 상태를 보고합니다.
상태 간에 모든 전환이 가능하지만 일반적인 흐름은 다음과 같습니다.
IDLE
>LISTENING
>PROCESSING
>IDLE
- 사용자가 쿼리를 말하면 쿼리가 처리되고 마이크가 닫힙니다.IDLE
>PROCESSING
>IDLE
- 웹 앱이sendTextQuery()
API를 사용하여 작업에 텍스트 쿼리를 보냅니다.IDLE
>LISTENING
>IDLE
- 사용자가 마이크를 열지만 쿼리를 말하지 않습니다.
작업에서 이 기능을 사용하려면 다음 스니펫과 같이 웹 앱 코드에 onInputStatusChanged()
를 추가하세요.
onInputStatusChanged(inputStatus) {
console.log("The new input status is: ", inputStatus);
}
onInputStatusChanged()
콜백은 단일 enum 매개변수 inputStatus
를 다시 전달합니다. 이 값을 통해 현재 입력 상태를 확인할 수 있습니다. inputStatus
는 LISTENING
, PROCESSING
또는 IDLE
일 수 있습니다.
다음으로, 아래 스니펫과 같이 callbacks
객체에 onInputStatusChanged()
를 추가하여 등록합니다.
/**
* 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);
}
}