Tích hợp Trợ lý vào dự án của bạn (Các ngôn ngữ khác)

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:

  1. 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
    
  2. Cài đặt công cụ uỷ quyền:

    python -m pip install --upgrade google-auth-oauthlib[tool]
  3. 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:

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ý

  1. Triển khai ứng dụng gRPC truyền trực tuyến hai chiều cho API dịch vụ Trợ lý Google.
  2. 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).
  3. Gửi tin nhắn AssistRequest có nhóm trường config (xem AssistConfig). Hãy đảm bảo trường config chứa các nội dung sau:

    • Trường audio_in_config chỉ định cách xử lý dữ liệu audio_in sẽ được cung cấp trong các yêu cầu tiếp theo (xem AudioInConfig).
    • 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áo audio_out (xem AudioOutConfig).
    • Trường device_config giúp xác định thiết bị đã đăng ký với Trợ lý (xem DeviceConfig).
    • Trường dialog_state_in chứa language_code liên kết với yêu cầu (xem DialogStateIn).
  4. Bắt đầu quay.

  5. 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ường audio_in.

  6. Xử lý các tin nhắn AssistResponse đến.

  7. 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ấy conversation_statevolume_percentage (xem DialogStateOut).

  8. Dừng ghi khi nhận được AssistResponseevent_typeEND_OF_UTTERANCE.

  9. 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.

  10. Lấy conversation_state mà bạn đã trích xuất trước đó rồi sao chép mã đó vào thông báo DialogStateIn trong AssistConfig cho AssistRequest 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ể:

  1. Trong các thông báo AssistResponse đến, hãy trích xuất trường device_action (xem DeviceAction).
  2. 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ụcstability đượ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 đề.