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 trong phản hồi các 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 để yêu cầu truy vấn.

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

Hãy thử truy vấn sau:

Ok Google, bật.

Bạn sẽ thấy các câu lệnh sau trong kết quả của bảng điều khiển. Nếu không, hãy xem 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 in những câu lệnh này trong mã nguồn.

Lấy mã nguồn

Bây giờ, 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 đây:

def process_event(event):

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

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

Mã này xử lý lệnh action.devices.commands.OnOff. Chiến dịch này là một phần của OnOff giản đồ trait. Hiện tại, mã này chỉ in kết quả 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. Thêm khối sau dưới 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 của bạn để 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.

Nếu bạn đã kết nối đèn LED với Raspberry Pi, hãy tiếp tục đọc để tìm hiểu cách sáng đèn LED phản hồi lệnh Bật{0/}. Nếu bạn chưa làm như vậy, hãy bỏ qua phần tiếp theo để tìm hiểu cách bổ sung thêm các tính năng và trình xử lý.

Các bước tiếp theo – Raspberry 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. Bạn sẽ phải thêm một số phần cứng bổ sung nếu đang sử dụng Mâm xôi Pi.

Nhập gói GPIO

Để đơn giản hoá việc truy cập phần mềm vào các chân cắm Đầu vào/Đầu ra cho mục đích chung (GPIO) đang bật Raspberry Pi, cài đặt 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 tệp 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 chân đầu ra ban đầu thành trạng thái logic thấp. Nên 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ã mà bạn đã thêm trong process_event(). Khi nhận được lệnh bật, đặt chân này ở trạng thái logic cao. Khi nhận được lệnh tắt, hãy đặt ghim sang 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.

Đây chỉ mới là bước khởi đầu. Tìm hiểu cách bổ sung các tính năng và trình xử lý.