التعامل مع الأوامر

اتّبِع هذه التعليمات لتنفيذ رمز مخصّص على جهازك استجابةً لأوامر "مساعد Google".

تشغيل العيّنة

بعد أن حدّدت سمة وعدّلت النموذج، تتأكّد من أنّ "مساعد Google" يعيد إرسال أمر "تفعيل/إيقاف" لطلب البحث المناسب.

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

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

لتسهيل وصول البرامج إلى دبابيس الإدخال/الإخراج العام (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

عدِّل الرمز لضبط رقم التعريف الشخصي للمخرجات في البداية على الحالة المنطقية المنخفضة. يمكنك إجراء ذلك في دالة 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، اضبط الدبوس على الحالة المنطقية العالية. عند تلقي الأمر "إيقاف"، اضبط الدبوس على الحالة المنطقية المنخفضة.

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.

هذه ليست سوى البداية. تعرَّف على كيفية إضافة المزيد من السمات والمعالجات.