Làm theo hướng dẫn trong từng phần dưới đây để 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 khung RPC nguồn mở, có hiệu suất cao. Khung này phù hợp để phát trực tuyến âm thanh hai chiều.
Python
Nếu bạn đang dùng Python, hãy bắt đầu bằng hướng dẫn này.
C++
Hãy 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 các thiết bị được nhúng? Hãy xem mẫu SDK của Trợ lý 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 (API Dịch vụ của Trợ lý Google).
- Làm theo tài liệu về gRPC để tạo các liên kết gRPC cho ngôn ngữ bạn chọn
- Hãy làm theo các bước trong những phần dưới đây.
Uỷ quyền 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 nói chuyện với Trợ lý Google bằng Tài khoản Google của bạn.
Nhận mã thông báo OAuth với phạm vi SDK của Trợ lý
SDK Trợ lý sử 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 thông tin xác thực OAuth2.0 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ụ. Xoá cờ
--headless
nếu bạn đang chạy cờ này qua 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 việc uỷ quyền trong cơ chế cấp phép của thiết bị, hãy đọc hướng dẫn của chúng tôi về cách Sử dụng OAuth 2.0 để truy cập API Google để hiểu cách lấy, duy trì và dùng mã truy cập OAuth nhằm cho phép thiết bị của bạn giao tiếp với API Trợ lý.
Sử dụng các nguyên tắc sau đây khi làm theo các hướng dẫn này:
- Phạm vi OAuth: https://www.googleapis.com/auth/assistant-sdk-prototype
Các luồng OAuth được hỗ trợ:
- (Đề xuất) Ứ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 để biết các đề xuất về 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 xác thực dựa trên mã thông báo 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ý mẫu và thực thể thiết bị của bạn theo cách thủ công hoặc bằng công cụ đăng ký (có sẵn trong Python).
Triển khai hộp thoại trò chuyện cơ bản với Trợ lý
- Triển khai ứng dụng gRPC truyền trực tuyến hai chiều cho API dịch vụ Trợ lý Google.
- Chờ người dùng kích hoạt một yêu cầu mới (ví dụ: chờ ngắt GPIO sau khi nhấn nút).
Gửi tin nhắn
AssistRequest
có nhóm trườngconfig
(xemAssistConfig
). Hãy đảm bảo trườngconfig
chứa các 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 để máy chủ sử dụng khi trả về thông báoaudio_out
(xemAudioOutConfig
). - Trường
device_config
giúp xác định thiết bị đã đăng ký với Trợ lý (xemDeviceConfig
). - Trường
dialog_state_in
chứalanguage_code
liên kết với yêu cầu (xemDialogStateIn
).
- Trường
Bắt đầu quay.
Gửi nhiều tin nhắn
AssistRequest
đi có dữ liệu âm thanh của truy vấn bằng giọng nói trong trườngaudio_in
.Xử lý các tin nhắn
AssistResponse
đến.Trích xuất siêu dữ liệu về cuộc trò chuyện từ tin nhắn
AssistResponse
. Ví dụ: từdialog_state_out
, hãy lấyconversation_state
vàvolume_percentage
(xemDialogStateOut
).Dừng ghi khi nhận được
AssistResponse
cóevent_type
làEND_OF_UTTERANCE
.Phát lại âm thanh từ câu trả lời của Trợ lý bằng dữ liệu âm thanh từ trường
audio_out
.Lấy
conversation_state
mà bạn đã trích xuất trước đó rồi sao chép mã đó vào thông báoDialogStateIn
trongAssistConfig
choAssistRequest
tiếp theo.
Với thông tin này, bạn đã sẵn sàng để gửi những yêu cầu đầu tiên đến Trợ lý Google thông qua thiết bị của mình.
Mở rộng hộp thoại trò chuyện bằng Thao tác trên thiết bị
Mở rộng hộp thoại trò chuyện cơ bản ở trên để kích hoạt các tính năng phần cứng duy nhất của thiết bị cụ thể:
- Trong các thông báo
AssistResponse
đến, hãy 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 Trait (Chỉ số của thiết bị) để biết danh sách các trait được hỗ trợ. Mỗi trang giản đồ trait hiển thị một yêu cầu EXECUTE mẫu với(các) lệnh thiết bị và tham số được trả về trong tải trọng JSON.
Nhận bản chép lời yêu cầu của người dùng
Nếu có màn hình gắn vào thiết bị, bạn có thể sử dụng màn hình đó để hiển thị yêu cầu của người dùng. Để nhận bản chép lời này, hãy phân tích cú pháp trường speech_results
trong thông báo AssistResponse
. Khi tính năng nhận dạng lời nói hoàn tất, danh sách này sẽ chứa một mục có stability
được đặt thành 1.0.
Nhận văn bản và/hoặc kết xuất hình ảnh cho câu trả lời của Trợ lý
Nếu có màn hình gắn vào thiết bị, bạn nê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 trường 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 (Thời tiết ở Mountain View? hoặc Bây giờ là mấy giờ?). Để bật tính năng này, hãy đặt trường screen_out_config
trong AssistConfig
.
Thông báo ScreenOutConfig
có trường screen_mode
và bạn phải đặt thành PLAYING
.
Sau đó, các thông báo AssistResponse
sẽ được đặt trường screen_out
. 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 tính năng nhập văn bản
Nếu bạn đã gắn giao diện văn bản (ví dụ: bàn phím) vào thiết bị, hãy đặt trường text_query
trong trường config
(xem AssistConfig
). Đừng đặt trường audio_in_config
.
Khắc phục sự cố
Hãy xem trang Khắc phục sự cố nếu bạn gặp vấn đề.