搭建聊天机器人Bot Framework
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 搭建聊天机器人
这周我来跟大家分享的是在Microsoft Build 2016上发布的微软聊天机器人的框架. 现如今,各种人工智能充斥在我们的生活里.最典型的人工智能产品就是聊天机器人,它既可以陪我们聊天,也可以替 ...
- 【自然语言处理篇】--Chatterbot聊天机器人
一.前述 ChatterBot是一个基于机器学习的聊天机器人引擎,构建在python上,主要特点是可以自可以从已有的对话中进行学(jiyi)习(pipei). 二.具体 1.安装 是的,安装超级简单, ...
- 如何将 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 逻辑如下: 下面我简单介绍一下步 ...
- 使用Botkit和Rasa NLU构建智能聊天机器人
欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 我们每天都会听到关于有能力涉及旅游.社交.法律.支持.销售等领域的新型机器人推出的新闻.根据我最后一次查阅的数据,单单Facebook Me ...
随机推荐
- [ Javascript ] JavaScript中的定时器(Timer) 是怎样工作的!
作为入门者来说.了解JavaScript中timer的工作方式是非常重要的.通常它们的表现行为并非那么地直观,而这是由于它们都处在一个单一线程中.让我们先来看一看三个用来创建以及操作timer的函数. ...
- 通过 chroot 重新设置 root 密码
实例:通过 chroot 重新设置 root 密码 忘记了 root 密码该怎么办?接下来的 demo 将演示如何通过 chroot 命令重新设置 centos7 中被忘记了的 root 密码.sys ...
- SpringJunit测试类 BaseTest(转)
/** * * * @author Jerval * @date 2011-2-17 */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfig ...
- inode与ln命令
inode可以看: http://www.cnblogs.com/itech/archive/2012/05/15/2502284.html 每个inode节点的大小,一般是128字节或256字节.i ...
- [Express] Upload Files with Express
In this lesson we create a new Express web server app for handling file uploads and persisting them ...
- Funui-overlay 如何添加theme 的 overlay
昨天更改theme主题的时候,发现所有仓库下的theme都是共用的.也就是说,如果你更改了52平台下的theme,那么你提交了代码以后,82下也会发生相应的更改.但是,昨天修改的theme属性,只在3 ...
- 使用SqlBulkCopy进行批量数据插入
Dim dt As DataTable = New DataTable() dt.Columns.Add("DtCostProductRuleGUID", GetType(Guid ...
- JS/CSS 各种操作信息提示效果
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- KNIMI数据挖掘建模与分析系列_002_利用KNIMI做商超零售关联推荐
利用KNIMI做商超零售关联推荐 http://blog.csdn.net/shuaihj 一.測试数据 须要測试数据,请留下邮箱 二.训练关联推荐规则 1.读取销售记录(sales.table) 2 ...
- android对话框(Dialog)的使用方法
Activities提供了一种方便管理的创建.保存.回复的对话框机制.比如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog( ...