Интегрируйте помощника в свой проект (другие языки)

Следуйте инструкциям в каждом разделе ниже, чтобы интегрировать Google Assistant в свой проект.

привязки gRPC

Служба Google Assistant построена на основе gRPC — высокопроизводительной платформы RPC с открытым исходным кодом. Эта платформа хорошо подходит для двунаправленной потоковой передачи звука.

Питон

Если вы используете Python, начните использовать это руководство .

С++

Взгляните на наш образец C++ на GitHub.

Node.js

Взгляните на наш образец Node.js на GitHub.

Android-вещи

Интересуетесь встраиваемыми устройствами? Ознакомьтесь с примером Assistant SDK для Android Things .

Другие языки

  • Клонируйте репозиторий googleapis , чтобы получить определения интерфейса буфера протокола для API службы Google Assistant .
  • Следуйте документации gRPC , чтобы создать привязки gRPC для выбранного вами языка.
  • Выполните действия, описанные в разделах ниже.

Авторизуйте и подтвердите свою учетную запись Google для работы с Ассистентом.

Следующим шагом будет авторизация вашего устройства для общения с Google Assistant, используя вашу учетную запись Google.

Получите токены OAuth с помощью Assistant SDK.

Assistant SDK использует токены доступа OAuth 2.0 для авторизации вашего устройства для подключения к Assistant.

При создании прототипа вы можете использовать инструмент авторизации, чтобы легко генерировать учетные данные OAuth2.0 из файла client_secret_<client-id>.json , созданного при регистрации модели вашего устройства .

Чтобы сгенерировать учетные данные, выполните следующие действия:

  1. Используйте виртуальную среду Python , чтобы изолировать инструмент авторизации и его зависимости от системных пакетов 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. Установите инструмент авторизации:

    python -m pip install --upgrade google-auth-oauthlib[tool]
  3. Запустите инструмент. Удалите флаг --headless , если вы запускаете его с терминала на устройстве (не из сеанса SSH):

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

Когда вы будете готовы интегрировать авторизацию как часть механизма обеспечения вашего устройства, прочтите наши руководства по использованию OAuth 2.0 для доступа к API Google , чтобы понять, как получать, сохранять и использовать токены доступа OAuth, чтобы ваше устройство могло взаимодействовать с Помощником. API.

При работе с этими руководствами используйте следующее:

Ознакомьтесь с лучшими практиками конфиденциальности и безопасности, чтобы получить рекомендации по защите вашего устройства.

Аутентификация вашего соединения gRPC с помощью токенов OAuth.

Наконец, соберите все воедино, прочитав, как использовать аутентификацию на основе токенов в Google для аутентификации соединения gRPC с API-интерфейсом Assistant.

Зарегистрируйте свое устройство

Зарегистрируйте модель и экземпляр вашего устройства вручную или с помощью инструмента регистрации (доступного на Python).

Реализуйте базовый диалог беседы с помощью Ассистента.

  1. Внедрите двунаправленный потоковый клиент gRPC для API службы Google Assistant.
  2. Подождите, пока пользователь инициирует новый запрос (например, дождитесь прерывания GPIO от нажатия кнопки).
  3. Отправьте сообщение AssistRequest с установленным полем config (см. AssistConfig ). Убедитесь, что поле config содержит следующее:

    • Поле audio_in_config , которое определяет, как обрабатывать данные audio_in , которые будут предоставлены в последующих запросах (см. AudioInConfig ).
    • Поле audio_out_config , которое определяет желаемый формат, который сервер будет использовать при возврате сообщений audio_out (см. AudioOutConfig ).
    • Поле device_config , которое идентифицирует зарегистрированное устройство для Ассистента (см. DeviceConfig ).
    • Поле dialog_state_in , которое содержит language_code связанный с запросом (см. DialogStateIn ).
  4. Начать запись.

  5. Отправьте несколько исходящих сообщений AssistRequest с аудиоданными из голосового запроса в поле audio_in .

  6. Обработка входящих сообщений AssistResponse .

  7. Извлеките метаданные разговора из сообщения AssistResponse . Например, из dialog_state_out получите conversation_state и volume_percentage (см. DialogStateOut ).

  8. Остановить запись при получении AssistResponse с event_type END_OF_UTTERANCE .

  9. Воспроизведите звук ответа Ассистента, используя аудиоданные, поступающие из поля audio_out .

  10. Возьмите conversation_state который вы извлекли ранее, и скопируйте его в сообщение DialogStateIn в AssistConfig для следующего AssistRequest .

При этом вы должны быть готовы сделать первые запросы к Google Assistant через свое устройство.

Расширьте диалог разговора с помощью действий устройства

Расширьте диалоговое окно основного диалога выше, чтобы активировать уникальные аппаратные возможности вашего конкретного устройства:

  1. Во входящих сообщениях AssistResponse извлеките поле device_action (см. DeviceAction ).
  2. Проанализируйте полезные данные JSON поля device_request_json . Список поддерживаемых характеристик см. на странице «Свойства устройства» . На каждой странице схемы признаков показан пример запроса EXECUTE с командами устройства и параметрами, возвращаемыми в полезных данных JSON.

Получить расшифровку запроса пользователя

Если к устройству подключен дисплей, возможно, вы захотите использовать его для отображения запроса пользователя. Чтобы получить эту расшифровку, проанализируйте поле speech_results в сообщениях AssistResponse . Когда распознавание речи завершится, этот список будет содержать один элемент со stability , установленной на 1,0.

Получите текстовую и/или визуальную визуализацию ответа Ассистента.

Если к устройству подключен дисплей, возможно, вы захотите использовать его для отображения обычного текстового ответа Ассистента на запрос пользователя. Этот текст находится в поле DialogStateOut.supplemental_display_text .

Ассистент поддерживает визуальные ответы через HTML5 на определенные запросы ( Какая погода в Маунтин-Вью? или Сколько сейчас времени? ). Чтобы включить это, установите поле screen_out_config в AssistConfig . Сообщение ScreenOutConfig имеет поле screen_mode , для которого должно быть установлено значение PLAYING .

В сообщениях AssistResponse будет установлено поле screen_out . Вы можете извлечь данные HTML5 (если они есть) из поля data .

Отправка запросов посредством текстового ввода

Если к устройству подключен текстовый интерфейс (например, клавиатура), установите поле text_query в поле config (см. AssistConfig ). Не устанавливайте поле audio_in_config .

Поиск неисправностей

Если у вас возникнут проблемы, посетите страницу «Устранение неполадок» .