Menangani Perintah

Ikuti petunjuk ini untuk mengeksekusi kode kustom di perangkat Anda sebagai respons terhadap perintah dari Asisten Google.

Menjalankan contoh

Setelah Anda menentukan trait dan memperbarui model, periksa untuk memastikan Asisten Google mengirimkan kembali perintah Aktif/Nonaktif untuk kueri yang sesuai.

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

Coba kueri berikut:

Ok Google, aktifkan.

Anda akan melihat pernyataan berikut dalam output konsol. Jika tidak, lihat petunjuk pemecahan masalah.

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}

Anda akan menemukan tempat pernyataan ini dicetak dalam kode sumber.

Mendapatkan kode sumber

Sekarang Anda siap untuk memulai project sendiri:

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

Menemukan pengendali perintah

File hotword.py dalam kode contoh menggunakan SDK untuk mengirim permintaan dan menerima respons dari Asisten Google.

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

Telusuri definisi pengendali berikut:

def process_event(event):

Saat ini, fungsi ini mencetak setiap nama peristiwa Tindakan Perangkat dan parameter apa pun dengan baris berikut:

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

Kode ini menangani perintah action.devices.commands.OnOff. Perintah ini adalah bagian dari skema karakteristik OnOff. Saat ini, kode ini hanya mencetak output ke konsol. Anda dapat mengubah kode ini untuk melakukan apa pun yang Anda inginkan pada project Anda. Tambahkan blok berikut di bagian perintah print di 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.')

Jalankan kode sumber yang telah dimodifikasi secara langsung untuk melihat output.

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

Gunakan kueri yang sama seperti sebelumnya:

Ok Google, aktifkan.

Jika Anda menghubungkan LED ke Raspberry Pi, baca terus untuk mempelajari cara menyalakan LED sebagai respons terhadap perintah OnOff. Jika tidak, lewati bagian berikutnya untuk mempelajari cara menambahkan ciri dan pengendali lainnya.

Langkah berikutnya - Raspberry Pi

Setelah Anda mengetahui cara menangani perintah yang masuk, ubah kode contoh untuk menyalakan LED. Proses ini akan memerlukan hardware tambahan jika Anda menggunakan Raspberry Pi.

Mengimpor paket GPIO

Untuk menyederhanakan akses software ke pin Input/Output (GPIO) Tujuan Umum pada Raspberry Pi, instal paket RPi.GPIO di lingkungan virtual.

pip install RPi.GPIO

Mengubah sampel

Buka file hotword.py.

nano hotword.py

Dalam file hotword.py, impor modul RPi.GPIO untuk mengontrol pin GPIO pada Pi. Tempatkan pernyataan berikut di dekat pernyataan import lainnya:

import RPi.GPIO as GPIO

Ubah kode untuk menyetel pin output di awal ke status logika rendah. Lakukan hal ini di fungsi main(), sebelum memproses peristiwa:

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

Ubah kode yang Anda tambahkan di process_event(). Saat perintah on diterima, tetapkan pin ke status logika tinggi. Saat perintah nonaktif diterima, setel pin ke status logika rendah.

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)

Simpan perubahan Anda dan tutup file tersebut.

Menjalankan contoh

Jalankan kode contoh yang telah dimodifikasi.

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

Gunakan kueri yang sama seperti sebelumnya. LED akan menyala.

Itu baru permulaan. Pelajari cara menambahkan lebih banyak ciri dan pengendali.