處理指令

請按照下列操作說明,在裝置上執行自訂程式碼: 回覆 Google 助理的指令。

執行範例

您已定義特徵並更新模型,接著請檢查 確認 Google 助理會視情境傳回「開啟/關閉」指令 。

googlesamples-assistant-pushtotalk

按下 Enter 鍵並嘗試下列查詢:

啟用。

您應該會在主控台輸出內容中看到下列陳述式。如果沒有,請參閱 疑難排解操作說明

INFO:root:Recording audio request.
INFO:root:End of audio request detected
INFO:root:Transcript of user request: "turn on".
INFO:root:Playing assistant response.
INFO:root:Turning device on
INFO:root:Waiting for device executions to complete.
INFO:root:Finished playing assistant response.

您可以看到這些陳述式在原始碼中的位置。

取得原始碼

您現在可以開始建立自己的專案:

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

尋找指令處理常式

程式碼範例中的 pushtotalk.py 檔案會使用 SDK 傳送要求,並 接收 Google 助理的回覆。

cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/grpc
nano pushtotalk.py

搜尋下列處理常式定義:

device_handler = device_helpers.DeviceRequestHandler(device_id)

@device_handler.command('action.devices.commands.OnOff')
def onoff(on):
    if on:
        logging.info('Turning device on')
    else:
        logging.info('Turning device off')

onoff() 中的程式碼會處理 action.devices.commands.OnOff 指令。這個 指令屬於 OnOff 特徵重要性

目前,onoff() 定義會輸出至控制台。使用輔助程式 device_helpers.py 中的函式,用於剖析回應 JSON 並儲存指令 參數中的參數,以便使用您可以修改這個程式碼 您要的專案擁有狀態

如果使用 LED 燈組,請繼續閱讀下文,瞭解如何讓 LED 燈亮起來回應 拖曳到 OnOff 指令如果沒有,請跳至下一節瞭解如何 新增更多特徵和處理常式

後續步驟 - Raspberry Pi

現在您已瞭解如何處理傳入的指令,請修改程式碼範例 啟動 LED 燈。如果您使用 覆盆子 Pi。

匯入 GPIO 套件

簡化軟體存取方式,以便使用一般用途輸入/輸出 (GPIO) 接腳 安裝 Raspberry Pi,安裝 RPi.GPIO 安裝於虛擬環境中

pip install RPi.GPIO

修改範例

開啟 pushtotalk.py 檔案。

cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/grpc
nano pushtotalk.py

pushtotalk.py 檔案中,匯入 RPi.GPIO 模組,控制 Pi 上的 GPIO 接腳。請將以下聲明放在 其他 import 陳述式:

import RPi.GPIO as GPIO

修改程式碼,將輸出針腳一開始設為低邏輯狀態。當 ,請將接腳設為高邏輯狀態。當 則將接腳設為低邏輯狀態。

device_handler = device_helpers.DeviceRequestHandler(device_id)
GPIO.setmode(GPIO.BCM)
GPIO.setup(25, GPIO.OUT, initial=GPIO.LOW)

@device_handler.command('action.devices.commands.OnOff')
def onoff(on):
    if on:
        logging.info('Turning device on')
        GPIO.output(25, 1)
    else:
        logging.info('Turning device off')
        GPIO.output(25, 0)

儲存變更並關閉檔案。

執行範例

執行修改後的程式碼範例。

python pushtotalk.py

請使用與先前相同的查詢。LED 燈應該會開啟。

不過,真正的重頭戲還在後面。瞭解如何新增更多特徵和處理常式