人類的對話就是通過有效的形式交換彼此的意思。表達和理解意圖并不是我們看上去那么簡單,你需要認真地,有目的地區設計Alexa和用戶之間的對話。一個好的語音交互體驗可以讓用戶通過多種不同的形式去表達自己的意圖和想法。
會話界面由用戶發起,Alexa跟進回答。對于很多人來說,這是一種全新的交互形式。設計開始是,要確保你的用戶能夠加入到對話之中。
搭建功能之前完成設計
首先你要明確希望用戶從產品功能上得到什么體驗和感受。一旦你確定了目的,腳本,流程,那么你就可以去設計意圖和表達方式
確定意圖
意圖是指用戶可以要求你的產品功能實現的事情,比如制定旅行計劃,獲取某種狀態,說個笑話,襲擊怪獸類等。關于如何定義功能,請看功能設計流程。
不要指望用戶會一直把自己的意圖準確表達出來。當用戶說“制定一個旅行計劃”,他可能是會簡單滴說“去夏威夷度假”。為了確保你的功能可以盡可能的滿足用戶,你需要提供一個龐大的語料庫,包括單詞、句子和短語
下面是關于對話意圖的例子:
使用內置意圖
每個Alexa技能都需要包括“取消”、“停止”、“幫助”的能力。除此之外,還有其他的指令比如“重復”“播放”“下一個”等,都包含在內置意圖庫中。內置意圖是預先配置好使得Alexa可以識別對應的話語。例如,對于幫助的意圖,你無需再為用戶做出特殊說明。你也可以自定義內置意圖的擴展
定義表達方式
表達方式是用戶對Alexa所說的話,表達方式由關鍵詞命令,自然語音(比如虛詞)和可以傳達多樣化信息的信息接口組成。語音交互體驗最重要的一項設計就是確定用戶表達的范圍
為了確保良好的用戶體驗,需要從那些語焉不詳的碎片和只言片語中獲取完整的信息。為了盡可能滴提高覆蓋率,你需要考慮到細微的變化,同義詞、近義詞、類似的語句,甚至是錯誤的發音。例如在“打開”命令下,你需要考慮到“打開”的同義詞或類似的表達方式,比如“開動”、“啟動”等
一次性表達:是指用戶一口氣把觸發功能所需的信息全部提供完畢,一般用于啟動某項功能,并在功能使用過程中出現。
不完整信息:用戶經常會發出不完整的命令或請求,這將會要求Alexa發起更多的交互以收集完整的信息
過度回答的處理
有時,用戶的回答會超過Alexa的提問范圍。比如Alexa問到出發日期,用戶可能也會告知出發地,也或者用戶還提供了抵達城市,出行方式,但就是沒有告訴Alexa所需要的時間
在設計對話時,需要對此重視??稍?a target="_blank" rel="nofollow">Dialog Interface Reference 和Plan My Trip tutorial?中了解更多
處理用戶的更正行為
當用戶認為Alexa出錯,或者他改變主意了,他們會試圖做出更正行為。比如,他可能緊跟著說“不是的”或“我說的是這樣,不是那樣”要恰當地處理這些問題
表達方式覆蓋范圍更多樣化
為了保證你的功能運行順利,比較好的標準是每個意圖提供30或更多的表達方式。一些簡單的意圖,你不用百分百覆蓋,但是有更多的表達方式當然更好。當然我們不斷增加表達方式可以改進我們的用戶體驗
增加表達方式多樣化的一些技巧
用戶說我要制定一個行程,Alexa需要收集出發地、目的地,日期和方式。這是一個和家人朋友玩角色扮演的機會,你可以從中獲得多樣化的對話方式
一次性表達方式
考慮用戶一次性說出所有信息的表達方式。
部分信息方式
考慮用戶一般會給你比較少的信息,這點非常重要,因為用戶很難一次性把完整信息提供給你。
定義槽(slot)
一句話中可變的部分就是槽,如城市名、日期。槽在任務-信息集中的功能中很常見。你需要設計表達方式中的槽,并且從內置目錄中給槽匹配,或者自己給槽賦值。
在下面的例子中{to city}和{traveldate}就是槽:
“I’d like to go to {toCity}”
“book a trip for {travelDate}”
“plan a vacation to {toCity}”
使用內置槽值
有條件的話,盡可能使用官方提供的內置槽來節省時間和提高準確度。為了滿足你的功能,你可以擴展一些內置槽值。例如,當增加一個地區名稱庫,你可以擴AMAZON.US_CITY。建議參考slot values you can extend
認真審查槽值
雖然搜集、復制、粘貼槽值表這種事是比較容易的,但有必要認真的審核和編輯這些內容。錯誤的槽值會帶來技能的邏輯錯誤,并且給用戶帶來破壞性的體驗,你需要注意以下幾種情況:
排除重復的槽值;
避免無關的詞匯
避免拼寫錯誤或標點格式上的錯誤(多發生在英文上),保證編輯文檔時選擇正確的標點格式,參考supported punctuation.