在《Bot Framework的简单实现》一文中已经实现了Bot Framework的简单应用,可以通过注册自己的了Bot实现与本地IIS下的服务交互。除了这种通过注册Bot的方式来测试外,我们还可以通过Bot Framework Enulator,即Bot模拟器来测试。Bot Framework Emulator的下载地址在这里,下载安装后启动,界面如下。
该模拟器需要以管理员的身份启动。我用的是win10的administrator用户登陆,但怎么启动都失败,后来更改了组策略才正常启动。其方法如下
1 在运行框 里面输入“gpedit.msc”。
2 打开组策略编辑器,计算机配置->windows设置->安全设置->->本地策略->安全选项
3 找到“用于内置管理员账户的管理员批准模式”设置为已禁用。然后重启,就可以了。
如下图
现在我们修改响应的代码。为了能够验证AppID和AppSecret,我们需要在MessagesController.cs的代码中将BotAuthentication加入到类MessagesController的顶部。新的代码如下
using System; using System.Linq; using System.Net; using System.Net.Http; using System.Threading.Tasks; using System.Web.Http; using System.Web.Http.Description; using Microsoft.Bot.Connector; using Microsoft.Bot.Connector.Utilities; using Newtonsoft.Json; namespace BotDemo { [BotAuthentication] public class MessagesController : ApiController { /// <summary> /// POST: api/Messages /// Receive a message from a user and reply to it /// </summary> public async Task<Message> Post([FromBody]Message message) { if (message.Type == "Message") { // calculate something for us to return int length = (message.Text ?? string.Empty).Length; // return our reply to the user return message.CreateReplyMessage($"You sent '{message.Text}'.Length is {length}"); } else { return HandleSystemMessage(message); } } private Message HandleSystemMessage(Message message) { Message reply = null; reply = message.CreateReplyMessage("您执行了" + message.Type); reply.Type = message.Type; return reply; } } }
经编译重新发布到IIS下后,我们使用模拟器来发起请求。记得请求的URL中的端口需要改成对就的端口,比如我这里用的是20080端口。
如果需要调试,需要将项目以Debug的形式编辑,然后将Bin下的文件复制到发布的位置,一定记得复制与dll相对应的pdb文件,简单的就全部复制过去即可。
然后在VS中以附加进程的方式来调试,如下图。
IIS是在w3wp.exe下运行的,注意看其后对应的位置是否是所发布的位置,当有多个网站的时候特别要注意。如果没有显示w3wp.exe的,可以勾选上“显示所有用户进程”。
接下来在模拟器发起请求后就可以进入代码调试了,如下图。
这样就实现了bot framework emulator的应用与调试。
转载请注明出处。