Bot Framework 搭建聊天机器人
这周我来跟大家分享的是在Microsoft Build 2016上发布的微软聊天机器人的框架。
现如今,各种人工智能充斥在我们的生活里。最典型的人工智能产品就是聊天机器人,它既可以陪我们聊天,也可以替代客服人员回答客户的问题,甚至还可以充当秘书帮助我们订电影票、飞机票等等。最成功的产品就是苹果公司的Siri和微软公司的Cortana。
那么如何搭建一个自己的聊天机器人呢?今天我会用微软公司出品的 Bot Framework 来搭建一个聊天机器人。
官网上介绍 Bot Framework 可以用C#, Node.js来编写,由于我个人技术限制问题,我只介绍C#的部分。大家可以使用Node.js来编写。你也可以从Github获取官方事例代码。
前提准备
- Visual Studio 2015 或者 Visual Studio 2017
- 在Visual Studio 中,将所有插件进行更新
- 下载 Bot Framework 模板,将下载的zip文件夹直接复制到%USERPROFILE%\Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual C#\
创建你的机器人
打开Visual Studio 并且创建一个C#项目,选择Bot Application作为项目的模板。 
使用 Bot Application作为项目模板创建出来的项目已经包含了一个简单的机器人。请检查一下项目是否包含了最新的Bot Application模板:
- 右键点击项目,找到Manage NuGet Packages
- 在Browse标签栏,输入“Microsoft.Bot.Builder”
- 在结果中找到 Microsoft.Bot.Builder 并点击后面的更新按钮
- 根据提示来更改并更新引用的程序包
输入代码
首先,编写 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"按钮来运行它。 
运行成功界面如下图所示 
打开你的emulator并且连接到机器人
首先,需要确保你的机器人正在本机上运行,之后打开emulator然后连接到你的机器人:
- 在地址栏输入http://localhost:port-number/api/messages,port-number是你浏览器中显示的,机器人占用的端口号码
- 点击 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这些智能平台进行交互,这些大家可以自行到官网上去了解并学习。
- How the Bot Framework works
- Principles of bot design
- Bot Builder SDK for .NET
- Deploy a bot to the cloud
- Bot Framework FAQ
Bot Framework 搭建聊天机器人的更多相关文章
- 搭建聊天机器人Bot Framework
Bot Framework 搭建聊天机器人 这周我来跟大家分享的是在Microsoft Build 2016上发布的微软聊天机器人的框架. 现如今,各种人工智能充斥在我们的生活里.最典型的人工智能产品 ...
- 如何将 Microsoft Bot Framework 机器人部署以及网页应用
<Bot Framework>是微软开发的一款可让任何人制作自己的聊天机器人.该工具可以理解自然语言并对图片进行分析等,初期开放了 22 个可集成到应用的 API. 首先说到Bot大家的第 ...
- 手把手教你利用微软的Bot Framework,LUIS,QnA Maker做一个简单的对话机器人
最近由于要参加微软亚洲研究院的夏令营,需要利用微软的服务搭建一个对话Bot,以便对俱乐部的情况进行介绍,所以现学了几天,搭建了一个简单的对话Bot,期间参考了大量的资料,尤其是下面的这篇博客: htt ...
- 通过Azure bot framework composer 设计一个AI对话机器人bot(查询天气)
本文介绍通过机器人框架设计器 (Bot framework composer)接近拖拉拽的方式设计一个聊天机器人,该聊天机器人的主要功能是发起http请求查询天气.当然,稍微变通下,可以用来查询几乎任 ...
- 智能聊天机器人——基于RASA搭建
前言: 最近了解了一下Rasa,阅读了一下官方文档,初步搭建了一个聊天机器人. 官方文档:https://rasa.com/docs/ 搭建的chatbot项目地址: https://github.c ...
- 【Azure 机器人】微软Azure Bot 编辑器系列(1) : 创建一个天气对话机器人(The Bot Framework Composer tutorials)
欢迎来到微软机器人编辑器使用教程,从这里开始,创建一个简单的机器人. 在该系列文章中,每一篇都将通过添加更多的功能来构建机器人.当完成教程中的全部内容后,你将成功的创建一个天气机器人(Weather ...
- 使用图灵机器人api搭建微信聊天机器人php实现
之前通过hook技术实现了微信pc端发送消息功能,如果在结合图灵机器人就能实现微信聊天机器人. 代码下载:http://blog.yshizi.cn/131.html 逻辑如下: 下面我简单介绍一下步 ...
- 【Azure 机器人】微软Azure Bot 编辑器系列(2) : 机器人/用户提问回答模式,机器人从API获取响应并组织答案 (The Bot Framework Composer tutorials)
欢迎来到微软机器人编辑器使用教程,从这里开始,创建一个简单的机器人. 在该系列文章中,每一篇都将通过添加更多的功能来构建机器人.当完成教程中的全部内容后,你将成功的创建一个天气机器人(Weather ...
- 【Azure 机器人】微软Azure Bot 编辑器系列(3) : 机器人对话流中加入帮助和取消按钮功能 (The Bot Framework Composer tutorials)
欢迎来到微软机器人编辑器使用教程,从这里开始,创建一个简单的机器人. 在该系列文章中,每一篇都将通过添加更多的功能来构建机器人.当完成教程中的全部内容后,你将成功的创建一个天气机器人(Weather ...
随机推荐
- java并发包分析之———volitale
首要结论:volatile 变量提供了线程的可见性,并不能保证线程安全性和原子性. 什么是线程的可见性: 锁提供了两种主要特性:互斥(mutual exclusion) 和可见性(visibility ...
- Ubuntu设置代理的方法
用过Linux的都知道,众多的PROXY配置,让人应接不暇,本文列出常见的一些PROXY的配置 1.apt-get proxy 的配置sudo gedit /etc/apt/apt.conf NOTE ...
- SQL Server 表的管理_关于数据增删查改的操作的详解(案例代码)
SQL Server 表的管理_关于数据增删查改的操作的详解(案例代码)-DML 1.SQL INSERT INTO 语句(在表中插入) INSERT INTO 语句用于向表中插入新记录. SQL I ...
- 完全关闭Hyper-v的方法
众所周知Hyper-v和vmware有冲突,开启Hyper-v功能vmware就不能使用,但即使关闭了也是如此,这是因为功能没有被完全关闭,这里整理下方法,我自己在两台机子亲测有效. win+x,a, ...
- 对Python这门课程的理解。
这门课程是现在热门,对之后的就业和利用的帮助还是很大的. 希望能学完整本书并且能学以致用,而不是单单只获得理论知识. 学完之后能用于数据库.大数据处理.图形编程等等
- robot framework之弹出窗口的处理关键字实战
1.1 弹出窗口的处理关键字 5.8.1 Alert Should Be Present关键字 按F5 查看Alert Should Be Present关键字的说明,如下图
- PAT1012:The Best Rank
1012. The Best Rank (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue To eval ...
- PAT1121:Damn Single
1121. Damn Single (25) 时间限制 300 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue "Dam ...
- js创建数组
var a1 = new Array(); var a2 = new Array(7); var a3 = new Array(100,"0",true); var a4 = ...
- mybatis一对一映射配置详解
听说mybatis一对一有三种写法,今天我试了一下. 数据库表准备 为了偷懒,我直接就拿用户权限菜单里的菜单表和菜单与权限的中间表做实现,他们原来是多对多的关系,这边我假设这两张表是一对一. 表 g ...