Microsoft Bot Framework、LUIS、Azure Bot Service 和 Azure Functions 均已推出。最近到處有人在說(shuō)智能機(jī)器人:智能機(jī)器人是新應(yīng)用。原因之一就是,智能機(jī)器人能夠讓你輕松、高效地完成常見(jiàn)任務(wù)。想一想: 只需讓某種數(shù)字助理為你執(zhí)行相關(guān)操作,即可預(yù)訂航班或餐廳餐位,無(wú)需從必應(yīng)或 Google 跳轉(zhuǎn)到兩三個(gè)或更多網(wǎng)站。但應(yīng)用開(kāi)發(fā)者欣然接受這種趨勢(shì)可能還有更加重要智能機(jī)器人的原因: 移動(dòng)應(yīng)用的開(kāi)發(fā)成本日益上漲。僅生成一個(gè)適用于各種平臺(tái)(iOS、Android 和 Windows)的移動(dòng)應(yīng)用的費(fèi)用介于 30,000 至 500,000 美元之間。
確實(shí)有一些跨平臺(tái)技術(shù)(如 Unity 或 Xamarin)可有助于降低開(kāi)發(fā)適用于多個(gè)平臺(tái)的移動(dòng)應(yīng)用的成本。但智能機(jī)器人正發(fā)展成為另一選擇方案,通過(guò)采用交談界面來(lái)改變范例。這種方法利用了人類數(shù)千年以來(lái)的溝通方式,包括語(yǔ)音和文本(想一想 Skype 或 Messenger)。還可以使用圖像、視頻和傳統(tǒng)控件(如按鈕和卡片操作)增強(qiáng)交談 UI (CUI) 的功能。智能機(jī)器人側(cè)重于簡(jiǎn)約和輸入的自然屬性,而不是使用傳統(tǒng)控件來(lái)精心制作 UI。
有何優(yōu)勢(shì)? 由于組織摒棄了為每個(gè)屏幕范例生成不同 UI 的做法,改為采用適用于所有設(shè)備和外形規(guī)格(無(wú)論是否有屏幕)的交談界面,因此總共可能可以節(jié)省數(shù)十億美元。例如,我生成了一個(gè) Active Fitness 智能機(jī)器人,可以幫助你尋找附近的跑步、騎自行車、徒步、滑雪和其他路線。(若要將此智能機(jī)器人添加到 Skype,請(qǐng)?jiān)L問(wèn)bit.ly/2knZVbr。) 雖然這款應(yīng)用具有豐富的 UI 和控件,但智能機(jī)器人旨在理解交談?shì)斎?,如圖 1 所示。
圖 1:顯示路線的 Active Fitness 智能機(jī)器人
影響力不僅僅局限于應(yīng)用開(kāi)發(fā)。智能機(jī)器人可以解決網(wǎng)站越來(lái)越難以導(dǎo)航的難題,其中許多內(nèi)容使用舊的或過(guò)時(shí)的 Web 框架或標(biāo)準(zhǔn)。例如,試著在任意客戶服務(wù)網(wǎng)站上完成一個(gè)任務(wù),可能要花上半個(gè)小時(shí)來(lái)嘗試導(dǎo)航網(wǎng)站菜單。
智能機(jī)器人還有獨(dú)特的影響力。設(shè)想一下,有一個(gè)紙牌游戲應(yīng)用(如 Solitaire)。在有智能機(jī)器人之前,我不得不生成每個(gè)平臺(tái)對(duì)應(yīng)的版本。而現(xiàn)在智能機(jī)器人則突破了平臺(tái)鎖定的困境。突然間,我的基于 Windows 的應(yīng)用成為我所有好友的 iPhone 和 Android 手機(jī)上的智能機(jī)器人。為什么會(huì)這樣呢? 這是因?yàn)橹悄軝C(jī)器人適用于以下各種渠道:Skype、Telegram、Facebook、Messenger、Slack 和其他到處可見(jiàn)的應(yīng)用平臺(tái)。
我想使用 Microsoft Bot Framework 生成世界上最受歡迎的游戲是件很酷的事情。圖 2 展示了我嘗試生成的隨時(shí)可以玩的 Solitaire 智能機(jī)器人。(若要將此智能機(jī)器人添加到 Skype,請(qǐng)?jiān)L問(wèn)bit.ly/2jrzP7S。)
圖 2:我在 Skype 上的 Solitaire 智能機(jī)器人每周處理 500,000 個(gè)請(qǐng)求
若要開(kāi)始創(chuàng)建智能機(jī)器人,請(qǐng)轉(zhuǎn)到 Microsoft Bot Framework 網(wǎng)站 (dev.botframework.com)??梢允褂?Microsoft .NET Framework 或 Node.js(以你喜歡使用的技術(shù)為準(zhǔn))生成智能機(jī)器人。最近,Microsoft 新增了 Azure Bot Service (bit.ly/2knEtU6),作為另一種方便使用的智能機(jī)器人實(shí)現(xiàn)方式。Azure Bot Service 提供基于瀏覽器的體驗(yàn),方便你使用易用模板生成智能機(jī)器人。此服務(wù)使用 Azure Functions,這是一種基于事件的無(wú)服務(wù)器代碼體系結(jié)構(gòu),可提供“函數(shù)”,方便你節(jié)省資金并更好地?cái)U(kuò)展智能機(jī)器人。
下面介紹了 Azure Functions 的亮點(diǎn): 開(kāi)始生成智能機(jī)器人時(shí),我意識(shí)到,每當(dāng)需要生成智能機(jī)器人時(shí),都不得不新建一個(gè) Web 應(yīng)用來(lái)提供應(yīng)用容器。如果是一個(gè)應(yīng)用,這沒(méi)有關(guān)系,但如果有多個(gè)智能機(jī)器人,每個(gè)都需要單獨(dú)的基礎(chǔ)結(jié)構(gòu),情況就不一樣了。相反,使用 Azure Functions,可以在云中托管小段代碼,而無(wú)需考慮整個(gè)應(yīng)用基礎(chǔ)結(jié)構(gòu)。
智能和智能機(jī)器人開(kāi)發(fā)
就像應(yīng)用一樣,智能機(jī)器人旨在盡力幫助你完成特定的任務(wù)。例如,我的 Solitaire 智能機(jī)器人可以和你一起玩紙牌,甚至可以教你游戲的規(guī)則和技巧。它確實(shí)不太可能通過(guò)圖靈測(cè)試(Alan Turing 于 20 世紀(jì) 50 年代提出的關(guān)于衡量計(jì)算機(jī)智能的測(cè)試),但這對(duì)于大多數(shù)智能機(jī)器人來(lái)說(shuō)都是過(guò)分之舉。
同樣,當(dāng)?shù)剀嚬芩闹悄軝C(jī)器人應(yīng)該知道如何提交駕照登記付款,或如何幫助你交罰單或提交駕照延期換證申請(qǐng)。天氣智能機(jī)器人需要回答與天氣相關(guān)的問(wèn)題,并還包括能確定地理位置和用戶對(duì)特定天氣數(shù)據(jù)的需求的智能組件。
智能機(jī)器人可以通過(guò)交談界面自動(dòng)完成許多任務(wù),但也可以通過(guò)圖像、按鈕和其他控件增強(qiáng)功能,使之更方便移動(dòng)設(shè)備用戶使用。只有當(dāng)對(duì)話變得開(kāi)放時(shí),智能機(jī)器人的智能服務(wù)才能真正派上用場(chǎng)。使用對(duì)話框提供一組預(yù)定義的答案是相對(duì)容易的標(biāo)準(zhǔn)編程任務(wù)。另一方面,響應(yīng)人類對(duì)話意味著智能。幸運(yùn)的是,Microsoft Bot Framework 提供以下兩項(xiàng)支持: LuisDialogs 支持基于自然語(yǔ)言的對(duì)話,而更傳統(tǒng)的控件則支持用戶通過(guò)按按鈕、傳送視圖或其他控件來(lái)選擇選項(xiàng)。
智能是許多智能機(jī)器人采用的交談 UI 的核心,以便能夠與人類用戶進(jìn)行直觀式交互。借助越來(lái)越多的 Microsoft 認(rèn)知服務(wù) (bit.ly/2jx1kMQ),可以將智能功能直接引入智能機(jī)器人中。這些服務(wù)包括但不限于:
構(gòu)想
語(yǔ)音
語(yǔ)言
知識(shí)
搜索
位置
請(qǐng)參閱 Alessandro Del Sole 關(guān)于認(rèn)知服務(wù)的精彩文章 (msdn.com/magazine/mt742868)。
讓智能機(jī)器人更智能需要采取下面一些常見(jiàn)措施,這不僅可能會(huì)促使其通過(guò)圖靈測(cè)試,還一定會(huì)改進(jìn)與智能機(jī)器人的對(duì)話:
對(duì)話框、圖像和其他能夠收集規(guī)范化數(shù)據(jù)、傳達(dá)消息和簡(jiǎn)化對(duì)話的方式
本地化
可提高智能機(jī)器人基本功能的幫助和對(duì)話框管道
讓問(wèn)題不重復(fù)的用戶數(shù)據(jù)(如地理位置)
你并不想太過(guò)雄心勃勃來(lái)嘗試創(chuàng)建像 Douglas Adams 描繪的城市大小一般“深思”計(jì)算機(jī)(出自“銀河系漫游指南”)的智能機(jī)器人。而且,當(dāng)我開(kāi)始生成智能機(jī)器人時(shí),我僅關(guān)注對(duì)完成主要任務(wù)必不可少的功能(例如,玩紙牌游戲或建議最佳跑步路線),然后再通過(guò)智能組件增強(qiáng)功能。
借助 LUIS 實(shí)現(xiàn)語(yǔ)言智能
要添加到交談界面的首個(gè)智能組件是 Microsoft 語(yǔ)言理解智能服務(wù) (LUIS)。此服務(wù)的工作方式為分析你向其發(fā)送的對(duì)話或句子,然后提取特定于應(yīng)用的實(shí)際意向和實(shí)體。若要將 LUIS 對(duì)話框添加到智能機(jī)器人,只需創(chuàng)建繼承 LuisDialog 的類,在 luis.ai 中注冊(cè) LUIS 應(yīng)用,然后向?qū)υ捒蛱峁?yīng)用 ID 和密鑰即可:
[LuisModel("YOUR_LUIS_APP_ID>", "YOUR_LUIS_APP_KEY>")]
[Serializable]public class IntelligentLanguageDialog : LuisDialogobject>
有關(guān)更深入的 LUIS 指南,請(qǐng)查看 Ashish Sahu 在 2017 年 1 月 MSDN 雜志中發(fā)表的文章 (msdn.com/magazine/mt745095)。
在我的 Active Fitness Trails 智能機(jī)器人(圖 3)中,我定義了與健身活動(dòng)相關(guān)的意向,我期望用戶在智能的智能機(jī)器人對(duì)話中提供地理位置和健身活動(dòng)信息。例如,我希望用戶能夠說(shuō)出“向我顯示美國(guó)科羅拉多州的滑雪路線”,智能機(jī)器人應(yīng)該理解這句話,然后提供一組路線。我的 Active Fitness 應(yīng)用用戶每天都會(huì)查找數(shù)百萬(wàn)條路線,通過(guò)查詢 Active Fitness,他們可以映射我的 LUIS 模型中的 GetActivityLocation 意向,這將把地理位置和活動(dòng)實(shí)體返回給智能機(jī)器人。
圖 3:LUIS 中的模型
設(shè)想一下,我需要編寫(xiě)多少代碼才能從非規(guī)范化用戶輸入中提取所有此類數(shù)據(jù)! 即使是一個(gè)很短的人類句子,往往也很復(fù)雜,只有機(jī)器學(xué)習(xí)工具才能理解和處理。添加這一簡(jiǎn)單句子的所有可能變體,你會(huì)發(fā)現(xiàn)智能機(jī)器人的智能服務(wù)并不是一件容易完成的任務(wù)。幸運(yùn)的是,LUIS 可充當(dāng)智能對(duì)話分析器和提取程序,為你完成所有苦差事。你只需將此組件添加到智能機(jī)器人即可。
定義模型后,我便可以提供有助于 LUIS 了解我的意向以及如何為智能機(jī)器人獲取實(shí)體的言辭,從而定型模型。為模型定型我的 GetActivityLocation 意向時(shí),我提供了以下言辭: “顯示附近的騎自行車路線”、“顯示奧地利最新的滑板滑雪路線”和“美國(guó)猶他州最長(zhǎng)的滑雪路線在哪里?” 如圖 4 所示,當(dāng) LUIS 處理實(shí)體時(shí),它會(huì)突出顯示我在模型中指定的實(shí)體。如果 LUIS 無(wú)法識(shí)別實(shí)體,該怎么辦? 在這種情況下,需要通過(guò)手動(dòng)映射實(shí)體來(lái)定型模型。例如,我需要將我的智能機(jī)器人定型為識(shí)別“滑板滑雪”活動(dòng)。
圖 4:LUIS 中的模型定型
接下來(lái),定義用于處理 LUIS 模型返回的意向的方法??梢远x用于處理模型中的 None 意向或其他任何意向的方法,如圖 5 所示。
圖 5:處理意向
[LuisIntent("None")] publicasyncTask NoneIntent(IDialogContext context, LuisResult result) { awaitcontext.PostAsync( $"You have reached the none intent. You said: {result.Query}"); //context.Wait(MessageReceived); } // Go to https://luis.ai and create a new intent,// then train/publish your luis app.// Finally, replace "GetActivityLocation" with the name of your newly// created intent in the following handler.[LuisIntent("GetActivityLocation")] publicasyncTask GetActivityLocation(IDialogContext context, LuisResult result) { awaitcontext.PostAsync( $"You have reached the GetActivityLocation intent. You said: {result.Query}"); //context.Wait(MessageReceived); }
每當(dāng)模型確定輸入與 GetActivityLocation 意向匹配時(shí),都會(huì)調(diào)用我的智能機(jī)器人方法。LUIS 在 LuisResult 對(duì)象中返回結(jié)果,其中包括地理位置和活動(dòng)等實(shí)體。例如,我想檢查實(shí)體是否包含國(guó)家/地區(qū)。為此,我使用 LuisResult 對(duì)象的 TryFindEntity 方法,查找“builtin.geography.country”類型的實(shí)體。LUIS 提供了大量預(yù)建實(shí)體,這大大簡(jiǎn)化了你的工作。有關(guān)這些實(shí)體的完整列表,請(qǐng)?jiān)L問(wèn) bit.ly/2kWgCHR。
請(qǐng)注意,builtin.geography 實(shí)體包含子實(shí)體,例如,國(guó)家/地區(qū)和城市。包含子實(shí)體的實(shí)體稱為復(fù)合實(shí)體。在此示例中,我特別感興趣的是國(guó)家/地區(qū)子實(shí)體,如圖 6 所示。
圖 6:查找國(guó)家/地區(qū)
// Go to https://luis.ai and create a new intent, then train/publish your luis app.// Finally, replace "GetActivityLocation" with the name of your// newly created intent in the following handler.[LuisIntent("GetActivityLocation")] publicasyncTask GetActivityLocation(IDialogContext context, LuisResult result) { awaitcontext.PostAsync( $"You have reached the GetActivityLocation intent. You said: {result.Query}"); //EntityRecommendation country; if(result.TryFindEntity("builtin.geography.country", outcountry)) { awaitcontext.PostAsync($"Country: {country.Entity}"); } context.Wait(MessageReceived); }
智能機(jī)器人實(shí)用提示
Microsoft 正在努力推動(dòng)智能機(jī)器人開(kāi)發(fā)取得進(jìn)展,發(fā)布了語(yǔ)言理解智能服務(wù) (LUIS) 和 Azure Bot Service 等工具,以幫助簡(jiǎn)化這一新款軟件的創(chuàng)建和管理。值得慶幸的是,現(xiàn)如今大多數(shù)應(yīng)用都可以輕松轉(zhuǎn)換成智能機(jī)器人,其中的交談 UI (CUI) 非常適合多任務(wù)、多類型的應(yīng)用。為了能夠最有效地開(kāi)發(fā)智能機(jī)器人,請(qǐng)注意以下幾點(diǎn):
以擴(kuò)大覆蓋面為目標(biāo): 智能機(jī)器人最引人注目的一點(diǎn)是,可在所有 PC、平板電腦和智能手機(jī)上的渠道(如 Skype、Facebook、Messenger 和 Telegram)中運(yùn)行。通過(guò)向多個(gè)渠道發(fā)布智能機(jī)器人,最大限度地?cái)U(kuò)大受眾覆蓋面。此外,利用可用的服務(wù),將智能機(jī)器人本地化成多種語(yǔ)言。
注重交談體驗(yàn): 充分利用交談界面,它非常適合多任務(wù)、多類型的應(yīng)用。為了提供最佳體驗(yàn),請(qǐng)重點(diǎn)關(guān)注交談界面(如聊天、語(yǔ)音和語(yǔ)言),而不是按鈕等傳統(tǒng) UI 控件。
利用服務(wù): 新推出的 Azure Bot Service 是一個(gè)基于云的平臺(tái),可最大限度地減少基礎(chǔ)結(jié)構(gòu)開(kāi)銷,并允許你擴(kuò)展智能機(jī)器人項(xiàng)目。此服務(wù)的幕后支持技術(shù)為 Azure Functions;使用此技術(shù),開(kāi)發(fā)者可以在云中托管小段代碼。
以任務(wù)為中心: 生成智能機(jī)器人時(shí),以每個(gè)智能機(jī)器人需要解決的一個(gè)或多個(gè)特定任務(wù)為中心。不要過(guò)于復(fù)雜,AI 不一定越多越好。從智能機(jī)器人需要解決的主要任務(wù)著手,然后再注入智能組件。
開(kāi)放式對(duì)話: 利用 LUIS 中內(nèi)置的智能組件來(lái)支持開(kāi)放式對(duì)話,并為智能機(jī)器人提供輸入。為了提供最佳體驗(yàn),請(qǐng)注意定型 LUIS 模型,以一組簡(jiǎn)明的實(shí)體和意向?yàn)橹行摹DP驮讲弧澳:?,AI 的效果就會(huì)越好!
當(dāng)然,我還需要知道活動(dòng)實(shí)體(可以使用 Active Fitness 跟蹤超過(guò) 50 個(gè)活動(dòng),如跑步、騎自行車、滑雪和滑板滑雪)。因此,當(dāng)我問(wèn): “奧地利最好的滑雪路線在哪里?” 我期望 Active Fitness 智能機(jī)器人返回“滑雪”活動(dòng)實(shí)體,如圖 7所示。
圖 7:使用智能機(jī)器人仿真器演示 GetActivityLocation 意向的實(shí)際效果
結(jié)果就是,我更新了 GetActivityLocation 方法,使其能夠返回活動(dòng)。請(qǐng)注意,與 builtin.geography.country 不同,活動(dòng)不是內(nèi)置實(shí)體。不過(guò),我在定型模型時(shí)提供了一些言辭,LUIS 能夠相當(dāng)好地獲取實(shí)體,如圖 8 所示。
圖 8:使用言辭定型模型
// Go to https://luis.ai and create a new intent, then train/publish your luis app.// Finally, replace "GetActivityLocation" with the name of your newly// created intent in the following handler.[LuisIntent("GetActivityLocation")] publicasyncTask GetActivityLocation(IDialogContext context, LuisResult result) { awaitcontext.PostAsync( $"You have reached the GetActivityLocation intent. You said: {result.Query}"); //EntityRecommendation country; if(result.TryFindEntity("builtin.geography.country", outcountry)) { awaitcontext.PostAsync($"Country: {country.Entity}"); } EntityRecommendation activity; if(result.TryFindEntity("activity", outactivity)) { awaitcontext.PostAsync($"Activity: {activity.Entity}"); } context.Wait(MessageReceived); }
Bot Framework 提供了深入的通用 C# 和 Node.js 代碼示例,網(wǎng)址分別為 bit.ly/2gHupjg和 bit.ly/2kWolWx。
實(shí)現(xiàn)地理位置智能
雖然許多智能機(jī)器人根據(jù)地理位置進(jìn)行響應(yīng),但編寫(xiě)地理位置響應(yīng)代碼可能會(huì)很麻煩。在前面的示例中,我使用了 LUIS 智能組件來(lái)獲取 LUIS 從對(duì)話中解析的內(nèi)置地理位置實(shí)體。幸運(yùn)的是,Microsoft 必應(yīng)地理位置控件現(xiàn)在包含在 Bot Framework 中。這樣一來(lái),開(kāi)發(fā)者便可以更輕松地收集地理位置數(shù)據(jù)。
Bot Framework 的地理位置控件還提供包含地圖的直觀界面(見(jiàn) 圖 9)。如果智能機(jī)器人需要在 Skype、Facebook 和 Messenger 等渠道中通過(guò)易用或本機(jī)的界面提供包含郵政編碼、城市、區(qū)域和地區(qū)數(shù)據(jù)的地址,這就可能非常方便。
圖 9:使用包含必應(yīng)地圖的直觀界面的地理位置控件
若要開(kāi)始使用必應(yīng)地理位置控件,只需為 .NET 項(xiàng)目(通過(guò) NuGet)或 Node.js 項(xiàng)目(通過(guò) npm)獲取必應(yīng)地圖 API 密鑰和地理位置對(duì)話框組件,然后在代碼中初始化并調(diào)用地理位置對(duì)話框的實(shí)例即可:
varoptions = LocationOptions.UseNativeControl | LocationOptions.ReverseGeocode;varrequiredFields = LocationRequiredFields.Locality | LocationRequiredFields.Region | LocationRequiredFields.Country;varprompt = "Where are you looking for trails?";varlocationDialog = newLocationDialog( apiKey, this.channelId, prompt, options, requiredFields);context.Call(locationDialog, this.ResumeAfterLocationDialogAsync);
LocationDialog 提供用于請(qǐng)求各種地址字段和自定義提示的選項(xiàng)。結(jié)果返回時(shí),可以在 Resume 方法中進(jìn)行處理,如圖 10 所示。
圖 10:在 Resume 方法中處理地理位置結(jié)果
privateasyncTask ResumeAfterLocationDialogAsync( IDialogContext context, IAwaitablePlace> result) { varplace = awaitresult; if(place != null) { varaddress = place.GetPostalAddress(); varformattedAddress = string.Join(", ", new[] { address.Locality, address.Region, address.Country }.Where(x => !string.IsNullOrEmpty(x))); awaitcontext.PostAsync( "Where are you looking for trails "+ formattedAddress); } context.Donestring>(null); }
超越 LUIS
除了 LUIS 之外,認(rèn)知服務(wù)還提供了其他許多 API,可用于賦予智能機(jī)器人技能,而開(kāi)發(fā)者個(gè)人或企業(yè)可能因非常復(fù)雜而難以實(shí)現(xiàn)這些技能。幸運(yùn)的是,你不必自行實(shí)現(xiàn)它們:
借助推薦 API,可以添加產(chǎn)品(如經(jīng)常一起購(gòu)買(mǎi)的產(chǎn)品)推薦或個(gè)性化用戶推薦。
影像 API 向智能機(jī)器人賦予高級(jí)圖像和視頻技能,以識(shí)別對(duì)象、人臉、年齡、性別或情緒。
學(xué)術(shù)知識(shí) API 可以添加學(xué)術(shù)知識(shí)、創(chuàng)建問(wèn)答,并能向智能機(jī)器人賦予特定的知識(shí)庫(kù)技能。
值得一提的是,智能機(jī)器人還支持第三方 API 和服務(wù)??梢允褂米约旱姆?wù)和 API,讓你的智能機(jī)器人與眾不同,并解決以前從未解決過(guò)的問(wèn)題。Bot Framework 確實(shí)通過(guò)簡(jiǎn)單的交談界面和易用 API 帶來(lái)了新的機(jī)遇,同時(shí)見(jiàn)證了人類知識(shí)的進(jìn)步,并打開(kāi)了輔助功能的大門(mén)。
新增精彩功能
除了針對(duì) .NET Framework 和 Node.js 以及 REST API 定期更新 Bot Framework 之外,Microsoft 最近還新增了功能,讓智能機(jī)器人開(kāi)發(fā)更上一層樓。
Bot Framework 最新增添的功能之一是 Azure Bot Service,此服務(wù)現(xiàn)在可方便你輕松利用云的便利性和可擴(kuò)展性來(lái)開(kāi)發(fā)智能機(jī)器人項(xiàng)目 (bit.ly/2knEtU6)。Bot Service(如圖 11 所示)使用 Azure Functions 和一系列快速啟動(dòng)模板,以幫助你充分利用智能機(jī)器人代碼,并讓智能機(jī)器人擴(kuò)展到任意級(jí)別 (bit.ly/2kuo9Bb)。例如,可以選擇基本、表單、主動(dòng)、LUIS 或問(wèn)答智能機(jī)器人模板,每個(gè)模板都可以生成一個(gè)隨時(shí)都能運(yùn)行的智能機(jī)器人,你可以根據(jù)需要對(duì)其進(jìn)行擴(kuò)展。
圖 11:直接在瀏覽器中編輯 Bot Service 代碼
Azure Functions 是 Azure Bot Service 的幕后支持技術(shù),根據(jù)無(wú)服務(wù)器體系結(jié)構(gòu)和按需計(jì)算來(lái)提供事件驅(qū)動(dòng)的體驗(yàn)。這確實(shí)意味著,不再需要為每個(gè)智能機(jī)器人提供昂貴的應(yīng)用托管基礎(chǔ)結(jié)構(gòu)。相反,可以讓智能機(jī)器人更輕量級(jí)、更易于擴(kuò)展,并節(jié)省在開(kāi)發(fā)上花費(fèi)的精力和時(shí)間,同時(shí)簡(jiǎn)化與認(rèn)知服務(wù)的連接。
QnA Maker (qnamaker.ai) 是另一個(gè)值得一提的附加服務(wù)。QnA Maker 是 Azure Bot Service 提供的模板智能機(jī)器人項(xiàng)目,用于十分常見(jiàn)的情景,即智能機(jī)器人回答現(xiàn)有知識(shí)庫(kù)中的典型問(wèn)題。
總結(jié)
使用 Microsoft Bot Framework,可以快速輕松地開(kāi)始生成智能機(jī)器人,為新的和現(xiàn)有的應(yīng)用或服務(wù)提供交談界面。這樣,可以打造全新體驗(yàn),通過(guò) Skype、Facebook、Messenger、Telegram 和其他渠道覆蓋數(shù)十億用戶。Microsoft 認(rèn)知服務(wù)提供許多智能 API,方便你添加到智能機(jī)器人中。
Bot Framework 生態(tài)系統(tǒng)正在快速發(fā)展。為了利用這一點(diǎn),可以添加認(rèn)知服務(wù)附帶的服務(wù)或使用第三方提供商的 API,讓智能機(jī)器人更智能且能力更強(qiáng)。一切始于非常簡(jiǎn)單的智能機(jī)器人,你和你的用戶會(huì)有許多發(fā)現(xiàn)。智能機(jī)器人確實(shí)是新應(yīng)用(或現(xiàn)有應(yīng)用的擴(kuò)展),并且添加了智能組件,真的是非常強(qiáng)大。此外,智能機(jī)器人還減少了在開(kāi)發(fā)上花費(fèi)的時(shí)間、精力和成本。
介紹我的智能機(jī)器人
我在過(guò)去幾個(gè)月里開(kāi)發(fā)了幾個(gè)智能機(jī)器人,所以我決定在一個(gè)方便訪問(wèn)的地方(圖 A 中的列表)集中介紹它們??匆豢次业闹悄軝C(jī)器人,看能否激發(fā)你開(kāi)發(fā)自己的智能機(jī)器人。(單擊提供的鏈接,可以將相應(yīng)的智能機(jī)器人添加到 Skype。)
圖 A:我的一系列智能機(jī)器人
智能機(jī)器人
說(shuō)明
Solitaire ()
Solitaire 被認(rèn)為是世界上最受歡迎的紙牌游戲?,F(xiàn)在,使用常用的聊天客戶端(如 Skype)即可享受游戲樂(lè)趣,無(wú)需啟動(dòng)應(yīng)用。
Active Fitness ()
查找世界各地的跑步路線、騎自行車路線、徒步路線或滑雪路線,所有這些都來(lái)自全球頂級(jí)的健身社交網(wǎng)絡(luò)。
UNO ()
在 Skype、Messenger 或 Telegram 上玩這款世界著名的紙牌游戲。
Freecell ()
Freecell 是一款很棒且極具挑戰(zhàn)性的紙牌游戲,有多個(gè)難度等級(jí)。從簡(jiǎn)單等級(jí)開(kāi)始,學(xué)學(xué)如何玩它。
Crazy Eights ()
看一看這款易上手的紙牌游戲。
Card Games Chest ()
學(xué)著玩一些最受歡迎的紙牌游戲,包括 Solitaire、UNO、Crazy Eights、101、Freecell 和 Mau-Mau。
Kevin Ashley(@kashleytwit) 是 Microsoft 架構(gòu)技術(shù)推廣者。他是《Windows 8 專業(yè)編程》(Wrox,2012 年)一書(shū)的合著者,而且是最受歡迎的應(yīng)用、智能機(jī)器人和游戲的開(kāi)發(fā)者之一,其中最著名的應(yīng)用當(dāng)屬 Active Fitness (activefitness.co)。他經(jīng)常參加不同活動(dòng)、行業(yè)演出和網(wǎng)絡(luò)廣播,并進(jìn)行技術(shù)方面的演講。他的職責(zé)在于,與創(chuàng)業(yè)公司和合作伙伴密切合作,并在軟件設(shè)計(jì)、業(yè)務(wù)和技術(shù)戰(zhàn)略、體系結(jié)構(gòu)和開(kāi)發(fā)方面提供相關(guān)建議。你可以訪問(wèn)他的博客 (kevinashley.com),也可在 Twitter (@kashleytwit) 上關(guān)注他。
衷心感謝以下 Microsoft 技術(shù)專家對(duì)本文的審閱:Mat Velloso
原文地址:https://msdn.microsoft.com/en-us/magazine/mt795186
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注
如需要了解產(chǎn)品詳情,可電話咨詢專業(yè)客服人員:15358521011(微信同號(hào))