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