Integrar o Assistente ao seu projeto (outros idiomas)

Siga as instruções em cada seção abaixo para integrar o Google Assistente ao seu projeto.

Vinculações gRPC

O serviço do Google Assistente é baseado no gRPC, uma biblioteca de RPC de alto desempenho e código aberto. Esse framework é adequado para streaming de áudio bidirecional.

Python

Se você estiver usando Python, comece usando este guia.

C++

Confira nosso exemplo de C++ (link em inglês) no GitHub.

Node.js

Confira nosso exemplo do Node.js no GitHub.

Android Things

Você tem interesse em dispositivos incorporados? Confira o exemplo do SDK do Assistente para o Android Things.

Outros idiomas

Autorizar e autenticar sua Conta do Google para trabalhar com o Assistente

A próxima etapa é autorizar o dispositivo a se comunicar com o Google Assistente usando sua Conta do Google.

Receber tokens OAuth com o escopo do SDK do Google Assistente

O SDK do Assistente usa tokens de acesso do OAuth 2.0 para autorizar o dispositivo a se conectar com o Assistente.

Ao prototipar, você pode usar a ferramenta de autorização para gerar facilmente credenciais OAuth2.0 do arquivo client_secret_<client-id>.json gerado ao registrar o modelo de dispositivo.

Faça o seguinte para gerar as credenciais:

  1. Use um ambiente virtual do Python para isolar a ferramenta de autorização e as dependências dos pacotes do sistema Python.

    sudo apt-get update
    sudo apt-get install python3-dev python3-venv # Use python3.4-venv if the package cannot be found.
    python3 -m venv env
    env/bin/python -m pip install --upgrade pip setuptools wheel
    source env/bin/activate
    
  2. Instale a ferramenta de autorização:

    python -m pip install --upgrade google-auth-oauthlib[tool]
  3. Execute a ferramenta. Remova a sinalização --headless se ele estiver sendo executado em um terminal no dispositivo (não em uma sessão SSH):

    google-oauthlib-tool --client-secrets /path/to/client_secret_client-id.json --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless
    

Quando você estiver pronto para integrar a autorização como parte do mecanismo de provisionamento do dispositivo, leia nossos guias sobre Como usar o OAuth 2.0 para acessar as APIs do Google para entender como conseguir, manter e usar os tokens de acesso do OAuth para permitir que seu dispositivo se comunique com a API do Assistente.

Use as seguintes opções ao trabalhar com esses guias:

Confira as práticas recomendadas de privacidade e segurança para conferir recomendações sobre como proteger seu dispositivo.

Autenticar a conexão gRPC com tokens OAuth

Por fim, junte todos os elementos lendo como usar a autenticação baseada em token com o Google para autenticar a conexão gRPC com a API Assistant.

Registrar seu dispositivo

Registre o modelo de dispositivo e a instância manualmente ou com a ferramenta de registro (disponível em Python).

Implementar uma caixa de diálogo de conversa básica com o Google Assistente

  1. Implemente um cliente gRPC de streaming bidirecional para a API Google Assistant Service.
  2. Aguarde o usuário acionar uma nova solicitação (por exemplo, aguarde uma interrupção GPIO após o pressionamento de um botão).
  3. Envie uma mensagem AssistRequest com o campo config definido (consulte AssistConfig). Verifique se o campo config contém o seguinte:

    • O campo audio_in_config, que especifica como processar os dados de audio_in que serão fornecidos nas solicitações subsequentes (consulte AudioInConfig).
    • O campo audio_out_config, que especifica o formato desejado para o servidor usar quando ele retorna mensagens audio_out. Consulte AudioOutConfig.
    • O campo device_config, que identifica o dispositivo registrado para o Google Assistente. Consulte DeviceConfig.
    • O campo dialog_state_in, que contém o language_code associado à solicitação. Consulte DialogStateIn.
  4. Iniciar gravação.

  5. Envie várias mensagens AssistRequest de saída com dados de áudio da consulta falada no campo audio_in.

  6. Gerenciar as mensagens AssistResponse recebidas.

  7. Extraia metadados da conversa da mensagem AssistResponse. Por exemplo, em dialog_state_out, acesse conversation_state e volume_percentage (consulte DialogStateOut).

  8. Interrompe a gravação ao receber um AssistResponse com um event_type de END_OF_UTTERANCE.

  9. Tocar o áudio da resposta do Google Assistente com dados de áudio do campo audio_out.

  10. Copie o conversation_state extraído anteriormente e copie-o para a mensagem DialogStateIn no AssistConfig para o próximo AssistRequest.

Com isso, estará tudo pronto para você fazer as primeiras solicitações ao Google Assistente usando o dispositivo.

Estender uma caixa de diálogo de conversa com ações no dispositivo

Estenda a caixa de diálogo de conversa básica acima para acionar os recursos de hardware exclusivos do seu dispositivo específico:

  1. Nas mensagens AssistResponse recebidas, extraia o campo device_action (consulte DeviceAction).
  2. Analise o payload JSON do campo device_request_json. Consulte a página Características do dispositivo para conferir uma lista de características compatíveis. Cada página de esquema de características mostra um exemplo de solicitação EXECUTE com os comandos do dispositivo e os parâmetros retornados no payload JSON.

Receber a transcrição da solicitação do usuário

Se você tem uma tela conectada ao dispositivo, ela pode ser usada para mostrar a solicitação do usuário. Para acessar esta transcrição, analise o campo speech_results nas mensagens AssistResponse. Quando o reconhecimento de fala for concluído, a lista conterá um item com stability definido como 1.0.

Veja o texto e/ou a renderização visual da resposta do Google Assistente

Se há uma tela conectada ao dispositivo, ela pode ser usada para mostrar a resposta em texto simples do Google Assistente à solicitação do usuário. Esse texto está localizado no campo DialogStateOut.supplemental_display_text.

O Google Assistente oferece respostas visuais via HTML5 para determinadas consultas (Qual está o clima em Mountain View? ou Que horas são?). Para ativar esse recurso, defina o campo screen_out_config em AssistConfig. A mensagem ScreenOutConfig tem o campo screen_mode, que precisa ser definido como PLAYING.

As mensagens AssistResponse terão o campo screen_out definido. É possível extrair os dados do HTML5 (se houver) do campo data.

Como enviar consultas por entrada de texto

Se você tiver uma interface de texto (por exemplo, um teclado) conectada ao dispositivo, defina o campo text_query no campo config (consulte AssistConfig). Não defina o campo audio_in_config.

Solução de problemas

Consulte a página Solução de problemas se tiver problemas.