Следуйте инструкциям в каждом разделе ниже, чтобы интегрировать 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 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
Установите инструмент авторизации:
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_type
END_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
.
Поиск неисправностей
Если у вас возникнут проблемы, посетите страницу «Устранение неполадок» .