콜백

Interactive Canvas 작업에서 다음 콜백을 구현할 수 있습니다.

onUpdate()

onUpdate() 콜백은 웹훅의 데이터를 웹 앱으로 전달하여 업데이트합니다. 웹 앱을 적절하게 작성할 수 있습니다 이 콜백은 Interactive Canvas 개발의 처리 모델입니다.

onUpdate()에 관한 자세한 내용은 다음을 참고하세요. 데이터를 전달하여 웹 앱 업데이트

onTtsMark()

onTtsMark() 콜백은 맞춤 <mark> 태그가 음성 합성 마크업 언어 (SSML) TTS (텍스트 음성 변환)가 진행되는 동안 사용자에게 음성으로 안내합니다. 다음과 같은 작업을 할 수 있습니다. 서버 측 및 클라이언트 측 처리 개발에서 모두 onTtsMark() 사용 모델을 학습시키는 작업도 반복해야 합니다

다음 스니펫에서 onTtsMark()는 웹 앱의 애니메이션을 동기화합니다. 를 해당 TTS 출력으로 변환합니다. 작업이 사용자에게 '죄송합니다. "잃어버렸다고" 웹 앱이 올바른 단어의 철자를 알려주고 있습니다.

다음 예시에서 웹훅 핸들러 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()

onInputStatusChanged() 콜백은 입력 상태가 변경되면 알려줍니다. 합니다. 입력 상태 변경은 마이크가 열리고 닫히거나 어시스턴트가 쿼리를 처리하는 동안 이 다음과 같은 이벤트가 발생하면 입력 상태가 변경될 수 있습니다.

  • 작업에 대해 말하는 사용자
  • Android Google 검색 앱 (AGSA)에 사용자가 입력하는 텍스트
  • sendTextQuery() API를 사용하여 작업에 텍스트 쿼리를 보내는 웹 앱
  • 홈 스토리지 및 기타 어시스턴트 이벤트에 쓰는 작업

이 콜백의 기본 사용 사례는 작업을 파악할 수 있습니다. 예를 들어 사용자가 양방향 콘텐츠를 플레이하는 경우 캔버스 게임을 실행하고 마이크를 열면 사용자가 게임을 일시중지하고 말하고 있습니다. 마이크가 열릴 때까지 기다렸다가 어시스턴트가 수신되었는지 확인합니다.

이 API는 다음 상태를 보고합니다.

  • LISTENING - 마이크가 열려 있음을 나타냅니다.
  • IDLE - 마이크가 닫혔음을 나타냅니다.
  • PROCESSING - 어시스턴트가 현재 쿼리를 실행 중임을 나타냅니다. 마이크가 닫혀 있습니다.

API는 상태가 변경될 때마다 작업에 입력 상태를 보고합니다.

상태 간 전환은 가능하지만 일반적인 흐름은 다음과 같습니다.

  • IDLE>LISTENING>PROCESSING>IDLE: 사용자가 질문을 하면 마이크가 종료됩니다.
  • IDLE>PROCESSING>IDLE - 웹 앱이 sendTextQuery() API를 사용합니다. Action에 텍스트 쿼리를 보냅니다.
  • IDLE>LISTENING>IDLE - 사용자가 마이크를 열지만 질문을 할 수 있습니다

작업에서 이 기능을 사용하려면 웹 앱에 onInputStatusChanged()를 추가하세요. 다음 스니펫에 나와 있습니다.

onInputStatusChanged(inputStatus) {
   console.log("The new input status is: ", inputStatus);
}

onInputStatusChanged() 콜백은 단일 enum 매개변수를 다시 전달합니다. inputStatus입니다. 이 값을 확인하면 현재 입력 상태를 볼 수 있습니다. 이 inputStatusLISTENING, 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);
 }
}