Bot Framework 搭建聊天机器人
這周我來(lái)跟大家分享的是在Microsoft Build 2016上發(fā)布的微軟聊天機(jī)器人的框架。
現(xiàn)如今,各種人工智能充斥在我們的生活里。最典型的人工智能產(chǎn)品就是聊天機(jī)器人,它既可以陪我們聊天,也可以替代客服人員回答客戶的問(wèn)題,甚至還可以充當(dāng)秘書幫助我們訂電影票、飛機(jī)票等等。最成功的產(chǎn)品就是蘋果公司的Siri和微軟公司的Cortana。
那么如何搭建一個(gè)自己的聊天機(jī)器人呢?今天我會(huì)用微軟公司出品的Bot Framework來(lái)搭建一個(gè)聊天機(jī)器人。
官網(wǎng)上介紹 Bot Framework 可以用C#, Node.js來(lái)編寫,由于我個(gè)人技術(shù)限制問(wèn)題,我只介紹C#的部分。大家可以使用Node.js來(lái)編寫。你也可以從Github獲取官方事例代碼。
前提準(zhǔn)備
Visual Studio 2015 或者Visual Studio 2017
在Visual Studio 中,將所有插件進(jìn)行更新
下載Bot Framework 模板,將下載的zip文件夾直接復(fù)制到%USERPROFILE%DocumentsVisual Studio 2017TemplatesProjectTemplatesVisual C#
創(chuàng)建你的機(jī)器人
打開(kāi)Visual Studio 并且創(chuàng)建一個(gè)C#項(xiàng)目,選擇Bot Application作為項(xiàng)目的模板。
使用 Bot Application作為項(xiàng)目模板創(chuàng)建出來(lái)的項(xiàng)目已經(jīng)包含了一個(gè)簡(jiǎn)單的機(jī)器人。請(qǐng)檢查一下項(xiàng)目是否包含了最新的Bot Application模板:
右鍵點(diǎn)擊項(xiàng)目,找到Manage NuGet Packages
在Browse標(biāo)簽欄,輸入“Microsoft.Bot.Builder”
在結(jié)果中找到Microsoft.Bot.Builder并點(diǎn)擊后面的更新按鈕
根據(jù)提示來(lái)更改并更新引用的程序包
輸入代碼
首先,編寫ControllersMessagesController.cs文件中的Post方法來(lái)獲得用戶的消息并且調(diào)用根對(duì)話框
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;
}
...
}
這個(gè)根對(duì)話框會(huì)處理消息并且生成一個(gè)回復(fù),DialogsRootDialog.cs文件中的MessageRevicedAsync方法會(huì)回復(fù)用戶的消息。
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);
}
}
測(cè)試你的機(jī)器人
下一步,使用Bot Framework Emulator來(lái)測(cè)試你的機(jī)器人,首先你需要下載并安裝它。
運(yùn)行你的機(jī)器人
在安裝完Bot Framework Emulator之后,你可以點(diǎn)擊 "Microsoft Edge"按鈕來(lái)運(yùn)行它。
運(yùn)行成功界面如下圖所示
打開(kāi)你的emulator并且連接到機(jī)器人
首先,需要確保你的機(jī)器人正在本機(jī)上運(yùn)行,之后打開(kāi)emulator然后連接到你的機(jī)器人:
在地址欄輸入http://localhost:port-number/api/messages,port-number是你瀏覽器中顯示的,機(jī)器人占用的端口號(hào)碼
點(diǎn)擊Connect,你不需要輸入Microsoft App ID和Microsoft App Password。現(xiàn)在他們是空白的也沒(méi)有問(wèn)題,在之后,如果你注冊(cè)了bot, 你會(huì)得到這些信息。
測(cè)試你的機(jī)器人
現(xiàn)在你的機(jī)器人已經(jīng)開(kāi)始運(yùn)行了,并且emulator已經(jīng)開(kāi)始工作了。你可以輸入你想輸入的任何東西。在輸入后,你會(huì)看到*'You sent' and ending with the text 'which was ## characters', where ## is the total number of characters in the message that you sent.* 這樣的回復(fù)。
結(jié)語(yǔ)
好啦,搭建自己的機(jī)器人是不是非常簡(jiǎn)單呢。但是,如果想搭建一個(gè)如Siri或者Cortana這樣的機(jī)器人,那是需要海量數(shù)據(jù)來(lái)支持的,甚至還需要自學(xué)習(xí)算法以及人工智能的知識(shí)。因?yàn)楫?dāng)一個(gè)用戶輸入一段話的時(shí)候,機(jī)器人必須了解這句話的含義,甚至要去猜測(cè)這句話的意思,并給出正確或者接近的答案。這也是為什么能做聊天機(jī)器人的公司大都是搜索公司或者用戶量極大的互聯(lián)網(wǎng)公司。
這個(gè)項(xiàng)目只是我們觸及機(jī)器人的一小步,還有很多的知識(shí)來(lái)不及介紹,比如如何將Bot發(fā)布到服務(wù)器上,并且用微信或者Skype進(jìn)行訪問(wèn),如何將Bot和一些Cortana這些智能平臺(tái)進(jìn)行交互,這些大家可以自行到官網(wǎng)上去了解并學(xué)習(xí)。
How the Bot Framework works
Principles of bot design
Bot Builder SDK for .NET
Deploy a bot to the cloud
Bot Framework FAQ
總結(jié)
以上是生活随笔為你收集整理的Bot Framework 搭建聊天机器人的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: jdk与jre的区别 很形象,很清晰,通
- 下一篇: 高考舞弊案背后的“文化魔咒”—— 如何整