Bot Framework 搭建聊天機器人

這周我來跟你們分享的是在Microsoft Build 2016上發佈的微軟聊天機器人的框架。

現現在,各類人工智能充斥在咱們的生活裏。最典型的人工智能產品就是聊天機器人,它既能夠陪咱們聊天,也能夠替代客服人員回答客戶的問題,甚至還能夠充當祕書幫助咱們訂電影票、飛機票等等。最成功的產品就是蘋果公司的Siri和微軟公司的Cortana。git

那麼如何搭建一個本身的聊天機器人呢?今天我會用微軟公司出品的 Bot Framework 來搭建一個聊天機器人。github

官網上介紹 Bot Framework 能夠用C#, Node.js來編寫,因爲我我的技術限制問題,我只介紹C#的部分。你們可使用Node.js來編寫。你也能夠從Github獲取官方事例代碼。算法

前提準備

  1. Visual Studio 2015 或者 Visual Studio 2017
  2. 在Visual Studio 中,將全部插件進行更新
  3. 下載 Bot Framework 模板,將下載的zip文件夾直接複製到%USERPROFILE%\Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual C#\

建立你的機器人

打開Visual Studio 而且建立一個C#項目,選擇Bot Application做爲項目的模板。 imageapi

使用 Bot Application做爲項目模板建立出來的項目已經包含了一個簡單的機器人。請檢查一下項目是否包含了最新的Bot Application模板:瀏覽器

  1. 右鍵點擊項目,找到Manage NuGet Packages
  2. 在Browse標籤欄,輸入「Microsoft.Bot.Builder」
  3. 在結果中找到 Microsoft.Bot.Builder 並點擊後面的更新按鈕
  4. 根據提示來更改並更新引用的程序包

輸入代碼

首先,編寫 Controllers\MessagesController.cs文件中的Post方法來得到用戶的消息而且調用根對話框服務器

C# [BotAuthentication] public class MessagesController : ApiController { /// <summary> /// POST: api/Messages /// Receive a message from a user and reply to it /// </summary> public async Task<HttpResponseMessage> Post([FromBody]Activity activity) { if (activity.Type == ActivityTypes.Message) { await Conversation.SendAsync(activity, () => new Dialogs.RootDialog()); } else { HandleSystemMessage(activity); } var response = Request.CreateResponse(HttpStatusCode.OK); return response; } ... }

這個根對話框會處理消息而且生成一個回覆,Dialogs\RootDialog.cs文件中的MessageRevicedAsync方法會回覆用戶的消息。微信

C# [Serializable] public class RootDialog : IDialog<object> { public Task StartAsync(IDialogContext context) { context.Wait(MessageReceivedAsync); return Task.CompletedTask; } private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> result) { var activity = await result as Activity; // calculate something for us to return int length = (activity.Text ?? string.Empty).Length; // return our reply to the user await context.PostAsync($"You sent {activity.Text} which was {length} characters"); context.Wait(MessageReceivedAsync); } }

測試你的機器人

下一步,使用 Bot Framework Emulator來測試你的機器人,首先你須要下載並安裝它。框架

運行你的機器人

在安裝完Bot Framework Emulator以後,你能夠點擊 "Microsoft Edge"按鈕來運行它。 imageasync

運行成功界面以下圖所示 image學習

打開你的emulator而且鏈接到機器人

首先,須要確保你的機器人正在本機上運行,以後打開emulator而後鏈接到你的機器人:

  1. 在地址欄輸入http://localhost:port-number/api/messages,port-number是你瀏覽器中顯示的,機器人佔用的端口號碼
  2. 點擊 Connect,你不須要輸入Microsoft App ID 和Microsoft App Password。如今他們是空白的也沒有問題,在以後,若是你註冊了bot, 你會獲得這些信息。

測試你的機器人

如今你的機器人已經開始運行了,而且emulator已經開始工做了。你能夠輸入你想輸入的任何東西。在輸入後,你會看到*'You sent' and ending with the text 'which was ## characters', where ## is the total number of characters in the message that you sent.* 這樣的回覆。

結語

好啦,搭建本身的機器人是否是很是簡單呢。可是,若是想搭建一個如Siri或者Cortana這樣的機器人,那是須要海量數據來支持的,甚至還須要自學習算法以及人工智能的知識。由於當一個用戶輸入一段話的時候,機器人必須瞭解這句話的含義,甚至要去猜想這句話的意思,並給出正確或者接近的答案。這也是爲何能作聊天機器人的公司大都是搜索公司或者用戶量極大的互聯網公司。

這個項目只是咱們觸及機器人的一小步,還有不少的知識來不及介紹,好比如何將Bot發佈到服務器上,而且用微信或者Skype進行訪問,如何將Bot和一些Cortana這些智能平臺進行交互,這些你們能夠自行到官網上去了解並學習。

相關文章
相關標籤/搜索