这周我来跟大家分享的是在Microsoft Build 2016上发布的微软聊天机器人的框架。

现如今,各种人工智能充斥在我们的生活里。最典型的人工智能产品就是聊天机器人,它既可以陪我们聊天,也可以替代客服人员回答客户的问题,甚至还可以充当秘书帮助我们订电影票、飞机票等等。最成功的产品就是苹果公司的Siri和微软公司的Cortana。

那么如何搭建一个自己的聊天机器人呢?今天我会用微软公司出品的 Bot Framework 来搭建一个聊天机器人。

官网上介绍 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作为项目的模板。 

使用 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"按钮来运行它。 

运行成功界面如下图所示 

打开你的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这些智能平台进行交互,这些大家可以自行到官网上去了解并学习。

Bot Framework 搭建聊天机器人的更多相关文章

  1. 搭建聊天机器人Bot Framework

    Bot Framework 搭建聊天机器人 这周我来跟大家分享的是在Microsoft Build 2016上发布的微软聊天机器人的框架. 现如今,各种人工智能充斥在我们的生活里.最典型的人工智能产品 ...

  2. 如何将 Microsoft Bot Framework 机器人部署以及网页应用

    <Bot Framework>是微软开发的一款可让任何人制作自己的聊天机器人.该工具可以理解自然语言并对图片进行分析等,初期开放了 22 个可集成到应用的 API. 首先说到Bot大家的第 ...

  3. 手把手教你利用微软的Bot Framework,LUIS,QnA Maker做一个简单的对话机器人

    最近由于要参加微软亚洲研究院的夏令营,需要利用微软的服务搭建一个对话Bot,以便对俱乐部的情况进行介绍,所以现学了几天,搭建了一个简单的对话Bot,期间参考了大量的资料,尤其是下面的这篇博客: htt ...

  4. 通过Azure bot framework composer 设计一个AI对话机器人bot(查询天气)

    本文介绍通过机器人框架设计器 (Bot framework composer)接近拖拉拽的方式设计一个聊天机器人,该聊天机器人的主要功能是发起http请求查询天气.当然,稍微变通下,可以用来查询几乎任 ...

  5. 智能聊天机器人——基于RASA搭建

    前言: 最近了解了一下Rasa,阅读了一下官方文档,初步搭建了一个聊天机器人. 官方文档:https://rasa.com/docs/ 搭建的chatbot项目地址: https://github.c ...

  6. 【Azure 机器人】微软Azure Bot 编辑器系列(1) : 创建一个天气对话机器人(The Bot Framework Composer tutorials)

    欢迎来到微软机器人编辑器使用教程,从这里开始,创建一个简单的机器人. 在该系列文章中,每一篇都将通过添加更多的功能来构建机器人.当完成教程中的全部内容后,你将成功的创建一个天气机器人(Weather ...

  7. 使用图灵机器人api搭建微信聊天机器人php实现

    之前通过hook技术实现了微信pc端发送消息功能,如果在结合图灵机器人就能实现微信聊天机器人. 代码下载:http://blog.yshizi.cn/131.html 逻辑如下: 下面我简单介绍一下步 ...

  8. 【Azure 机器人】微软Azure Bot 编辑器系列(2) : 机器人/用户提问回答模式,机器人从API获取响应并组织答案 (The Bot Framework Composer tutorials)

    欢迎来到微软机器人编辑器使用教程,从这里开始,创建一个简单的机器人. 在该系列文章中,每一篇都将通过添加更多的功能来构建机器人.当完成教程中的全部内容后,你将成功的创建一个天气机器人(Weather ...

  9. 【Azure 机器人】微软Azure Bot 编辑器系列(3) : 机器人对话流中加入帮助和取消按钮功能 (The Bot Framework Composer tutorials)

    欢迎来到微软机器人编辑器使用教程,从这里开始,创建一个简单的机器人. 在该系列文章中,每一篇都将通过添加更多的功能来构建机器人.当完成教程中的全部内容后,你将成功的创建一个天气机器人(Weather ...

随机推荐

  1. 简单剖析Node中的事件监听机制(一)

    使用js的class类简单的实现一个事件监听机制,不同于浏览器中的时间绑定与监听,类似于node中的时间监听,并且会在接下来的文章中去根据自己的理解去写一下Event模块中的原理. Node.js使用 ...

  2. linux下安装xhprof

    https://jingyan.baidu.com/article/a24b33cd7ee1d519ff002b6d.html

  3. JDK 源码分析(4)—— HashMap/LinkedHashMap/Hashtable

    JDK 源码分析(4)-- HashMap/LinkedHashMap/Hashtable HashMap HashMap采用的是哈希算法+链表冲突解决,table的大小永远为2次幂,因为在初始化的时 ...

  4. SpringBoot 创建可执行Jar

    创建可执行JAR 我们也可以通过插件创建一个在生产环境中运行的可执行jar文件来完成我们的示例. 首先引入依赖: <build> <plugins> <plugin> ...

  5. QT https post请求(QNetworkRequest要设置SSL证书,而SSL证书认证有三种)

    因为https访问需要用到SSL认证,而QT默认是不支持SSL认证,所以在使用之前必须先做一些准备工作: 需要安装OpenSSL库: 1.首先打开http://slproweb.com/product ...

  6. github page 配置hexo 博客 的常见错误

    缘起 最近看到好多的公众号作者推荐大家搭建自己的博客,自己手痒也搭建了一个个人博客lumang,具体过程就是一开始上网搜索一番教程,按照教程开始搭建,由于是windows的环境,同时教程也有很多的老旧 ...

  7. System Error. Code:1722. RPC服务器不可用解决办法

    原文链接(转载请注明出处):System Error. Code:1722. RPC服务器不可用解决办法 问题 最近在软件设计上机课的时候,使用 starUML 建模工具画UML图的时候总是弹出一条如 ...

  8. FineReport启动后访问404

    近期将FineReport以嵌入式方式部署在Tomcat8上,启动服务后,点击导出下载出现HTTP ERROR 404情况: 百思不得其解啊,纠结了好几天: 后查看原部署Tomcat6服务器的cata ...

  9. SSH学习之路(一).Net开发与Java Web开发

    摘要:一直再使用.net mvc5开发,期间学习过java web相关的知识,现如今想要进阶一下便开始学习ssh框架. 1..net web开发 对于微软的东西,开发者考虑的东西不需要太多,你新建一个 ...

  10. mvc中路由的映射和实现IHttpHandler挂载

    首先我们了解一下一般的方法 我们只需要在web.config配置文件中做映射处理即可. 第一种形式: <system.web> <urlMappings enabled=" ...