Làm theo hướng dẫn trong từng phần bên dưới để tích hợp Trợ lý Google vào dự án của bạn.
Liên kết gRPC
Dịch vụ Trợ lý Google được xây dựng dựa trên gRPC, một hiệu suất, khung RPC nguồn mở. Khung này phù hợp với phát trực tuyến âm thanh hai chiều.
Python
Nếu bạn đang sử dụng Python, hãy bắt đầu bằng hướng dẫn này.
C++
Xem mẫu C++ của chúng tôi trên GitHub.
Node.js
Hãy xem mẫu Node.js của chúng tôi trên GitHub.
Android Things
Bạn quan tâm đến thiết bị được nhúng? Hãy xem SDK Trợ lý mẫu cho Android Things.
Ngôn ngữ khác
- Sao chép kho lưu trữ googleapis để lấy định nghĩa giao diện vùng đệm giao thức cho Google Assistant Service API.
- Làm theo tài liệu gRPC để tạo gRPC liên kết cho ngôn ngữ bạn chọn
- Hãy làm theo các bước trong các phần dưới đây.
Cho phép và xác thực Tài khoản Google của bạn để làm việc với Trợ lý
Bước tiếp theo là cho phép thiết bị của bạn trò chuyện với Trợ lý Google thông qua Tài khoản Google của bạn.
Nhận mã thông báo OAuth bằng phạm vi SDK Trợ lý
SDK Trợ lý dùng mã truy cập OAuth 2.0 để cho phép thiết bị của bạn kết nối với Trợ lý.
Khi tạo nguyên mẫu, bạn có thể sử dụng công cụ uỷ quyền để dễ dàng tạo OAuth2.0
thông tin xác thực từ tệp client_secret_<client-id>.json
được tạo khi
đăng ký mẫu thiết bị của bạn.
Hãy làm như sau để tạo thông tin xác thực:
Sử dụng môi trường ảo Python để tách riêng công cụ uỷ quyền và các phần phụ thuộc của công cụ đó khỏi các gói Python của hệ thống.
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
Cài đặt công cụ uỷ quyền:
python -m pip install --upgrade google-auth-oauthlib[tool]
Chạy công cụ này. Xoá cờ
--headless
nếu bạn đang chạy từ một thiết bị đầu cuối trên thiết bị (không phải phiên SSH):google-oauthlib-tool --client-secrets /path/to/client_secret_client-id.json --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless
Khi bạn đã sẵn sàng tích hợp yêu cầu uỷ quyền trong quá trình cấp phép cơ chế của thiết bị của bạn, hãy đọc hướng dẫn của chúng tôi về Sử dụng OAuth 2.0 để truy cập Google API hiểu cách lấy, duy trì và sử dụng mã truy cập OAuth để cho phép thiết bị để giao tiếp với API Trợ lý.
Hãy làm theo các hướng dẫn sau:
- Phạm vi OAuth: https://www.googleapis.com/auth/assistant-sdk-prototype
Các quy trình OAuth được hỗ trợ:
- (Nên dùng) Ứng dụng đã cài đặt
- Ứng dụng máy chủ web
Xem các phương pháp hay nhất về quyền riêng tư và bảo mật để được đề xuất cách bảo mật thiết bị của bạn.
Xác thực kết nối gRPC bằng mã thông báo OAuth
Cuối cùng, hãy tập hợp tất cả các phần lại với nhau bằng cách đọc cách sử dụng phương thức dựa trên mã thông báo xác thực với Google để xác thực kết nối gRPC với API Trợ lý.
Đăng ký thiết bị của bạn
Đăng ký kiểu thiết bị và thực thể thiết bị theo cách thủ công hoặc thông qua công cụ đăng ký (có sẵn bằng Python).
Triển khai hộp thoại trò chuyện cơ bản bằng Trợ lý
- Triển khai ứng dụng gRPC truyền trực tuyến hai chiều cho Google Assistant Service API.
- Đợi người dùng kích hoạt yêu cầu mới (ví dụ: đợi gián đoạn GPIO từ một lượt nhấn nút).
Gửi
AssistRequest
với nhóm trườngconfig
(xemAssistConfig
). Hãy đảm bảo trườngconfig
chứa nội dung sau:- Trường
audio_in_config
chỉ định cách xử lý Dữ liệuaudio_in
sẽ được cung cấp trong các yêu cầu tiếp theo (xemAudioInConfig
). - Trường
audio_out_config
chỉ định định dạng mong muốn cho máy chủ để sử dụng khi trả vềaudio_out
thông báo (xemAudioOutConfig
). - Trường
device_config
xác định thiết bị đã đăng ký với Trợ lý (xemDeviceConfig
). - Trường
dialog_state_in
chứalanguage_code
được liên kết với yêu cầu (xemDialogStateIn
).
- Trường
Bắt đầu ghi.
Gửi nhiều cuộc gọi đi
AssistRequest
tin nhắn có dữ liệu âm thanh từ truy vấn bằng giọng nói trong trườngaudio_in
.Xử lý
AssistResponse
nhận được tin nhắn.Trích xuất siêu dữ liệu của cuộc trò chuyện từ
AssistResponse
. Ví dụ: lấyconversation_state
từdialog_state_out
vàvolume_percentage
(xemDialogStateOut
).Dừng ghi khi nhận được
AssistResponse
bằngevent_type
trong tổng sốEND_OF_UTTERANCE
.Phát lại âm thanh trong câu trả lời của Trợ lý với dữ liệu âm thanh lấy từ
audio_out
.Lấy
conversation_state
mà bạn đã giải nén trước đó rồi sao chép vàoDialogStateIn
trongAssistConfig
choAssistRequest
tiếp theo.
Bằng cách này, bạn nên sẵn sàng gửi những yêu cầu đầu tiên đến Google Trợ lý trên thiết bị của bạn.
Mở rộng hộp thoại trò chuyện bằng Hành động trên thiết bị
Mở rộng hộp thoại trò chuyện cơ bản ở trên để kích hoạt phần cứng duy nhất khả năng của thiết bị cụ thể:
- Trong
AssistResponse
sắp tới thư, trích xuất trườngdevice_action
(xemDeviceAction
). - Phân tích cú pháp tải trọng JSON của trường
device_request_json
. Tham khảo trang Device Traits (Đặc điểm thiết bị) cho phần danh sách các trait được hỗ trợ. Mỗi trang giản đồ trait cho thấy một mẫu EXECUTE yêu cầu bằng(các) lệnh thiết bị và các tham số được trả về trong tải trọng JSON.
Lấy bản chép lời yêu cầu của người dùng
Nếu đã kết nối màn hình với thiết bị, bạn có thể muốn sử dụng màn hình đó để
hiển thị yêu cầu của người dùng. Để lấy bản chép lời này, hãy phân tích cú pháp trường speech_results
trong AssistResponse
tin nhắn. Khi quá trình nhận dạng giọng nói hoàn tất, danh sách này sẽ chứa một mục
với stability
được đặt thành 1.0.
Nhận văn bản và/hoặc hình ảnh hiển thị phản hồi của Trợ lý
Nếu đã kết nối màn hình với thiết bị, bạn có thể muốn sử dụng màn hình đó để
hiển thị phản hồi bằng văn bản thuần tuý của Trợ lý đối với yêu cầu của người dùng. Văn bản này nằm trong
trong DialogStateOut.supplemental_display_text
.
Trợ lý hỗ trợ phản hồi bằng hình ảnh qua HTML5 cho một số truy vấn nhất định (Điều gì
thời tiết ở Mountain View? hoặc Bây giờ là mấy giờ?). Để bật chế độ này, hãy đặt
trường screen_out_config
trong AssistConfig
.
ScreenOutConfig
tin nhắn có trường screen_mode
cần được đặt thành PLAYING
.
AssistResponse
thông báo sẽ có trường screen_out
được đặt. Bạn có thể trích xuất dữ liệu HTML5 (nếu có) từ
Trường data
.
Gửi truy vấn thông qua dữ liệu nhập bằng văn bản
Nếu bạn có giao diện văn bản (ví dụ: bàn phím) được gắn với thiết bị,
đặt trường text_query
trong trường config
(xem AssistConfig
).
Không đặt trường audio_in_config
.
Khắc phục sự cố
Xem phần Khắc phục sự cố nếu bạn gặp vấn đề.