翻譯|使用教程|編輯:鄭恭琳|2021-03-24 11:19:27.497|閱讀 205 次
概述:如果您像我一樣,就會不斷想象完全實現的物聯網生態系統的未來可能性。在家庭環境中,我想象我的汽車,GPS和Nest可以一起工作,以預測我的到來并對氣候控制進行適當的調整。或是冰箱,打蛋器和Amazon Fresh在我什至不知道需要它們之前就毫不費力地互相訂購雞蛋,這是什么未來。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
如果您像我一樣,就會不斷想象完全實現的物聯網生態系統的未來可能性。在家庭環境中,我想象我的汽車,GPS和Nest可以一起工作,以預測我的到來并對氣候控制進行適當的調整。或是冰箱,打蛋器和Amazon Fresh在我什至不知道需要它們之前就毫不費力地互相訂購雞蛋,這是什么未來。
在其他時候,我堅信物聯網將帶來反烏托邦式的未來(如Wired令人發指的詳細描述)。
幸運的是,我們處于這種互連水平上的某些方式。物聯網的發展還處于起步階段,物聯網開發人員必須克服一些關鍵的挑戰。
似乎已經達成共識,環境復雜性是一個重大挑戰,這是一個棘手的挑戰,因為復雜性是物聯網領域的重點–作為物聯網設備的開發者,我可能會與許多下游的第三方API集成,而其他開發人員可能會使用我公開的API。
在物聯網需求增加之前,我們可能已經通過創建物理測試實驗室在API和設備生態系統中測試了我們的設備。現在,這是一個過時且昂貴的主張,并且開發人員通常無法控制來自第三方API或設備的數據(這對于邊緣案例測試至關重要)。
這就是為什么服務虛擬化是解決方案的關鍵部分。我們可以模擬下游API并控制設備消耗的數據,以驗證集成測試中的異常情況。
在本文中,我將使用Amazon Echo演示這些功能,因為它可以成為家庭IoT生態系統的中心樞紐(也許您甚至可以像我一樣擁有一個)。
首先,我將指導您完成使用AWS Lambda實施自己的Alexa技能的步驟。通過此電話,您可以詢問Alexa的天氣狀況,以獲取郵政編碼。
然后,我們將在Azure中部署Parasoft虛擬服務,以模擬來自Weather API的響應,以進行邊緣案例測試。 (例如,當有雷雨或外面有101 F時,Alexa會怎么說?)
跟隨自己的先決條件:
互聯網連接(很明顯)
您自己的Amazon Echo或Echo Dot可以改善體驗,但您也可以使用模擬器。
一個Amazon開發人員帳戶(//developer.amazon.com/)和Amazon Web服務帳戶(//aws.amazon.com/)。
在//openweathermap.org/api上以開發人員身份注冊,以獲取開放天氣API的API密鑰。
一個用于訪問Microsoft Azure的Microsoft帳戶(//signup.live.com)。
對REST API和JSON的基本了解。
在第1部分中,我們將設置Alexa技能和Lambda函數。
用戶將對Alexa說話(用戶的輸入稱為“發言”)。
我們的Alexa技能會將這種“話語”映射為“意圖”
我們的Alexa技能將向我們的AWS Lambda函數發送一個JSON請求。 Lambda是Amazon的一項強大功能,可讓您上傳一些代碼并按需在云中執行它。您只需要在執行時付費即可。在此示例中,Lambda函數將決定如何處理我們的Intent請求,并具有代表Alexa為用戶創建響應消息的邏輯。
要創建響應,我們的Lambda函數必須調用開放天氣API來獲取當前的天氣信息。
在第2部分中,我們將在Azure中部署Parasoft虛擬服務器。然后,我們將在Lambda函數和OpenWeatherMap API之間放置一個Parasoft代理。該代理將使我們能夠控制來自AWS Lambda的天氣請求,將其發送到真正的OpenWeatherMap API或帶有罐裝響應的虛擬表示。
1. 首先,我們需要確保我們位于Amazon Web Services控制臺(//console.aws.amazon.com)的“美國東部(弗吉尼亞北部)”地區。當前,這是Lambda可用的唯一區域:
2. 首先創建Lambda函數。登錄(//console.aws.amazon.com/lambda/)并選擇藍色的“創建Lambda函數”按鈕:
3. 在“選擇藍圖”下,選擇“空白功能”,然后選擇Alexa技能套件作為Lambda功能的觸發器。如果您在列表中沒有看到“ Alexa Skills Kit”,則可能不在“美國東部(弗吉尼亞北部)”區域。
這里發生了什么事?我們必須指定調用Lambda函數的方式,Alexa Skills Kit將允許Alexa啟動它(一旦它收到正確的話語,我們稍后將對其進行配置)。
4. 給該函數命名為“ virtualWeather”,然后選擇“ Node.js 4.3”作為運行時。就本文而言,我們將使用我已經在此處構建的技能,因此請立即下載。如果您想查看底層的源代碼,可以在這里找到。
5. 在“代碼輸入類型”下拉列表中,選擇“上傳.ZIP文件”,然后選擇在步驟4中下載的virtual-weather.zip。
6. 并添加兩個環境變量-host和api_key:
目前,“主機”應等于//api.openweathermap.org。 “ api_key”是當您注冊為開發人員時將從OpenWeatherMap收到的32位字母數字鍵(有關執行此操作的信息,請參見上面的前提條件列表)。
7. 在“ Lambda函數處理程序和角色”下,在“角色”下拉菜單下選擇“創建自定義角色”。在出現的新窗口中,將所有內容保留為默認值,然后選擇“允許”。
8. 返回“配置功能”頁面,您可以為其他所有設置保留默認選項,然后單擊“下一步”。如果一切正常,在“查看”頁面上,選擇“創建功能”。
9. 創建函數后,請確保復制頁面右上角的ARN ID。我們稍后將需要它:
10. 現在我們的Lambda函數就位了,我們必須定義一個Alexa Skill。 登錄到Amazon Developer門戶(//developer.amazon.com)并選擇Alexa選項卡。 選擇“ Alexa技能套件入門:
11. 點擊“添加新技能”。 為其指定名稱和“天氣”的調用名稱
12. 在“交互模型”下的“意圖模式”下發布以下內容:
{ "intents": [ { "slots": [ { "name": "Zip", "type": "AMAZON.Number" } ], "intent": "GetWeatherForZipIntent" } ] }
13. 在示例話語下發布以下內容:
GetWeatherForZipIntent what’s the weather for zip code {Zip}
GetWeatherForZipIntent what’s the weather for {Zip}
GetWeatherForZipIntent what’s the weather in {Zip}
最后兩個步驟準確地指定了我們的用戶如何與我們的技能進行交互。我們的示例話語將用戶的語音輸入映射到Intents.Intent類型(在這種情況下為GetWeatherForZipIntent)和用戶指定的郵政編碼將在請求中發送給我們的Lambda函數。
14. 在配置下,選擇AWS Lambda ARN(Amazon資源名稱),然后輸入您先前復制的函數ARN:
我們已經準備好進行測試!在“文字”標簽下,輸入示例“話語”,例如“ 91016的天氣如何”,然后點擊“詢問天氣”。您應該看到發送到Lambda函數的JSON請求及其響應:
如果您的Echo已連接到該帳戶,并且已啟用此技能以對其帳戶進行測試(可以在“測試”頁面上進行此操作),則也可以與Alexa交談以進行測試。說出類似“ Alexa,詢問天氣,91016的天氣如何”之類的內容。
這就是Alexa設置!還不錯吧?
但是,本文開頭提出的復雜性和外部依存關系面臨的主要挑戰是什么?
我們的Lambda函數依賴于提供實時,真實數據的外部API。作為物聯網設備的開發人員或測試人員,我們如何確保我們接收到需要測試不同條件的下游數據?
例如,讓我們看一下我們的Alexa技能weather.js的一部分:
我們這里有一些簡單的邏輯,可以根據我們的天氣描述添加適合天氣的短語。例如,“撐一把雨傘!” JSON響應的描述字段中提到下雨時,我們對Alexa響應的響應。
那么我們將如何測試呢?除非您準備好進行可靠的雨舞,或者碰巧住在西雅圖,否則這將不容易。將測試自動化(為此我們需要來自OpenWeather API的一致,可重復的數據,這不太可能)添加到組合中,我們遇到了一個非常棘手的問題。
顯而易見,簡單的答案是服務虛擬化。這將使我們能夠模擬Weather API并測試不同的情況。 Parasoft擁有免費的服務虛擬化平臺(連續測試平臺),可在Azure中進行30天的免費試用。
1. 登錄到您的Azure門戶,然后選擇“新建”以訪問市場:
2. 在市場中,搜索“ Parasoft”,然后選擇“按需服務虛擬化”。如果您先前已從Parasoft處獲得了特殊許可,則可以選擇“ BYOL”選項。單擊創建。
3. 提供虛擬機的名稱,然后輸入用戶名和密碼。您可以選擇為VM創建新的資源組,也可以將其添加到現有VM。所有其他選項可以保留為默認值。單擊確定。
4. 選擇虛擬機大小(建議為DS2_V2或更好)。單擊確定。
5. 如果需要,您可以在“設置”下更改其他配置。建議不要更改默認配置,除非有特殊原因。單擊確定。
6. 單擊“摘要”視圖上的“確定”。
7. 在購買視圖上,單擊購買。免費試用期結束后(前30天),我們將向您收費。 VM創建過程將需要幾分鐘才能完成。
8. VM的狀態為“正在運行”后,選擇VM并復制其公共IP地址。
9. 在瀏覽器中轉到http:// <VM_IP_Address>。連續測試平臺主菜單將出現。一旦“在線百分比”窗口小部件顯示為“ 100%”,虛擬機將被完全配置并初始化:
10. 在頂部附近,單擊“添加系統”:
11. 選擇“從文件導入系統”,然后瀏覽到AlexaWeatherSystem.zip(在此處下載)。選擇“AzureVirtServer”作為目標服務器,然后單擊“導入”:我們現在已經導入了AlexaWeatherSkill系統,虛擬服務和相關數據。
12. 最后,將代理端點放置在Lambda函數和OpenWeatherMap API之間。代理部署在http:// <VM_IP_Address>:9080 / proxy
進入AWS Lambda(//console.aws.amazon.com/lambda/)中的virtualWeather函數,并將我們創建的環境變量更改為代理端點:
13. 在我們的環境(http:// <VM_IP_Address> / em / ui / environments / 1)中,我們現在可以控制返回到Lambda函數的數據以測試不同的條件。這將改變我們Alexa的按需行為!從OpenWeatherMap API組件下的下拉菜單中選擇T-Storm,然后選擇“設置”按鈕:
現在,流量已定向到我們的虛擬“ T暴風”服務,并且正在返回響應(指示下雨和雷暴)。說出類似“ Alexa,詢問virtualWeather 91016中的天氣”之類的內容,您會聽到“拿一把雨傘!蒙羅維亞有雷暴和大雨。”
現在,我們可以控制天氣了!
那么,從這里去哪里呢?以下是一些可能的后續步驟:
我也強烈推薦Brian Donohue在這里撰寫有關創建您的第一個Alexa技能的文章。我也推薦Ryan Ray在這里的文章。我已經針對他們在本文中使用的Lambda函數改編了他們兩個教程中的代碼。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: