BOT FRAMEWROK技术白皮书 第二章 使用.NET 开发Bot

第二章 使用.NET 开发Bot

本章主要讲如何使用Bot Framework Connector SDK中的 .NET模板进行开发。

1.     安装必备程序

l  Visual Studio 2015(包含最新更新)-你可以从此处免费下载社区版:www.visualstudio.com

l  请确保所有的VS扩展都升级到最新版本:工具-扩展和更新-更新

1.     下载并安装Bot Application 模板

l  从此处下载所需文件:http://aka.ms/bf-bc-vstemplate

l  将下载的zip压缩包复制到Visual Studio 2015目录,一般在"%USERPROFILE%\Documents\Visual Studio 2015 \ Templates \ ProjectTemplates \ Visual C#\"。

2.     打开Visual Studio。

3.     使用新的Bot Application模板创建一个新的C#项目。

 

 

4.     该模板是一个完整功能的Echo Bot,可以将用户输入的内容原样输出出来。为了能正确运行:

l  该Bot应该使用Bot Connector进行注册

l  在Bot Framework注册页面获得的AppId和AppPassword要在项目的web.config中进行配置。

l  项目需要发布到服务器上。

2.     编译你的Bot

Bot模板的核心功能在Controllers\MessagesController.cs文件中,参考下面的代码。在本示例中,以下代码从用户输入取得文本信息,并使用CreateReplyMessage 函数创建一个返回信息。方法上的BotAuthentication 装饰器基于HTTPS来验证你的Bot Connector 凭据。

 

[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)
{
ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));
if (activity.Type == ActivityTypes.Message)
{
// calculate something for us to return
int length = (activity.Text ?? string.Empty).Length;
// return our reply to the user
Activity reply = activity.CreateReply($"You sent {activity.Text} which was {length} characters");
await connector.Conversations.ReplyToActivityAsync(reply);
}
else
{
HandleSystemMessage(activity);
}
var response = Request.CreateResponse(HttpStatusCode.OK);
return response;
}

}

3.     使用Bot框架模拟器(Bot Framework Emulator )来测试你的Bot应用程序。

Bot框架提供了一个频道模拟器(channel emulator)来模拟Bot框架云服务测试调用你的Bot。要安装Bot框架模拟器,请从这儿(https://download.botframework.com/bf-v3/tools/emulator/publish.htm)下载。

安装好Bot框架模拟器后你就可以测试了。首先,使用浏览器作为宿主运行前面步骤在Visual Studio中的Bot应用程序。下图是使用微软Edge浏览器运行:

 

当使用模拟器来测试Bot应用程序时,需要记下程序运行的端口号,本例中的端口号是3979。需要这个信息来运行Bot框架模拟器。

现在打开Bot框架模拟器。在能与Bot应用程序交互之前还需要做一些配置。

当使用模拟器配合本地运行的Bot时,需要做的配置如下:

l  Bot的Url设置为localhost:<端口> ,其中<端口>为前面步骤记载下的端口。注意,前面步骤使用的是Bot引用程序模板,Url还需要添加 “/api/messages”。

l  MicrosoftAppId 字段不要填写,保留空值就好

l  MicrosoftAppPassword字段不要填写,保留空值就好。

这种方法仅适用于本地运行的模拟器。如果在云端运行的话,你需要指定核实的URL核认证信息,更多信息请参考这里(https://docs.botframework.com/en-us/tools/bot-framework-emulator/ )。

 

现在所有万事俱备,你可以和服务进行交互。在Bot框架模拟器引用的底部有个文本框,你可以输入信息,你输入的信息将会得到回应,如下图所示:

如果我们看看通过Visual Studio 2015 Bot应用程序模板产生的Bot应用程序代码,特别是名称为MessageController.cs 这个文件,就可以看到用户输入的信息被转换成了一个回复活动,回复”You sent {activity.Text} which was {length} character”给用户。

posted @ 2016-11-22 13:38  YuhengDing  阅读(275)  评论(0)    收藏  举报