在 Alexa 技能開發中,理解使用者說話內容並將其轉化為相應操作至關重要。使用者的語音指令會被解析成說話內容,接著對映到特定的意圖。意圖分為內建意圖和自定義意圖兩種,內建意圖由 Alexa 提供,例如停止、取消等常用指令;而自定義意圖則由開發者根據技能需求自行建立,例如查詢時間、播放音樂等。說話內容中包含的關鍵資訊會被提取為時間欄位,例如地點、時間等,這些時間欄位會作為引數傳遞給意圖處理函式。說話內容、意圖和時間欄位共同構成了互動模型,開發者需要定義清晰的互動模型,才能讓 Alexa 準確理解使用者意圖。最後,技能的程式碼需要佈署到指定的端點,可以選擇使用 Amazon 提供的 Lambda 函式或自行管理的 HTTPS 伺服器。
1.5.3 說話內容(Utterances)
說話內容是指使用者說出的短語,以便與技能進行互動。可能有多種方式來達到相同的結果,例如:‘現在幾點?’、‘現在時間是幾點?’或‘幾點了?’。開發者需要考慮使用者可能使用的所有可能的短語,並將其與技能的意圖(Intent)進行對映。Alexa會根據這些說話內容建立模型,並嘗試找到類別似的短語。
1.5.4 意圖和請求(Intents and Requests)
說話內容會被連線到技能中的特定意圖。例如,所有與時間相關的說話內容都會被連線到同一個意圖,例如GetTimeIntent。這個意圖會觸發技能程式碼中的特定函式。意圖分為兩類別:內建意圖(Built-in Intents)和自定義意圖(Custom Intents)。
內建意圖(Built-in Intents)
內建意圖是由Alexa提供的標準意圖,例如AMAZON.StopIntent、AMAZON.CancelIntent和AMAZON.FallbackIntent等。這些意圖可以為技能新增功能,而無需開發者提供示例說話內容。
自定義意圖(Custom Intents)
自定義意圖是根據技能需求而建立的特殊意圖,例如GetTimeIntent。開發者可以根據技能的需求定義自己的意圖。
1.5.5 時間欄位(Slots)
時間欄位是一種變數,包含了傳遞給意圖的資訊。例如,使用者說‘現在倫敦的時間是幾點?’,這裡的‘倫敦’就是一個時間欄位變數,會被傳遞給意圖程式碼。Alexa提供了內建的時間欄位型別,例如數字、日期和時間,以及列表型別,如演員、顏色、名字等。
1.5.6 互動模型(Interaction Model)
互動模型是指說話內容、意圖和時間欄位之間的關係。這個模型需要由開發者建立,以便Alexa可以識別出更多類別似的說話內容。
1.5.7 端點(Endpoints)
端點是指技能程式碼所在的位置。開發者可以選擇Amazon主機或自己管理的HTTPS站點作為端點。如果選擇Amazon主機,則會獲得一個以arn:aws:lambda開頭的ID。
從技術架構視角來看,建構一個功能完善的Alexa技能,需要釐清說話內容、意圖、時間欄位和端點之間的互動關係。透過定義清晰的互動模型,Alexa得以將使用者的自然語言轉化為可執行的指令。內建意圖和自定義意圖的搭配使用,能有效提升技能開發效率,而時間欄位的引入則賦予了技能處理動態資訊的能力。然而,開發者仍需關注如何有效管理大量的說話內容樣本,以及如何在複雜的語境下準確識別使用者意圖。此外,選擇合適的端點佈署方案也至關重要,Amazon主機的便捷性與自建HTTPS站點的靈活性需要根據技能的特定需求進行權衡。展望未來,隨著自然語言處理技術的持續發展,預期Alexa技能的互動模型將更加智慧化,開發者將能更輕鬆地構建更自然、更流暢的使用者經驗。對於追求高效開發的團隊而言,深入理解並善用Alexa的互動模型設計原則,將是打造出色語音應用的關鍵所在。