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

ทําตามวิธีการต่อไปนี้เพื่อเรียกใช้โค้ดที่กําหนดเองในอุปกรณ์ใน การตอบสนองต่อคำสั่งจาก 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):

ปัจจุบันฟังก์ชันนี้จะพิมพ์ชื่อเหตุการณ์ "การดำเนินการของอุปกรณ์" ทั้งหมดและทุกชื่อ ด้วยบรรทัดต่อไปนี้

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 ในการควบคุมพิน 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 เป็นสถานะ High Logic เมื่อได้รับคำสั่งปิด ให้ตั้งค่า ปักหมุดไปยังสถานะลอจิกต่ำ

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 ควรสว่างขึ้น

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