Devoluciones de llamada

Puedes implementar las siguientes devoluciones de llamada en tu acción de Interactive Canvas:

onUpdate()

La devolución de llamada onUpdate() pasa datos del webhook a tu aplicación web para su actualización. la aplicación web de manera adecuada. Solo debes usar esta devolución de llamada con el backend modelo de entrega de desarrollo de Interactive Canvas.

Para obtener más información sobre onUpdate(), consulta Pasa datos para actualizar la app web.

onTtsMark()

Se llama a la devolución de llamada onTtsMark() cuando se incluyen etiquetas <mark> personalizadas en el Lenguaje de marcación de síntesis de voz (SSML) de tu respuesta se leen al usuario en texto a voz (TTS). Puedes usar onTtsMark() en el desarrollo de la entrega del servidor y del cliente e implementar modelos automáticamente.

En los siguientes fragmentos, onTtsMark() sincroniza la animación de la app web. con la salida de TTS correspondiente. Cuando la acción le dice al usuario: "Lo siento, que perdiste", la aplicación web deletrea la palabra correcta y muestra las letras para del usuario.

En el siguiente ejemplo, el controlador de webhook revealWord incluye un controlador personalizado. Marca en la respuesta que se le envía al usuario cuando pierde el juego:

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());
});
…
    

En el siguiente fragmento de código, se registra la devolución de llamada onTtsMark() y se verifica nombre de la marca y ejecuta la función revealCorrectWord(), que actualiza la aplicación 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()

La devolución de llamada onInputStatusChanged() te notifica cuando cambia el estado de la entrada. en la acción de Interactive Canvas. Los cambios en el estado de entrada indican el micrófono se abre y se cierra, o cuando Asistente está procesando una consulta. El los siguientes eventos pueden hacer que cambie el estado de la entrada:

  • El usuario que habla de tu acción
  • El usuario que ingresa texto en la app de la Búsqueda de Google (AGSA) para Android
  • La app web que usa la API de sendTextQuery() para enviar una consulta de texto a la acción
  • La acción de escribir en el almacenamiento de la casa y otros eventos de Asistente

El caso de uso principal para esta devolución de llamada es sincronizar tu acción con el las interacciones de voz del usuario. Por ejemplo, si un usuario está reproduciendo un Canvas y abre el micrófono, puedes pausar el juego mientras el usuario habla. También puedes esperar hasta que el micrófono esté activado para enviar una consulta de texto a Asistente para asegurarte de que se reciba.

Esta API informa los siguientes estados:

  • LISTENING: Indica que el micrófono está abierto.
  • IDLE: Indica que el micrófono está cerrado.
  • PROCESSING: Indica que Asistente está ejecutando una consulta. que el micrófono esté cerrado.

La API informa el estado de entrada a tu acción cada vez que cambia el estado.

Si bien cualquier transición entre estados es posible, los siguientes flujos son comunes:

  • IDLE>LISTENING>PROCESSING>IDLE: el usuario dice una consulta, el se procesa la consulta y se cierra el micrófono.
  • IDLE>PROCESSING>IDLE: La app web usa la API de sendTextQuery(). para enviar una consulta de texto a la acción.
  • IDLE>LISTENING>IDLE: el usuario abre el micrófono, pero no lo hace. haz una consulta.

Para usar esta función en tu acción, agrega onInputStatusChanged() a tu app web el código fuente, como se muestra en el siguiente fragmento:

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

La devolución de llamada onInputStatusChanged() devuelve un solo parámetro enum, inputStatus Puedes verificar este valor para ver el estado actual de la entrada. El inputStatus puede ser LISTENING, PROCESSING o IDLE.

A continuación, agrega onInputStatusChanged() al objeto callbacks para registrarlo, como se muestra en el siguiente fragmento:

 /**
  * 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);
 }
}