在Amazon re:Invent大會上,Amazon發布了深度學習服務Lex,該服務底層所使用的技術與Alexa應用到Amazon移動藍牙和Wi-Fi Echo揚聲器中的技術一樣。在Amazon發布該服務之后不久,Google就發布了Actions on Google項目,使開發者能夠構建基于Google Assistant的語音交互應用,并與Google Home設備進行集成。
圖片來源: https://madeby.google.com/home/
Google的高級開發工程師Wayne Piekarsk將Actions on Google平臺描述為一種集成方式:
開發者可以通過它將自己的服務與Google Assistant集成到一起。
該集成的實現方式是:
會話行為(Conversation Action)允許開發者通過一個雙向窗口滿足用戶的請求。當用戶請求一個Action的時候,Google Assistant就會處理該請求,決定由哪個Action處理該請求最好,并調用相關的會話行為。調用之后,開發者開發的會話行為就能掌控剩下的所有事情,包括如何歡迎用戶,如何滿足用戶的請求,以及如何結束會話。
為了闡述Actions on Google的功能,Google使用了一個私人廚師的示例應用,該應用允許最終用戶通過Google Home設備與食譜查找服務交互。首先,最終用戶需要告訴該應用自己現在的情緒以及所擁有的佐料,然后會話應用會解析用戶的情緒,理解可用的佐料有哪些,之后會根據用戶的情緒和食欲為其提供食譜。
編寫這種類型的應用是非常具有挑戰性的,因為很難準確地提取Action的意義。Solvvy的聯合創始人和CTO Mehdi Samadi解釋說:
現在即使利用AI技術,將“告訴我附近便宜的Indian餐館在哪里”這樣的命令/指令轉換成一組可執行的命令集也不是一件容易的任務。我們首先需要理解用戶想要尋找“Indian”風味的餐館,然后需要知道用戶心中的“便宜”到底指什么價位。
Google開發會話行為的目的就是為了應對這些上下文敏感的挑戰,以幫助開發者構建會話App。
圖片來源: (screenshot) https://www.youtube.com/watch?v=HNfE0uaKcfY
會話行為由三個主要的組件組成,包括:
調用觸發器(Invocation Triggers)定義了用戶如何調用和發現Action。一旦被觸發,Action就會展開一個由對話框定義的會話與用戶交互。對話框(Dialogs )定義了用戶如何與Action進行交談,同時它也是Action的用戶界面。它們依靠實現代碼推動會話的前行。實現(Fulfillment)是處理用戶輸入并返回響應的代碼,它是一個REST服務。實現通常還包含一些執行具體行為的邏輯,例如檢索菜譜或者新聞并大聲朗讀。調用會話行為的方式有三種:
會話API,它提供了與Google Assistant通信所必須使用的請求和響應的格式。Actions SDK,包含一個NodeJS客戶端類庫,行為包(Action Package)定義,CLI和Web模擬器。包含API.AI在內的其他工具。API.AI是Google最近收購的一家公司,開發者可以通過它來構建會話接口。Google負責工程的副總裁Scott Huffman在2016年9月曾宣稱:
超過60,000名開發者正在使用API.AI在Slack、Facebook Messenger和Kik等環境中構建會話式體驗。
在Actions on Google平臺上,開發者可以將API.AI接入自己的會話界面上以減少會話API通常所需要的文字轉錄量。Piekarsk著重強調了在Actions on Google平臺上使用API.AI的一些好處:
API.AI為會話接口的創建提供了一個直觀的圖形用戶界面,同時它還會處理會話狀態的管理和表單的填充等繁重的任務。
圖片來源:(screenshot) https://www.youtube.com/watch?v=HNfE0uaKcfY
為了處理一個會話,開發者可以使用控制臺來定義Intents。在Google私人廚師食譜的示例中,Intents包括定義需要從用戶那里獲取的信息,例如材料、溫度、菜式和烹飪時間。
接下來,開發者需要提供一些例句。API.AI會使用這些例句訓練機器學習算法,以便于處理其他來自于用戶的句子。開發者不需要為API.AI編寫正則表達式來解析其他的句子。
圖片來源:https://www.youtube.com/watch?v=HNfE0uaKcfY
開發者可以人工地為每個信息指定可接受的值。一旦提供了這些內容,API.AI就能使用這些信息從用戶所說的句子中提取語義。例如,開發者可以定義一組映射到某種蛋白質的實體。如果私人廚師App想要在食譜中包含蛋白質,那么可以從開發者定義的一組同義詞(例如牛肉、羊肉、豆腐和雞肉等)中選取。
當用戶與應用通信的時候,用戶可以提供自然信息,包括一些無序的、只言片語的信息,如果應用沒有接收到完整的信息,或者接受到的信息不明確,那么它會通過一些跟進的問題來獲取信息。
開發者還可以將Intents連接到后端的webhook,這樣就可以通過連接到IFTTT、Zapier或者Azure Logic Apps等第三方平臺上實現擴展。當一個webhook被調用的時候,所有適合的數據都會以JSON字符串的方式傳送。
開發者在控制臺上配置好了自己的Intents和實體之后,他們就可以在API.AI的Web模擬器上啟動一個測試,在將其提供給所有的Google Home用戶之前首先通過私人的Google Home進行預覽。
查看英文原文:Building Conversational Apps Using Actions on Google and API.AI