首页 > 代码库 > MS Bot Framework应用至微信公众号

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

 

MS Bot Framework应用至微信公众号