MS Bot Framework应用至微信公众号

一、下载Bot Framework的SDK

首先,下载Bot Framework的SDK,建议下载Bot Framework的Visual Studio的模板Bot Application

下载下来的模板(不用解压)请直接放置到C:\Users\你的用户名\Documents\Visual Studio 2015\Templates\ProjectTemplates\Visual C# 下面,这样你在C#下面就可以看到有Bot Application的模板了。

二、创建Bot的应用

点击创建,然后直接发布Publish。

发布到本地IIS上,配置个端口,如20080

三、使用ngrok工具,将本地的站点暴露外网中

因为在注册bot时候是必须得要外网https的链接,所以我们先要将BotTest投到外网上。有外网有ssl证书(自签的不可以)可以忽略这步

1.首先访问官网,https://ngrok.com/  注册一个账号(注册后才能获取自己的一个账号秘钥用于进行后面的绑定操作)。

2.注册完成后,在跳转后的页面不用理会支付模块,可以看到自己的秘钥信息以及一个下载链接

3.点击下载链接,下载ngrok(开始下载后,可以点击浏览器返回到之前有秘钥信息的页面,页面暂时不要关闭,后面还有用),下载完成后可以看到压缩包里只有一个.exe文件。提示下千万不要习惯性的以为解压到当前文件夹,然后双击.exe文件哦。正确的操作是解压的时候选择   解压到 ngrok  这个选项。然后将解压生成的文件夹直接放到自己想放的地方,例如我直接放到D:\ngrok目录下。

打开cmd

输入d: 回车

输入cd: ngrok

输入注册完成后给到的Install your authtoken

最后设置对应的端口号,如20080  ngrok http 20080

然后就完成了操作

四、在Bot Framework网站上注册应用

注册时需要有一个微软的帐号来登录,然后同意授权。在界面中点击Register a bot开始注册:

"Name":你的bot的名字。

"Bot Handle":其实就是你的Bot的id。

"Description":你的Bot的描述,会在你的publish之后主页上显示。

endpoint,就是你后台服务的地址:https://你的服务器地址/api/messages (刚才咱们发布的template的默认接口)

你需要点击"Create Microsoft App ID and password",创建App ID和Password(注意,切记把这个app password记下来,只显示一次)

下面的必填的一些选项随便填一下就可以了。

点击保存。

更新程序的webconfig

点击Channels 下Get bot embed codes

将得到的code 替换进default.htm的body里

访问该页面:

到此,机器人部分完成。

由于ngrok产生的网址过了一段时间或者没有使用就会失效,需要重新产生,再配置到bot中

五、LUIS服务

请先登录:https://www.luis.ai/ ,这是语言理解服务的portal。如果还没注册的话用live id注册以下就可以了。

咱们先点击"new App"新建一个app。

新建完成后,点击"Edit",编辑这个应用。

我们先看以下左边的tab,可以看到有Intents,Entities,Pre-built Entities。。。。

Intents:就是意图,比如咱们现在要提供图书查询的服务,那么咱们就创建一个"查询图书"的Intent。

Entities:实例,比如在查询图书的时候需要有书名,出版社,价格等信息,需要把用户的语言里头的这些信息提取出来,这些就是这个句子里头的实例,咱们创建一个"图书"的实例。

Pre-built Entities:这个是预置好的实例,比如说时间,数字等等,我加了一个datetime的预置实例。

Regex Features:正则表达式,可以匹配出相应的一些字段,比如说航班号。

Phrase List Features:固定的一些短语,能够直接识别,比如说航空公司的名字等已知信息

建立问题,并可以将书名标注为图书,然后点击submit

之后点击左下角的Train

训练完成后点击Publish

在Bot中集成LUIS服务,这块可以参考佘泽鹏的博客。我略微做了些调整,但原理是一样的。

六、使用botframework-emulator 工具

该工具可以到https://emulator.botframework.com/ 下载。

通过该工具,可以进行代码调试并且绕开第四步在Bot Framework网站上注册应用。不过必须把MessagesController上的  [BotAuthentication] 先注销掉。

下载打开,先要进行app setting。配置本地的ngrok路径即可。

然后输入本地路径链接就可以进行操作了。

在右边工具也自动记录下来了日志。有异常时,可以在Details这块查看具体信息。

、使用Http Request来请求

获得Bot Framework 返回在http://www.cnblogs.com/sonic1abc/p/5941442.html 里有详细的介绍了。

另外如果既没有https也不想通过代理的话也可以绕过Bot Framework直接请求Luis,对Luis的返回数据再进行自定义的处理:

System.Net.WebRequest wrq = System.Net.WebRequest.Create(uri);
wrq.Headers.Add("Ocp-Apim-Subscription-Key", luis_Key);
wrq.Method = "GET";
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls; //SSL3协议替换成TLS协议
System.NetWebResponse wrp = wrq.GetResponse();
System.IO.StreamReader sr = new System.IO.StreamReader(wrp.GetResponseStream(), System.Text.Encoding.GetEncoding("utf-8"));
strResult = sr.ReadToEnd();
Lusi ro = JsonHelper.JsonDeserialize<Lusi>(strResult);

反序列化后得到的信息和Luis官网请求得到的结果形式一样。

将处理好的信息之后,再调用微信的api接口返回,既可以完成微信上面的人工智能了。

public class MessageBiz : BaseBiz
{
public SendResponse Send<T>(T request)
{
string strJson = JsonConvert.SerializeObject(request);
//_SendLog.WriteLog("new: " + strJson);
base.url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + TokenBiz.GetAccessToken(str_corpid, str_corpsecret);
base.para = strJson;
base.method = "POST";
base.needAccessToken = true;
var res = base.GetUrlReturn<SendResponse>();
return res;
}
}

因为我是企业号,所以调用的企业号服务,接口说明可以参见:http://qydev.weixin.qq.com/wiki/index.php?title=%E5%8F%91%E9%80%81%E6%8E%A5%E5%8F%A3%E8%AF%B4%E6%98%8E。公众号道理还是一样的,换公众号接口另外实现而已。

最后来简单看下效果截图。

参考资料:

http://www.cnblogs.com/rocsheh/p/5846009.html

http://blog.csdn.net/xxdddail/article/details/51190754

http://blog.csdn.net/gebitan505/article/details/39497779

http://www.cnblogs.com/sonic1abc/p/5941442.html

时间: 2024-10-13 12:51:38

MS Bot Framework应用至微信公众号的相关文章

新坑:c#弄微信公众号

微信公众号作为一个平台级别的产品,对商业应用来说,有很大的吸引力.如何让公众号更好的吸粉?靠内容不是一般小商户可以做到的,那是网红自媒体的强项.一般商户要怎么突围?那就是提供实用,有意义的功能给粉丝. 而微信公众号自身功能是非常匮乏的,没有什么提供,连客服功能都几乎没有,所以这些那些的,就需要开发人员来解决.当然,如果有插件,有官方功能,那固然更好,但是从目前来看,微信官方缺乏这方面的安排. 我想弄几个基本的功能,一个是扫码,然后给出商品信息:一个是会员信息的管理:一个是更好的客服:还有简单的排

C#微信公众号开发系列教程三(消息体签名及加解密)

  C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南)    距离上一篇博文已经半个月了,本来打算每两天更新一次的,但可怜苦逼码农无日无夜的加班.第一篇博文发表后,博文视点的编辑就找到我,问我想不想出版这个系列,我当时瞬间就想到了王大锤的独白,想想真的是有点小激动,后面按照那边的要求,提交了申请书,也提交了目录,可惜文笔不行,再加上最近太忙,样稿一直没有给他,感觉挺愧疚了.真心希望能帮一下迷茫的

C#微信公众号开发 -- (四)获取API调用所需的全局唯一票据access_token

access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token.开发者需要进行妥善保存.access_token的存储至少要保留512个字符空间.access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效. 获取access_token请求说明 是以http请求的GET方式通过访问:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_crede

皮裤原理和运营微信公众号dotNET跨平台

经常碰到有同学对.NET跨平台存在各种疑惑和误解,原因是什么呢?当然我是知道.NET的跨平台不是问题,而且微软2014年的努力可圈可点,而且还有很多人对.NET的前景感到困惑.春节期间突然明白了,这就是皮裤原理呀,微信红包的火爆让我想起很有必要运营一个微信公众号:dotNET跨平台的话题,让开源圈了解.NET,才能为大家建立更好.更多的社区. 初二开始,忙活了几天,目前已经有380位粉丝.发布了3篇文章: .NET 基金会及 Roslyn 编译器 ASP.NET 5开源及 .NET Core F

.NET微信公众号开发-6.0模板消息

一.前言 为了保证用户不受到骚扰,在开发者出现需要主动提醒.通知用户时,才允许开发者在公众平台网站中模板消息库中选择模板,选择后获得模板ID,再根据模板ID向用户主动推送提醒.通知消息.这个意思也就是,我们作为微信商户,不能主动的给用户推送消息,如果这个功能完全开放,那么用户有可能会受到大量的垃圾信息,为了做一个很好的控制,微信那边给我们开放了一个模板消息,通过模板消息我们可以友好的给用户发送一些相关的消息提醒. 二.开发前的准备 1.0模板消息官方文档地址 2.0查看我们的模板消息是否申请成功

值得推荐的技术类微信公众号汇总

我们每天和手机在一起的时间比和老婆.女朋友在一起的时间都多,下班后懒得打开电脑,用手机也能看技术文章,在这里汇总了关于技术类的微信公众号,关注这些公众号能让我们站在技术前沿,也能够充分利用碎片时间来学习,我在Github上创建了一个页面,欢迎补充添加. 名称:程序猿 微信号:imkuqin 功能介绍:本微信公众号:imkuqin,为程序员提供最新最全的编程学习资料的查询.目前已经开通PHP.C/C++函数库..NET Framework类库.J2SE API查询功能 名称:eoe移动开发者社区

微信公众号开发 (微信网页开发)

微信支付搞完之后,也开始了微信其他功能,不得不说,微信写得接口都比较齐全和标准,附上微信公众号开发文档链接,仔细阅读,必须严格按照其规则,才能调用微信的接口. 最近做了一个手机端调用微信接口打开摄像头进行扫描二维码功能和调用上传下载图片的接口,注意,在微信公众号配置要注意,[开发]-[接口权限] 查看对应的接口权限是开通了没有?最主要的是,还要在[公众号设置]-[功能设置]-[JS接口安全域名]配置,切记,一定是备案过的,一级二级都可以. 附上图片: 配置完此项之后,还有个地方需要配置的,需要特

基于java的微信公众号二次开发视频教程

详情请交流  QQ  709639943 00.基于java的微信公众号二次开发视频教程 00.leetcode 算法 面试 00.北风网 零基础到数据(大数据)分析专家-首席分析师 00.快速上手JMeter 00.Jmeter 00.2017年Java web开发工程师成长之路 00.R语言速成实战 00.R语言数据分析实战 00.Python+Django+Ansible Playbook自动化运维项目实战 00.Java深入微服务原理改造房产销售平台 00.Python3入门机器学习 经

基于搜狗搜索的微信公众号爬虫实现(C#版本)

Author: Hoyho Luo Email: [email protected] Source Url:http://here2say.me/11/ 转载请保留此出处 本文介绍基于搜狗的微信公众号定向爬虫,使用C#实现,故取名WeGouSharp.本文中的项目托管在Github上,你可以戳WeGouSharp获取源码,欢迎点星.关于微信公共号爬虫的项目网上已经不少,然而基本大多数的都是使用Python实现 鉴于鄙人是名.NET开发人员,于是又为广大微软系同胞创建了这个轮子,使用C#实现的微信