Следуйте инструкциям в каждом разделе ниже, чтобы интегрировать 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 , созданного при регистрации модели вашего устройства .
Чтобы сгенерировать учетные данные, выполните следующие действия:
Используйте виртуальную среду Python , чтобы изолировать инструмент авторизации и его зависимости от системных пакетов Python.
sudo apt-get updatesudo apt-get install python3-dev python3-venv # Use python3.4-venv if the package cannot be found.python3 -m venv envenv/bin/python -m pip install --upgrade pip setuptools wheelsource env/bin/activateУстановите инструмент авторизации:
python -m pip install --upgrade google-auth-oauthlib[tool]
Запустите инструмент. Удалите флаг
--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.
При работе с этими руководствами используйте следующее:
- Область действия OAuth: https://www.googleapis.com/auth/assistant-sdk-prototype.
Поддерживаемые потоки OAuth:
- (Рекомендуется) Установленные приложения
- Приложения веб-сервера
Ознакомьтесь с лучшими практиками обеспечения конфиденциальности и безопасности , чтобы получить рекомендации по защите вашего устройства.
Аутентификация вашего соединения gRPC с помощью токенов OAuth.
Наконец, соберите все воедино, прочитав, как использовать аутентификацию на основе токенов в Google для аутентификации соединения gRPC с API-интерфейсом Assistant.
Зарегистрируйте свое устройство
Зарегистрируйте модель и экземпляр вашего устройства вручную или с помощью инструмента регистрации (доступного на Python).
Реализуйте базовый диалог беседы с помощью Ассистента.
- Внедрите двунаправленный потоковый клиент gRPC для API службы Google Assistant.
- Подождите, пока пользователь инициирует новый запрос (например, дождитесь прерывания GPIO от нажатия кнопки).
Отправьте сообщение
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).
- Поле
Начать запись.
Отправьте несколько исходящих сообщений
AssistRequestсо звуковыми данными из голосового запроса в полеaudio_in.Обработка входящих сообщений
AssistResponse.Извлеките метаданные разговора из сообщения
AssistResponse. Например, изdialog_state_outполучитеconversation_stateиvolume_percentage(см.DialogStateOut).Остановить запись при получении
AssistResponseсevent_typeEND_OF_UTTERANCE.Воспроизведите звук ответа Ассистента, используя аудиоданные, поступающие из поля
audio_out.Возьмите
conversation_state, который вы извлекли ранее, и скопируйте его в сообщениеDialogStateInвAssistConfigдля следующегоAssistRequest.
При этом вы должны быть готовы сделать первые запросы к Google Assistant через свое устройство.
Расширьте диалог разговора с помощью действий устройства
Расширьте диалоговое окно основного диалога выше, чтобы активировать уникальные аппаратные возможности вашего конкретного устройства:
- Во входящих сообщениях
AssistResponseизвлеките полеdevice_action(см.DeviceAction). - Проанализируйте полезные данные 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 .
Поиск неисправностей
Если у вас возникнут проблемы, посетите страницу «Устранение неполадок» .