คําสั่งสําหรับจัดการ

ทำตามวิธีการเหล่านี้เพื่อเรียกใช้โค้ดที่กำหนดเองในอุปกรณ์เพื่อตอบสนองต่อคำสั่งจาก Google Assistant

เรียกใช้ตัวอย่าง

เมื่อคุณกำหนดลักษณะและอัปเดตโมเดลแล้ว ให้ตรวจสอบว่า Google Assistant ส่งคำสั่งเปิด/ปิดกลับมาสำหรับการค้นหาที่เหมาะสม

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

ลองใช้ข้อความค้นหาต่อไปนี้

Ok Google เปิด

คุณควรจะเห็นคำสั่งต่อไปนี้ในเอาต์พุตของคอนโซล หากไม่เห็น โปรดอ่านวิธีการแก้ปัญหา

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}

คุณจะเห็นตําแหน่งที่พิมพ์ข้อความเหล่านี้ได้ในซอร์สโค้ด

ดูซอร์สโค้ด

ตอนนี้คุณพร้อมที่จะเริ่มโครงการของคุณเองแล้ว:

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

ค้นหาตัวแฮนเดิลคําสั่ง

ไฟล์ hotword.py ในโค้ดตัวอย่างใช้ SDK เพื่อส่งคำขอและรับการตอบกลับจาก Google Assistant

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

ค้นหาคำจำกัดความของตัวแฮนเดิลต่อไปนี้

def process_event(event):

ปัจจุบันฟังก์ชันนี้จะพิมพ์ชื่อเหตุการณ์ Device Action และพารามิเตอร์ทั้งหมดในบรรทัดต่อไปนี้ออกมา

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

โค้ดนี้จะจัดการคำสั่ง action.devices.commands.OnOff คำสั่งนี้เป็นส่วนหนึ่งของสคีมาลักษณะ OnOff ปัจจุบันโค้ดนี้จะพิมพ์เอาต์พุตไปยังคอนโซลเท่านั้น คุณแก้ไขโค้ดนี้เพื่อทำทุกอย่างที่ต้องการในโปรเจ็กต์ได้ เพิ่มบล็อกต่อไปนี้ในส่วนคําสั่ง print ใน 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.')

เรียกใช้ซอร์สโค้ดที่แก้ไขแล้วโดยตรงเพื่อดูเอาต์พุต

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

ใช้การค้นหาเดิม:

Ok Google เปิด

หากคุณต่อ LED กับ Raspberry Pi ให้อ่านต่อไปเพื่อเรียนรู้วิธีเปิดไฟ LED ตามคำสั่ง OnOff หากไม่ระบุ ให้ข้ามส่วนถัดไปเพื่อดูวิธีเพิ่มลักษณะและเครื่องจัดการเพิ่มเติม

ขั้นตอนถัดไป - Raspberry Pi

เมื่อคุณรู้วิธีจัดการคำสั่งขาเข้าแล้ว ให้แก้ไขโค้ดตัวอย่างเพื่อติดไฟ LED ซึ่งจะต้องมีฮาร์ดแวร์เพิ่มเติมหากคุณใช้ Raspberry Pi

นำเข้าแพ็กเกจ GPIO

เพื่อให้การเข้าถึงซอฟต์แวร์ PIN อินพุต/เอาต์พุตทั่วไป (GPIO) บน Raspberry Pi ง่ายขึ้น ให้ติดตั้งแพ็กเกจ RPi.GPIO ในสภาพแวดล้อมเสมือนจริง

pip install RPi.GPIO

แก้ไขตัวอย่าง

เปิดไฟล์ hotword.py

nano hotword.py

ในไฟล์ hotword.py ให้นำเข้าโมดูล RPi.GPIO เพื่อควบคุม PIN GPIO บน Pi วางคำสั่งต่อไปนี้ไว้ใกล้กับคำสั่ง import อื่นๆ

import RPi.GPIO as GPIO

แก้ไขโค้ดเพื่อตั้งค่า PIN เอาต์พุตเป็นค่าตรรกะต่ำในขั้นต้น โปรดดำเนินการนี้ในฟังก์ชัน main() ก่อนประมวลผลเหตุการณ์

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

แก้ไขโค้ดที่คุณเพิ่มใน process_event() เมื่อได้รับคำสั่ง on แล้ว ให้ตั้งค่า PIN เป็นสถานะตรรกะระดับสูง เมื่อได้รับคำสั่ง off ให้ตั้ง PIN เป็นสถานะลอจิกต่ำ

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)

บันทึกการเปลี่ยนแปลงและปิดไฟล์

เรียกใช้ตัวอย่าง

เรียกใช้โค้ดตัวอย่างที่แก้ไขแล้ว

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

ใช้คำค้นหาเดิม ไฟ LED ควรติดสว่าง

นั่นเป็นแค่การเริ่มต้น ดูวิธีเพิ่มลักษณะและเครื่องจัดการ