請按照下列操作說明在裝置上執行自訂程式碼,以回應 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 套件,請繼續閱讀,瞭解如何為 OnOff 指令點燈 LED 燈。如果並未新增,請略過下一節,瞭解如何新增更多特徵和處理常式。
後續步驟 - Raspberry Pi
現在您已瞭解如何處理傳入的指令,請將程式碼範例修改成 LED 燈。如果您使用的是 Raspberry Pi,將會需要一些額外的硬體。
匯入 GPIO 套件
如要簡化 Raspberry Pi 上一般用途輸入/輸出 (GPIO) 接腳的軟體存取程序,請在虛擬環境中安裝 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」RPi.GPIO模組,控制 Pi 上的 GPIO 接腳。請將以下陳述式放在其他 import
陳述式附近:
import RPi.GPIO as GPIO
修改程式碼,一開始將輸出圖釘設為低邏輯狀態。收到 on 指令時,請將圖釘設為高邏輯狀態。收到關閉指令時,將圖釘設為低邏輯狀態。
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 燈應該就會亮起。
不過,真正的重頭戲還在後面。瞭解如何新增更多特徵和處理常式。