資料介紹
描述
概括
該項目結(jié)合使用屏幕抓取和 API 來獲取弗吉尼亞北部環(huán)城公路內(nèi) 66 號州際公路的當(dāng)前行駛速度和當(dāng)前可變通行費,并通過亞馬遜的 Alexa 語音服務(wù)向用戶提供這些信息。要試用它,請先啟用它(只需說“啟用 66 個通行費”或訪問亞馬遜技能商店中的“66 個通行費”)。從此,只要說一句“開通六十六通行費”。
資源
該項目使用 Alexa 的語音服務(wù)。代碼使用 Python 3 編寫,使用Alexa Skills Kit SDK for Python。該代碼在 AWS 的 lambda 服務(wù)上運行。它還(最少)使用 DynamoDB 來存儲特定于用戶的信息。行程時間是從弗吉尼亞交通部 (VDOT) 的511 弗吉尼亞交通信息網(wǎng)站上獲取的。實時通行費價格是通過 VDOT 的SmarterRoads數(shù)據(jù)門戶的 API 獲得的。Web 抓取和 XML 解析是使用 Python 的Beautiful Soup庫完成的。
python 代碼以及交互模型(JSON 文件)可在https://github.com/ViennaMike/I-66-Tolls獲得
背景
我正在尋找一個將使用SmarterRoads門戶上的數(shù)據(jù)集之一的項目,并且我認(rèn)為能夠檢查北弗吉尼亞環(huán)城公路內(nèi) 66 號州際公路的動態(tài)通行費會很有用。入站交通在早上 5:30 到 9:30 之間收費,而出站交通在下午 3:00 到 7:00 之間收費。
通行費會動態(tài)調(diào)整以保持高速。雖然通行費可能會在檢查家里的費用和司機(jī)到達(dá)入口的時間之間發(fā)生變化,但了解高度可變的通行費仍然很有用,尤其是因為整個 10 英里長度的通行費有時會飆升至 40 美元以上。
我之前用亞馬遜的模板寫過一個簡單的問答技能,但這是我的第一個自定義技能。
描述
Alexa skill 的整體架構(gòu)如下圖所示:
高級架構(gòu)
當(dāng)用戶與技能交互時,系統(tǒng)會根據(jù)開發(fā)人員在 Alexa 技能構(gòu)建器中定義的交互模型處理輸入。這是在 JSON 文件中捕獲的。技能構(gòu)建器也是您告訴技能在哪里可以找到用于處理請求的執(zhí)行代碼并為認(rèn)證和分發(fā)準(zhǔn)備技能的地方。
在 66 Tolls 的情況下,有八個自定義意圖,以及 Alexa 內(nèi)置意圖,例如 HelpIntent、FallbackIntent、StopIntent 等。自定義意圖是:
- get_speeds 用于獲取兩個大致平行的旅行選項(I-66 和 US-50)的速度和旅行時間
- get_toll_hours 獲取有關(guān)通行費生效時間的靜態(tài)信息
- get_details 獲取有關(guān)動態(tài)收費系統(tǒng)如何工作的額外靜態(tài)信息
- list_interchanges 獲取進(jìn)出入口列表
- get_toll 獲取指定方向從給定入口到出口的當(dāng)前通行費
- save_trip 保存每個方向用戶最頻繁的進(jìn)出
- get_favs 向用戶報告他之前保存的行程。
- get_specific_help 為特定類型的請求提供幫助(獲取通行費、獲取速度和保存行程)。
當(dāng)之前保存過行程的用戶打開該技能時,如果是早上,該技能會立即返回相應(yīng)的當(dāng)前入站通行費,如果是晚上或下午,則返回出站通行費。
Alexa Skills Kit SDK 包含內(nèi)置功能,可簡化與 Amazon 的DynamoDB NoSQL 數(shù)據(jù)庫的交互。這個技能使用一個簡單的DynamoDB表來存儲user_id(key),最頻繁的入站出入口,最頻繁的出站出入口。
到目前為止,該項目最簡單的部分是從兩個 VDOT 源獲取旅行時間和通行費的代碼。有一個用于收費數(shù)據(jù)的 API,我不得不做一些簡單的網(wǎng)絡(luò)抓取來獲取旅行時間數(shù)據(jù)。這段代碼可以在代碼中的 get_travel_times() 和 get_tolls() 函數(shù)中找到。
開發(fā)語音交互模型需要多次迭代,我發(fā)現(xiàn)隨著時間的推移,我能夠改進(jìn)對話模型,同時減少意圖的數(shù)量和與每個意圖關(guān)聯(lián)的槽類型的數(shù)量。然而,即便如此,我發(fā)現(xiàn)我的技能的第一個發(fā)布版本并沒有像我預(yù)期的那樣為用戶工作。大多數(shù)情況下在技術(shù)上運行良好(有一個嚴(yán)重錯誤),但除我以外的用戶說的事情與我想象的不同,并以不同的方式尋求幫助。不僅要花時間思考用戶將如何與您的技能互動(就像我一開始所做的那樣),而且還要讓其他人也測試您的技能并獲得反饋,這絕對是值得的。
因為這對我來說是新的,所以花了相當(dāng)多的時間和反復(fù)試驗來弄清楚如何編寫處理程序代碼,尤其是如何處理會話和持久屬性以及與 DynamoDB 的交互。我使用了大量資源,其中最好的是 Ralu Bolovan 的Skill SDK文檔、Color Picker示例應(yīng)用程序和A Beginner's Guide to the New AWS Python SDK for Alexa 。如文檔中所述,python SDK 支持兩種編碼模型,一種基于帶有裝飾器的函數(shù),另一種基于類。我選擇使用類,但拾色器示例使用修飾函數(shù)。
我遇到的一些麻煩來自兩個因素:1) Alexa 技能的界面隨著時間的推移發(fā)生了變化。它一直在改進(jìn),但這也意味著網(wǎng)絡(luò)上的一些示例和教程已經(jīng)過時了。2) 雖然有詳盡的文檔,但許多教程和示例都側(cè)重于簡單的演示。出于這個原因,退后一步并閱讀更多 SDK 而不是總是跳進(jìn)去可能更好。例如,我需要讓我的代碼在每次調(diào)用意圖時都做一些事情,無論意圖是什么。事實證明這是由請求攔截器和響應(yīng)攔截器處理的,大多數(shù)簡單示例都忽略了它們。這一點,連同對使用 DynamoDB 的全面演練,是我找到適用于 Alexa 的新 AWS Python SDK 初學(xué)者指南的原因 如此樂于助人。
我最初希望該技能的調(diào)用是“我六十六通行費”,但我發(fā)現(xiàn) Alexa 無法將其識別為調(diào)用。出于這個原因,我不得不調(diào)用“六十六通行費”而不是“我。六十六通行費?!?/font>
我還發(fā)現(xiàn),如果你使用 Alexa 的內(nèi)置“確認(rèn)”功能,那么當(dāng)你的代碼第一次被調(diào)用時,handler_input.request_envelope.session.new被設(shè)置為 False,顯然是因為內(nèi)置的確認(rèn)請求啟動了會議。這是要小心的事情。由于這個和其他原因,我最終檢查了我之前是否初始化了會話屬性,而不是檢查會話是否是新的。
我修復(fù)的最后一個技術(shù)錯誤是我沒有考慮過服務(wù)器的“本地時間”是什么。我一直天真地認(rèn)為,既然我使用的是AWS的北弗吉尼亞服務(wù)器,那么本地時間就是美國東部時區(qū),但是所有Lambda服務(wù)器都使用GMT作為本地時間,這更有意義。所以我使用 pytz 庫轉(zhuǎn)換為本地時間。
對于語音界面,我發(fā)現(xiàn)我必須擴(kuò)展插槽值的同義詞列表(例如用于出口的名稱),添加更具體的幫助查詢,除了全面的,因此很長,“幫助”意圖,并利用用于檢查用戶提供的插槽值的界面內(nèi)置功能,我在簡單教程中沒有讀到過。
我希望這個示例對想要編寫自己的自定義 Alexa 技能的其他人有所幫助。
- 有源濾波裝置在軌道交通行業(yè)的應(yīng)用與選型 0次下載
- YNH-360 人臉識別通行主板規(guī)格書
- 基于可拓路徑的密集人群環(huán)境通行策略綜述 12次下載
- allegro學(xué)習(xí)教程之查看GXL線長 0次下載
- 公交車??空镜目焖俾烦隹?b class="flag-6" style="color: red">通行能力模型 14次下載
- 解決干擾問題的通行做法資料下載
- 溫濕度曲線圖實時查看終端的PCB原理圖及源碼 38次下載
- 如何使用Alexa語音控制電視遙控器 11次下載
- 如何使用區(qū)域道路實況數(shù)據(jù)進(jìn)行交通行為譜分析的方法說明 3次下載
- ADAS技術(shù)有什么作用?如何減少道路的安全問題? 8次下載
- Getting Started with RFID 2次下載
- 電話自動催費軟件9.3
- 硬件型號查看工具
- 008密碼查看器V2.34
- 萬能文件查看器下載 0次下載
- DC電源降壓芯片型號怎么查看 908次閱讀
- 寄存器查看器的功能和使用 1383次閱讀
- Linux系統(tǒng)中的10個常用的文本查看命令 1w次閱讀
- 路由表的介紹與查看 3026次閱讀
- 如何查看模塊的診斷信息 1807次閱讀
- 如何在Linux中查看隱藏文件 1.5w次閱讀
- 如何在IDEA中查看依賴關(guān)系 1.8w次閱讀
- 計算機(jī)端口在哪里查看 2.7w次閱讀
- Linux終端中查看圖像的方法 4339次閱讀
- 關(guān)于ETC的使用技巧及遇到問題時的正確措施 2949次閱讀
- 微雪電子ROC-RK3308主板CC-Amazon Alexa簡介 1282次閱讀
- 簡述Linux文本查看命令 3435次閱讀
- 智能交通行業(yè)有哪些值得關(guān)注 2159次閱讀
- 單相費控智能電表的原理及設(shè)計 1.4w次閱讀
- 無線設(shè)備傳輸距離的估算與費里斯傳輸公式 5018次閱讀
下載排行
本周
- 1SMD LED選型手冊 貼片燈珠
- 5.47 MB | 3次下載 | 免費
- 2加密芯片的一種破解方法和對應(yīng)加密方案改進(jìn)設(shè)計
- 0.29 MB | 1次下載 | 免費
- 3多功能MPU芯片GC9005數(shù)據(jù)手冊
- 2.67 MB | 1次下載 | 免費
- 4碳化硅逆變焊機(jī)基本產(chǎn)品介紹
- 7.35 MB | 1次下載 | 免費
- 5基本半導(dǎo)體產(chǎn)品在Sic逆變焊機(jī)中的應(yīng)用
- 7.27 MB | 1次下載 | 免費
- 6基本半導(dǎo)體產(chǎn)品在125kW工商業(yè)儲能PCS中的應(yīng)用
- 10.74 MB | 1次下載 | 免費
- 7MOSFET參數(shù)解讀
- 1.59 MB | 1次下載 | 2 積分
- 8550W充電機(jī)原理圖
- 0.13 MB | 1次下載 | 6 積分
本月
- 1使用單片機(jī)實現(xiàn)七人表決器的程序和仿真資料免費下載
- 2.96 MB | 44次下載 | 免費
- 23314A函數(shù)發(fā)生器維修手冊
- 16.30 MB | 13次下載 | 免費
- 3美的電磁爐維修手冊大全
- 1.56 MB | 9次下載 | 5 積分
- 4STM32F101x8/STM32F101xB手冊
- 1.69 MB | 8次下載 | 1 積分
- 5使用TL431設(shè)計電源
- 0.67 MB | 7次下載 | 免費
- 6感應(yīng)筆電路圖
- 0.06 MB | 7次下載 | 免費
- 7不對稱半橋(AHB)反激變換器的分析與設(shè)計
- 0.68 MB | 6次下載 | 1 積分
- 8LZC3106G高性能諧振控制器中文手冊
- 1.29 MB | 5次下載 | 1 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935119次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
- 1.48MB | 420062次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233084次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191367次下載 | 10 積分
- 5十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183335次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費下載
- 0.02 MB | 73807次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65987次下載 | 10 積分
評論
查看更多