Lệnh xử lý

Làm theo các hướng dẫn sau để thực thi mã tuỳ chỉnh trên thiết bị của bạn theo lệnh của Trợ lý Google.

Chạy mẫu

Bây giờ, bạn đã xác định được một đặc điểm và cập nhật mô hình, hãy kiểm tra để đảm bảo Trợ lý Google đang gửi lại lệnh Bật/Tắt cho truy vấn thích hợp.

googlesamples-assistant-hotword --device-model-id my-model

Hãy thử truy vấn sau:

Ok Google, bật lên.

Bạn sẽ thấy các câu lệnh sau trong đầu ra của bảng điều khiển. Nếu không, hãy xem phần hướng dẫn khắc phục sự cố.

ON_RECOGNIZING_SPEECH_FINISHED:
  {'text': 'turn on'}
ON_DEVICE_ACTION:
  {'inputs': [{'payload': {'commands': [{'execution': [{'command': 'action.devices.commands.OnOff',
  'params': {'on': True}}], 'devices': [{'id': 'E56D39D894C2704108758EA748C71255'}]}]},
  'intent': 'action.devices.EXECUTE'}], 'requestId': '4785538375947649081'}
Do command action.devices.commands.OnOff with params {'on': True}

Bạn sẽ tìm thấy nơi các câu lệnh này được in trong mã nguồn.

Lấy mã nguồn

Giờ thì bạn đã sẵn sàng bắt đầu dự án của riêng mình:

git clone https://github.com/googlesamples/assistant-sdk-python

Tìm trình xử lý lệnh

Tệp hotword.py trong mã mẫu sử dụng SDK để gửi yêu cầu và nhận phản hồi từ Trợ lý Google.

cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/library
nano hotword.py

Tìm định nghĩa trình xử lý sau:

def process_event(event):

Hiện tại, hàm này in ra mọi tên sự kiện Hành động trên thiết bị và mọi tham số có dòng sau:

print('Do command', command, 'with params', str(params))

Mã này xử lý lệnh action.devices.commands.OnOff. Lệnh này là một phần của giản đồ đặc điểm OnOff. Hiện tại, mã này chỉ in đầu ra ra bảng điều khiển. Bạn có thể sửa đổi mã này để làm bất cứ điều gì bạn muốn trên dự án của mình. Thêm khối sau trong lệnh print trong process_event().

print('Do command', command, 'with params', str(params)) # Add the following:
if command == "action.devices.commands.OnOff":
    if params['on']:
        print('Turning the LED on.')
    else:
        print('Turning the LED off.')

Chạy trực tiếp mã nguồn đã sửa đổi để xem kết quả.

python hotword.py --device-model-id my-model

Sử dụng cùng một truy vấn như trước đây:

Ok Google, bật lên.

Nếu bạn đã kết nối một đèn LED với Raffberry Pi, hãy đọc tiếp để tìm hiểu cách bật đèn LED theo lệnh OnOff. Nếu bạn chưa có, hãy bỏ qua phần tiếp theo để tìm hiểu cách thêm các đặc điểm và trình xử lý khác.

Các bước tiếp theo – Mâm xôi Pi

Bây giờ, bạn đã biết cách xử lý lệnh đến, hãy sửa đổi mã mẫu để bật đèn LED. Quá trình này sẽ yêu cầu thêm một số phần cứng nếu bạn đang sử dụng Raffberry Pi.

Nhập gói GPIO

Để đơn giản hoá quyền truy cập vào phần mềm vào các chân Nhập/Đầu ra cho mục đích chung (GPIO) trên Rspberry Pi, hãy cài đặt gói RPi.GPIO trong môi trường ảo.

pip install RPi.GPIO

Sửa đổi mẫu

Mở tệp hotword.py.

nano hotword.py

Trong tệp hotword.py, hãy nhập mô-đun RPi.GPIO để điều khiển các chân GPIO trên Pi. Đặt câu lệnh sau gần các câu lệnh import khác:

import RPi.GPIO as GPIO

Sửa đổi mã để đặt pin đầu ra ban đầu ở trạng thái logic thấp. Hãy làm việc này trong hàm main(), trước khi xử lý sự kiện:

with Assistant(credentials, device_model_id) as assistant:
    events = assistant.start()

    device_id = assistant.device_id
    print('device_model_id:', device_model_id)
    print('device_id:', device_id + '\n')
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(25, GPIO.OUT, initial=GPIO.LOW)
        ...

Sửa đổi mã bạn đã thêm trong process_event(). Khi nhận được lệnh bật, hãy đặt pin ở trạng thái logic cao. Khi nhận được lệnh tắt, hãy đặt ghim ở trạng thái logic thấp.

if command == "action.devices.commands.OnOff":
    if params['on']:
        print('Turning the LED on.')
        GPIO.output(25, 1)
    else:
        print('Turning the LED off.')
        GPIO.output(25, 0)

Lưu thay đổi rồi đóng tệp.

Chạy mẫu

Chạy mã mẫu đã sửa đổi.

python hotword.py --device-model-id my-model

Sử dụng cùng một truy vấn như trước đây. Đèn LED sẽ bật.

Đó mới chỉ là khởi đầu. Tìm hiểu cách thêm các đặc điểm và trình xử lý khác.