É possível implementar os seguintes callbacks na ação da tela interativa:
onUpdate()
O callback onUpdate() transmite dados do webhook ao seu app da Web para atualização
o app da Web adequadamente. Use esse callback somente com o servidor
modelo de fulfillment do desenvolvimento de tela interativa.
Para mais informações sobre onUpdate(), consulte
Transmitir dados para atualizar o app da Web.
onTtsMark()
O callback onTtsMark() é chamado quando tags <mark> personalizadas incluídas na
Linguagem de marcação de síntese de fala (SSML, na sigla em inglês)
da sua resposta são lidas para o usuário durante a conversão de texto em voz (TTS). Você pode
usar onTtsMark() no desenvolvimento de fulfillment do lado do servidor e do cliente
de modelos de machine learning.
Nos snippets abaixo, o onTtsMark() sincroniza a animação do app da Web.
com a saída TTS correspondente. Quando a ação disser ao usuário: "Desculpe,
que você perdeu", o aplicativo da web soletra a palavra correta e exibe as letras para
o usuário.
No exemplo a seguir, o gerenciador de webhook revealWord inclui um
marca na resposta ao usuário quando ele perder o jogo:
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()); }); …
Em seguida, o snippet de código a seguir registra o callback onTtsMark(), verifica a
da marca e executa a função revealCorrectWord(), que atualiza
app da 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()
O callback onInputStatusChanged() notifica quando o status da entrada muda.
na ação de tela interativa. As mudanças de status de entrada indicam quando
microfone abre e fecha ou quando o Google Assistente está processando uma consulta. A
seguintes eventos podem causar a mudança do status da entrada:
- O usuário falando com sua Ação
- O usuário inserindo texto no app Pesquisa Google para Android (AGSA)
- O app da Web usando a API sendTextQuery()para enviar uma consulta de texto à ação
- A ação gravando no armazenamento do Google Home e outros eventos do Google Assistente
O principal caso de uso desse callback é sincronizar a ação com o as interações por voz do usuário. Por exemplo, se um usuário estiver jogando um jogo Jogo do Canvas e abre o microfone, você pode pausar o jogo enquanto o usuário fala. Também é possível aguardar até que o microfone esteja aberto para enviar uma consulta de texto para ao Google Assistente para garantir o recebimento.
Essa API informa os seguintes status:
- LISTENING: indica que o microfone está aberto.
- IDLE: indica que o microfone está fechado.
- PROCESSING: indica que o Google Assistente está executando uma consulta no momento. o microfone está fechado.
A API informa o status da entrada para a ação sempre que o status muda.
Embora qualquer transição entre estados seja possível, os seguintes fluxos são comuns:
- IDLE>- LISTENING>- PROCESSING>- IDLE: o usuário faz uma consulta, a consulta é processada e o microfone é fechado.
- IDLE>- PROCESSING>- IDLE: o app da Web usa a API- sendTextQuery(). para enviar uma consulta de texto à ação.
- IDLE>- LISTENING>- IDLE: o usuário abre o microfone, mas não dizer uma consulta.
Para usar esse recurso na ação, adicione onInputStatusChanged() ao app da Web
conforme mostrado no snippet a seguir:
onInputStatusChanged(inputStatus) {
   console.log("The new input status is: ", inputStatus);
}
O callback onInputStatusChanged() transmite de volta um único parâmetro de tipo enumerado.
inputStatus. Verifique esse valor para saber o status atual da entrada. A
inputStatus pode ser LISTENING, PROCESSING ou IDLE.
Em seguida, adicione onInputStatusChanged() ao objeto callbacks para registrá-lo, conforme
como mostrado no seguinte snippet:
 /**
  * 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);
 }
}
