本指南說明如何使用 API,將音訊輸入內容傳送至偵測意圖要求。Dialogflow 會處理音訊並將其轉換為文字,接著再嘗試比對意圖。這項轉換作業稱為「音訊輸入」、「語音辨識」、「語音轉文字」或「STT」。
事前準備
這項功能僅適用於用於使用者互動的 API。如果您使用的是整合,可以略過本指南。
閱讀本指南之前,請先完成下列工作:
- 詳閱 Dialogflow 基本概念。
- 執行設定步驟。
建立虛擬服務專員
如果您尚未建立服務帳戶,請立即建立:
- 前往 Dialogflow ES 主控台。
- 按照系統要求登入 Dialogflow 主控台。詳情請參閱 Dialogflow 主控台總覽。
- 按一下左側欄選單中的 [Create Agent] (建立代理程式)。(如果您已有其他代理程式,請按一下代理程式名稱然後捲動至底部,再按一下 [Create new agent] (建立新代理程式)。)
- 輸入代理程式的名稱、預設語言和預設時區。
- 如果您已建立專案,請輸入該項專案的資料。如要允許 Dialogflow 主控台建立專案,請選取 [Create a new Google project] (建立新 Google 專案)。
- 按一下 [Create] (建立) 按鈕。
將範例檔案匯入代理程式
本指南中的步驟會假設您的代理程式符合某些條件,因此您需要匯入為本指南準備的代理程式。匯入時,這些步驟會使用「還原」選項,覆寫所有介面設定、意圖和實體。
如要匯入檔案,請按照下列步驟操作:
-
下載
room-booking-agent.zip
檔案。 - 前往 Dialogflow ES 主控台。
- 選取所需的代理程式。
- 按一下代理程式名稱旁邊的「設定」settings 按鈕。
- 選取「Export and Import」分頁標籤。
- 選取「Restore From Zip」,然後按照操作說明還原下載的 ZIP 檔案。
偵測意圖
如要偵測意圖,請呼叫 Sessions
類型的 detectIntent
方法。
REST
下載book-a-room.wav
範例輸入音訊檔案,其內容為「book a room」(預訂會議室)。這個範例音訊檔案必須採用 Base64 編碼,才能透過下方的 JSON 要求提供。以下是 Linux 範例:
wget https://cloud.google.com/dialogflow/es/docs/data/book-a-room.wav base64 -w 0 book-a-room.wav > book-a-room.b64
如需其他平台的範例,請參閱 Cloud 語音轉文字 API 說明文件中的「Base64 編碼音訊內容」一節。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- AUDIO:Base64 編碼音訊內容
HTTP 方法和網址:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/agent/sessions/123456789:detectIntent
JSON 要求主體:
{ "queryInput": { "audioConfig": { "languageCode": "en-US" } }, "inputAudio": "AUDIO" }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "responseId": "3c1e5a89-75b9-4c3f-b63d-4b1351dd5e32", "queryResult": { "queryText": "book a room", "action": "room.reservation", "parameters": { "time": "", "date": "", "guests": "", "duration": "", "location": "" }, "fulfillmentText": "I can help with that. Where would you like to reserve a room?", "fulfillmentMessages": [ { "text": { "text": [ "I can help with that. Where would you like to reserve a room?" ] } } ], "intent": { "name": "projects/PROJECT_ID/agent/intents/e8f6a63e-73da-4a1a-8bfc-857183f71228", "displayName": "room.reservation" }, "intentDetectionConfidence": 1, "diagnosticInfo": {}, "languageCode": "en-us" } }
請注意,queryResult.action
欄位的值為「room.reservation」,而 queryResult.fulfillmentMessages[0|1].text.text[0]
欄位的值會要求使用者提供更多資訊。
Go
如要向 Dialogflow 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證機制」。
Java
如要向 Dialogflow 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證機制」。
Node.js
如要向 Dialogflow 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證機制」。
Python
如要向 Dialogflow 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證機制」。
其他語言
C#:請按照用戶端程式庫頁面上的C# 設定說明操作,然後參閱 .NET 適用的 Dialogflow 參考說明文件。
PHP:請按照用戶端程式庫頁面上的 PHP 設定操作說明操作,然後參閱 PHP 適用的 Dialogflow 參考文件。
Ruby:請按照用戶端程式庫頁面上的 Ruby 設定說明操作,然後參閱 Ruby 適用的 Dialogflow 參考文件。