關鍵要點
Alexa 原生支持許多內置技能,例如將項目添加到您的購物清單或請求歌曲。但是,開發者可以使用 Alexa Skill Kit (ASK) 構建新的自定義技能。
ASK 是一套 API 和工具的集合,它處理與語音界面相關的大部分工作,包括語音識別、文本轉語音編碼和自然語言處理。 ASK 幫助開發者快速輕鬆地構建技能。
簡而言之,Alexa 能夠理解用戶語音命令的唯一原因是它定義了技能。每個 Alexa 技能都是旨在理解語音命令的軟件。此外,每個 Alexa 技能都有其自身定義的邏輯,該邏輯會為語音命令創建適當的響應。為了讓您了解一些現有的 Alexa 技能,它們包括:
如上所述,我們可以使用 Alexa Skill Kit 開發滿足我們需求的自定義技能,這是一套為此目的而設計的 API 和工具的集合。 ASK 包括語音識別、文本轉語音編碼和自然語言處理等工具。該工具包應該能夠讓任何開發者快速開始開發他們自己的自定義技能。
在本文中,您將學習如何創建一個基本的“獲取事實”Alexa 技能。簡而言之,我們可以要求 Alexa 向我們展示一個隨機的貓事實。完成任務的完整代碼可以在 GitHub 上找到。在我們開始之前,讓我們確保我們理解 Alexa 技能術語。
掌握 Alexa 技能術語
首先,讓我們學習用戶如何與自定義技能交互。這對於理解與技能相關的不同概念非常重要。
為了激活特定技能,用戶必須呼叫 Alexa 並要求打開技能。例如:“Alexa,打開貓事實”。通過這樣做,我們正在調用技能的調用名稱。基本上,調用名稱可以看作是應用程序的名稱。
現在我們已經啟動了正確的技能,我們可以訪問技能理解的語音意圖/命令。由於我們希望保持簡單,我們定義了一個“獲取貓事實”意圖。但是,我們需要提供示例句子來觸發意圖。一個意圖可以由許多示例句子觸發,這些句子也稱為話語。例如,用戶可能會說“給出一個事實”。因此,我們定義了以下示例句子:
甚至可以將調用名稱與意圖結合起來,如下所示:“Alexa,要求貓事實給出事實”。
現在我們知道了調用名稱和意圖之間的區別,讓我們繼續創建您的第一個 Alexa 技能。
創建亞馬遜開發者帳戶
首先,我們需要一個亞馬遜開發者帳戶。如果您已經有一個,您可以跳過本節。
註冊亞馬遜開發者帳戶是一個三步過程。亞馬遜需要一些個人信息,接受服務條款並提供付款方式。註冊亞馬遜開發者帳戶的優勢在於您可以訪問大量其他亞馬遜服務。成功完成註冊後,您將看到亞馬遜開發者控制面板。
登錄控制面板,然後單擊右上角的“開發者控制台”按鈕。
接下來,我們想打開 Alexa Skills Kit。
如果您無法打開 Alexa Skills Kit,請使用此鏈接。
在下一節中,我們將創建我們實際的技能。
創建我們的第一個自定義 Alexa 技能
好的,我們準備創建我們的第一個自定義 Alexa 技能。單擊藍色按鈕“創建技能”以打開創建新技能的菜單。
首先,它會提示我們輸入技能的名稱。正如您已經知道的那樣,我們想要隨機的貓事實,因此將技能稱為“自定義貓事實”(我們不能使用“貓事實”,因為這是 Alexa 設備的內置技能)。接下來,它會提示我們為您的技能選擇一個模型。我們可以選擇一些預定義的模型,或者選擇一個自定義模型,這給我們提供了完全的靈活性。由於我們不想處理不需要的代碼,我們選擇“自定義”選項。
*注意:如果您選擇預定義技能,您將獲得交互模型和示例句子(話語)的列表。但是,即使是自定義技能也配備了最基本的意圖,如取消、幫助、導航到主頁和停止。
接下來,我們需要選擇一種託管技能的方式。同樣,我們不想使事情過於復雜,並選擇“Alexa 託管 (Node.js)”選項。這意味著我們不必自己運行後端,這需要一些努力才能使其“符合 Alexa 標準”。這意味著您必鬚根據亞馬遜 Alexa 標準格式化響應,以便設備能夠理解這一點。 Alexa 託管選項將:
在您的帳戶中託管技能,直到 AWS 免費套餐限制,並讓您開始使用 Node.js 模板。您將可以訪問 AWS Lambda 端點、5 GB 的媒體存儲空間(每月 15 GB 的數據傳輸)和用於會話持久性的表格。
好的,現在所有設置都已到位,您可以單擊屏幕右上角的“創建技能”按鈕。此按鈕將在我們的亞馬遜開發者帳戶中生成實際的技能。
修改您的第一個 Alexa 技能
現在,如果您導航到 Alexa 開發者控制台,您會發現您的技能已列在那裡。單擊“編輯”按鈕以開始修改技能。
接下來,亞馬遜將顯示“貓事實”技能的“構建”選項卡。在左側,您會找到為技能定義的意圖列表。如前所述,默認情況下,Alexa Skills Kit 會生成一個“取消”、“停止”、“幫助”和“導航到主頁”意圖。前三個對於想要退出技能或不知道如何使用技能的用戶很有幫助。 “導航到主頁”最後一個僅用於涉及多個步驟的複雜技能。
首先,讓我們驗證技能的調用名稱是否正確。名稱應顯示為“自定義貓事實”。
如果您更改名稱,請確保點擊頁面頂部的“保存模型”按鈕。
第二步,我們要修改默認意圖“HelloWorldIntent”。
單擊意圖,我們將獲得一個不錯的圖形界面,允許我們更改意圖名稱或添加示例話語。
我個人更喜歡使用 JSON 編輯器,您可以在左側菜單中找到它。打開 JSON 編輯器時,您將看到以下 JSON 對象。
JSON 編輯器的優點是您可以一次修改所有意圖。首先,讓我們添加一個名為“GetFactIntent”的新意圖。
接下來,我們想添加一些示例話語,如下面的圖片所示。
修改後,您的 JSON 對象應如下所示。目前,我們不想為其他意圖定義示例話語。 Alexa Skills Kit 默認情況下會將“幫助”句子鏈接到“HelpIntent”。
注意:不要忘記單擊“保存模型”按鈕,然後單擊“構建模型”按鈕。 Alexa 基本上會構建模型並根據您使用示例話語定義的模型進行自我訓練。
讓我們轉到水平菜單中的“測試”選項卡。現在,將“技能測試已在”的下拉菜單切換到“開發”。這將允許我們測試技能。
目前,讓我們嘗試激活技能以查看一切是否正確。我們可以通過調用調用名稱來激活技能,如下圖所示。
接下來,我們將深入研究代碼選項卡。單擊“代碼”選項卡時,您將獲得一個包含默認代碼的在線編輯器。
首先,我們要復制 HelloWorldIntentHandler 的代碼並將其重命名為 GetFactIntentHandler。
之後,我們必須指定此處理程序可以處理哪種類型的意圖。第 21 行查找名為 GetFactIntent 的意圖。
現在我們找到了意圖,讓我們定義一個靜態響應:“我會說一個事實!”,我們將其分配給 speakOutput 變量。
最後,我們必須將 GetFactIntentHandler 添加到其他請求處理程序。我們可以簡單地將其添加到 addRequestHandlers 函數中。 不要忘記保存並構建意圖!
現在技能已保存並構建,讓我們簡要驗證一下響應。如果我們要求技能說出事實,它應該回复“我會說一個事實!”
如果一切正確,您可以繼續下一步。
作為最後一步,我們要查詢一個返回貓事實的簡單 API。為此,我使用以下 API 端點:https://www.php.cn/link/2c5baeed3fd870447056fc00bf792427。
此 API 端點返回事實和事實的長度。
<code>{ "fact": "Smuggling a cat out of ancient Egypt was punishable by death. Phoenician traders eventually succeeded in smuggling felines, which they sold to rich people in Athens and other important cities.", "length": 192 }</code>
由於 https 包是為 Node.js 內置的,因此我們可以在代碼中使用它來從 API 檢索數據。這就是我們如何做到的:
實際代碼可以在這裡找到:
<code class="language-javascript">const https = require('https'); const httpGet = () => { return new Promise(((resolve, reject) => { var options = { host: 'catfact.ninja', port: 443, path: '/fact', method: 'GET', }; const request = https.request(options, (response) => { response.setEncoding('utf8'); let returnData = ''; response.on('data', (chunk) => { returnData += chunk; }); response.on('end', () => { resolve(JSON.parse(returnData)); }); response.on('error', (error) => { reject(error); }); }); request.end(); })); }</code>
現在我們已經準備好了輔助方法,我們可以將其添加到 GetFactIntentHandler 中。請注意,由於我們要對請求使用 await,因此我們必須使 handle 函數成為異步函數。除此之外,我們調用 httpGet 函數以獲取貓事實響應並將 response.fact 分配給 speakOutput 變量。接下來,speakOutput 變量傳遞給 speak 命令,該命令由 Alexa 使用:
<code class="language-javascript">const GetFactIntentHandler = { canHandle(handlerInput) { return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest' && Alexa.getIntentName(handlerInput.requestEnvelope) === 'GetFactIntent'; }, async handle(handlerInput) { // const speakOutput = 'I will tell a fact!'; const response = await httpGet(); const speakOutput = response.fact; return handlerInput.responseBuilder .speak(speakOutput) //.reprompt('add a reprompt if you want to keep the session open for the user to respond') .getResponse(); } };</code>
我們已經準備好代碼更改了。 再次保存代碼,然後單擊部署按鈕。
作為最後一步,讓我們驗證技能是否從 API 獲取隨機貓事實。再次,讓我們轉到“測試”選項卡。
通過調用“打開貓事實”來啟動技能。接下來,您可以要求“說出事實”。如果一切順利,您應該會收到一個事實作為回复。
成功!
為了在支持 Alexa 的設備上測試您的自定義技能,您需要在與您的亞馬遜開發者帳戶相同的電子郵件地址下註冊 Alexa 設備。
更多信息可以在 Alexa 文檔中找到:
要使用支持 Alexa 的設備(例如 Amazon Echo)進行測試,請使用您用於在亞馬遜開發者門戶網站上註冊開發者帳戶的相同電子郵件地址註冊該設備。然後,您可以使用喚醒詞和您的調用名稱來調用您的技能:“Alexa,打開。”
如果您的設備使用的是除您的開發者帳戶以外的帳戶進行設置,請重置設備,然後使用您的開發者帳戶重新註冊。
理解基礎知識
這只是使用 Alexa 構建技能的開始。更高級的示例是可能的,例如使用意圖傳遞參數(選項)。還可以開發許多其他類型的技能,例如控制智能家居設備的技能。
如果您想了解有關 Alexa Skill 開發的更多信息,請查找以下資源:
關於亞馬遜 Alexa Skill 的常見問題解答 (FAQ)
為您的網站創建 Alexa 技能涉及多個步驟。首先,您需要設置一個亞馬遜開發者帳戶。擁有帳戶後,導航到 Alexa Skills Kit 開發者控制台並單擊“創建技能”。您需要為您的技能提供一個名稱並選擇一個要添加到您的技能中的模型。之後,您需要為您的技能構建交互模型,其中包括意圖、槽和示例話語。構建交互模型後,您可以在發布之前繼續在開發者控制台中測試您的技能。
Alexa 技能包含幾個關鍵組件。這些包括調用名稱(用戶用來激活您的技能的名稱)、意圖(代表滿足用戶請求的操作)、槽(充當用戶輸入佔位符的變量)和示例話語(用戶可能用來與您的技能交互的短語)。這些組件中的每一個都在您的技能如何運行以及與用戶交互方面發揮著至關重要的作用。
測試您的 Alexa 技能是開發過程中的重要部分。您可以在 Alexa Skills Kit 開發者控制台中測試您的技能。只需導航到控制台中的“測試”選項卡,即可開始測試您的技能。您可以鍵入或說出短語以查看您的技能如何響應,還可以測試多輪對話以查看您的技能如何處理正在進行的交互。
構建和測試 Alexa 技能後,您可以在 Alexa Skills Kit 開發者控制台中提交進行認證。在提交技能之前,請確保您已完成開發過程中的所有必要步驟,包括設置技能的元數據和徹底測試您的技能。提交技能後,它將經過審核過程,然後才能發布。
Alexa Presentation Language (APL) 是一種允許開發者為 Alexa 技能創建視覺和音頻體驗的語言。使用 APL,您可以為帶有屏幕的設備設計豐富、交互式的顯示,還可以為沒有屏幕的設備創建音頻響應。 APL 是增強 Alexa 技能用戶體驗的強大工具。
要在您的 Alexa 技能中使用 APL,您需要在技能的響應中包含 APL 指令。這些指令定義響應的視覺和音頻組件。您可以使用 Alexa Skills Kit 開發者控制台中的 APL 創作工具設計您的 APL 文檔,該工具提供了一個用於創建和預覽設計的可視化界面。
用於遊戲的 Alexa Web API 是一組 Web 技術,允許開發者為帶有屏幕的 Alexa 設備創建視覺豐富且交互的遊戲體驗。使用用於遊戲的 Alexa Web API,您可以使用標準 Web 技術(如 HTML、CSS 和 JavaScript)來構建您的遊戲體驗。
要在您的 Alexa 技能中使用用於遊戲的 Alexa Web API,您需要在技能的清單中包含用於遊戲的 Alexa Web API 接口。然後,您可以使用 Alexa.Presentation.HTML.Start 指令啟動 Web 應用程序會話,並可以使用 Alexa.Presentation.HTML.HandleMessage 指令處理來自 Web 應用程序的消息。
Alexa Skills Kit (ASK) 是一套自助服務 API、工具、文檔和代碼示例的集合,使您可以更輕鬆地為 Alexa 構建技能。使用 ASK,您可以利用亞馬遜在語音設計領域的知識和開創性工作。
您可以通過利用其各種功能和工具來使用 Alexa Skills Kit (ASK) 構建您的 Alexa 技能。 ASK 提供了一系列資源,包括 ASK SDK、ASK CLI、ASK 開發者控制台和 ASK 文檔。這些資源提供了一套全面的工具,用於構建、測試和發布您的 Alexa 技能。
以上是如何建立第一個亞馬遜的Alexa技能的詳細內容。更多資訊請關注PHP中文網其他相關文章!