Office 365 机器人(Bot)开发入门

夜隼0082017-08-01 08:26

  作为人工智能技术的一个主要的表现形式,这些年机器人(bot)的应用越来越广泛。不管是有实物的,还是纯软件的,现在的机器人技术应该说已经走入寻常百姓家了。这一篇文章探讨的是,在微软提供的BotFramework基础上快速开发和部署一个软件的机器人,并且将其与Office365或其他应用无缝地整合起来,为用户带来全新的基于会话的人机交互体验。

  基本概念

  本文会用一个实例带领大家入门,如下的几个基本概念稍作说明:

  BotFramework——这是微软提供的一整套工具和服务的集合,它的访问地址是https://dev.botframework.com。它主要包括了

  Bot注册和管理、运行服务

  多种开发模板和SDK(BotBuilderSDK)以及在线的开发和部署服务(AzureBotService)

  用于调试的模拟器(BotFrameworkEmulator)

  在线的应用商店(BotDirectory)

  Bot——这是我们最终开发出来的一个逻辑上的对象,它主要包含了一组API代码,一个描述文件。

  Channel——上面提到过了,我们开发出来的机器人(Bot)是一个逻辑上的对象,真正与用户交互的,必须要有一个合适的界面,这些界面,如果能跟用户最常用的应用程序整合在一起,则可能是一种更加好的体验。BotFramework的设计理念是让Bot一次编写,处处能运行,它通过所谓的Botconnectorservice来连接不同的用户界面。这些用来使用我们Bot的应用程序,我们称之为Channel。目前已经有十几个Channel是受支持的。详情请见:https://docs.microsoft.com/en-us/bot-framework/portal-configure-channels.

  截至本文发稿,我发现BotDirectory这个服务已经不再接受新的提交了,现在的政策改为BingChannel来提供服务。

  注册一个Bot

  要进行Bot开发,你首先需要在BotFramework中进行注册。你可以使用个人账号(MicrosoftAccount)和工作账号(Office365账号)登陆https://dev.botframework.com,然后选择“Mybots”,进行如下操作完成注册。

1501550179659059360.png

  在下面这个页面中,Bothandle是你的bot的标识符,不能包含空格,请保存这个名字,后续会用到。另外,Messagingendpoint此时可以不填。最关键就是要点击“CreateMicrosoftAppIDandpassword”,并且请保存返回的AppID和Password信息,后续会用到。

1501550224041032328.png

  使用VisualStudio模板进行快速开发

  目前BotFramework支持四种开发方式——.NET、NodeJS、AzureBotService(preview)、REST.基于.NET的开发是在VisualStudio2017中进行,基于NodeJS的开发则一般在VisualStudioCode完成,后面两种则无需特定的编辑器,在线或者通过文本编辑器即可。

  限于篇幅,我不会逐个展开,本文的案例将基于VisualStudio2017和C#来进行演示,而且为了快速进行开发,我们将采用官方提供的模板来进行开发。请下载下面三个模板

  BotApplication,请将这个zip文件放在%USERPROFILE%DocumentsVisualStudio2017TemplatesProjectTemplatesVisualC#下面

  BotController,请将这个zip文件放在%USERPROFILE%DocumentsVisualStudio2017TemplatesItemTemplatesVisualC#下面

  BotDialog,请将这个zip文件放在%USERPROFILE%DocumentsVisualStudio2017TemplatesItemTemplatesVisualC#下面

1501550251263064330.png

  完成上面的操作后,重新打开VisualStudio2017,我们可以在新建项目的时候看到下面的模板。

1501550278048043758.png

  通过模板创建出来的项目,其实是一个标准的ASP.NETWebAPI项目,其中最关键的两个代码文件如下。

1501550304365005204.png

  为了帮助大家快速入门,我在这里暂时不解释代码结构,也不去做任何修改。你现在需要做的是,在web.config中将Bot注册时我提醒你保存的三个信息填写进去。我的例子信息如下:

  <appSettings><!--updatethesewithyourBotId,MicrosoftAppIdandyourMicrosoftAppPassword--><addkey="BotId"value="codemonkeybot"/><addkey="MicrosoftAppId"value="89403745-7fe4-453a-ae0a-e53caf84866b"/><addkey="MicrosoftAppPassword"value="7LLQHqUYYWU72dY3c6OvBG4"/></appSettings>

  完成这些之后,你就可以按下F5键进行调试了,如果不出意外的话,你将看到浏览器被打开并显示如下的页面。

1501550324224051787.png

  那么,这有什么用呢?目前来说,确实还看不出有什么用。因为现在来说,我们还只是构建了Bot中的服务部分,并没有将其与对应的Channel连接起来,所以也就没有用户界面来进行调用它。

  事实上我们还不要那么着急,在真正去跟Channel绑定之前,建议在本地进行测试和调试。为此,BotFramework中很贴心地为开发人员准备了一个模拟器,下一节我将介绍如何使用它。

  使用BotFramework模拟器进行本地测试

  首先,你需要通过https://github.com/Microsoft/BotFramework-Emulator/releases下载和安装最新版本的模拟器。

  值得注意的是,这个模拟器可以在PC,Mac上面运行。

  打开模拟器,并且输入服务地址,和应用ID及密钥后,点击“Connnect”按钮。

1501550353958024535.png

  确保在右侧的"Log"中看到的返回信息是“->POST200[conversationUpdate]”,这个就表示连接成功了。然后我们在左下角的文本框,可以随便输入一些文字,点击回车后模拟器会将信息包装起来,发送给后台服务,正常情况下我们会很快看到Bot的回复文本。我的范例如下。

1501550387794047409.png

  在这个标准模板中,机器人(Bot)只是很简单地将用户发送过来的指令原封不动地返回给用户,并没有做任何实质性的工作。但其实,这已经是一个很好的起点了,我们至少确保机器人正确地收到了指令,至于如何根据这些指令进行响应,可以在下一步来完善。

  通过BotFramework模拟器进行本地测试和调试的好处是,可以直接在VisualStudio中设置断点,一步一步地调试,便于发现和解决问题。

  将Bot应用部署到AzureAppService

  在完成本地的开发和测试后,下一步是需要将我们开发好的APIService发布到一个合适的生产环境,以便其他用户能够访问到这个服务。这个APIService是一个标准的ASP.NET项目,你可以自行选择合适的托管环境,只要有IIS并且支持.NETFramework4.6的WindowsServer就可以。我这里演示的是,如何将这个应用部署到Azure的AppService中,这是Azure提供的PaaS服务,它可以将很多运行环境的细节隐藏掉,开发人员不需要关注操作系统和IIS怎么安装,负载均衡怎么做等基础性工作,而是将全部精力集中在应用开发上面。关于AzureAppService的更多细节,已经超出了本文的范畴,有兴趣的朋友可以直接参考https://azure.microsoft.com/en-us/services/app-service/.

1501550407731062989.png

  在AppService的Overview页面中,点击“Getpublishprofile”。

1501550433721052448.png

  在VisualStudio中,停止调试,然后选中项目,在右键菜单中选择“Publish”,在属性页面中,选择“ImportProfile”

1501550462877088352.png

  VisualStudio会自动对项目进行编译并且完成第一次发布,如果一切顺利的话,你将很快看到一个新打开的浏览器窗口。

1501550493407033860.png

  请注意浏览器中的地址http://codemonkeybot.azurewebsites.net/,你可以换成https://codemonkeybot.azurewebsites.net/也是能正常工作的,这其实是AzureAppService的一个福利,所有部署到AppService的应用,都默认拥有https访问的功能,不需要自己去申请证书。要知道,在生产环境使用Bot的时候,我们是强烈推荐https的。

  看起来跟本地也没有什么不一样,对吗?这不是重点。我们接下来要完成一系列的配置,使这个Bot真的能在一些常见的Channel中运行起来。

  使用AzureAppService,你可以专注应用开发,在VisualStudio中做了代码修改之后,只需要再次发布即可。

  与MicrosoftTeams进行集成

  我们前面完成了几个关键步骤,包括Bot注册,Bot应用开发和发布,接下来是时候让它实际地为我们的用户进行服务了。

  首先,我们需要修改Bot的注册信息,让它使用我们上面提到的AzureAppService来提供服务。

Office 365 机器人(Bot)开发入门

  保存设置后,你可以在当前页面完成测试,确保其能正常工作

Office 365 机器人(Bot)开发入门

  现在,万事俱备,只欠东风了。我需要隆重给大家介绍Office365家族中的新成员——MicrosoftTeams。它是一款全新的以聊天为基础的协作沟通工具,整合了Office365的很多服务,并且作为Office365的一站式前端应用为用户提供了聊天,团队和项目协作,会议等功能。

  MicrosoftTeams既提供了桌面端应用,网页应用,也提供了移动端应用,关于它的更多细节,请有兴趣的朋友参考https://teams.microsoft.com。

Office 365 机器人(Bot)开发入门

  接下来我们重点来看一下,如何将此前配置好的Bot与Teams连接起来,让Teams的用户可以愉快地跟它对话起来。

  在Bot的设置页面,点击“CHANNELS”按钮,可以看到默认情况下连接好了两个Channel,一个是Skype(这是针对个人的一个即时通讯服务,由微软提供),另外一个是WebChat,这是支持在任意的网页应用程序中,通过iframe的方式嵌入这个Bot,相当实用。

  接下来我们要做的是,在下方“Addachannel”的列表中选择“MicrosoftTeams”的图标,将其加入当前这个Bot的Channel中来。

Office 365 机器人(Bot)开发入门

  完成配置后,在新的Channel列表中点击“MicrosoftTeams”这个链接

Office 365 机器人(Bot)开发入门

  它会要求打开MicrosoftTeams客户端,并且会自动将这个Bot添加到你的联系人列表中来。

Office 365 机器人(Bot)开发入门

  如果你想邀请你的同事也添加这个Bot进行测试,那么你需要做的是将注册Bot时获得的AppId(通常是一个GUID字符串,例如我的CodeMonkey的ID是89403745-7fe4-453a-ae0a-e53caf84866b,欢迎大家添加)提供给他(她),然后他们可以在MicrosoftTeams中通过这个ID找到你的Bot,将其添加为好友后即可开始聊天了。

  使用ID来搜索当然不会是很友好的一个体验,如果你希望将你的Bot让更多的人使用到,而且希望直接用Bot的名字来搜索到,这个过程可能略微复杂一些,请参考https://msdn.microsoft.com/en-us/microsoft-teams/submission了解详细信息。

  另外,作为Office365用户而言,大家可能对SkypeforBusiness也是很熟悉的。BotFramework目前也支持SkypeforBusiness的整合,这个操作需要Office365管理员才能完成,具体操作细节请参考https://msdn.microsoft.com/en-us/skype/skype-for-business-bot-framework/docs/overview

  扩展开发提示

  看起来还不错,不是吗?现在开发一个机器人,真的不再是一件非常难的事情,我并不是说你通过这篇文章就能开发出来很酷的机器人,但至少你能快速开始,并且你可以看到BotFramework已经帮助我们将基础架构做得非常完善了,你唯一需要去花心思的是,具体你的这个机器人要提供什么服务,以及以什么样的交互形式提供等等。这些内容跟具体的业务场景有关,显然超出了本文的范畴,但我这里很乐意给大家提供一些思路和参考链接。

  Bot开发的一些原则https://docs.microsoft.com/en-us/bot-framework/bot-design-principles

  为Bot添加更多智慧,如何跟微软认知服务整合https://docs.microsoft.com/en-us/bot-framework/cognitive-services-bot-intelligence-overview

  如何设计交互和会话流https://docs.microsoft.com/en-us/bot-framework/bot-design-conversation-flow

  结语

  本文通过一个实例介绍了基于BotFramework的Office365机器人开发流程,在人工智能的大背景下,这是一个很好的机遇:一方面可以为Office365用户带来全新的基于对话的体验,另外最重要的是业务应用可以更加自然地与Office365这样的平台实现融合,结合微软的认知服务则可以将机器人的智慧水平提升到一个新的高度,这些创新(虽然说还有改进空间)是看得见的生产力,也将对我们日后的人机交互形式产生深远的影响。


本文为OFweek公众号作者发布,不代表OFweek立场。如有侵权或其他问题,请联系举报。
0条评论

评论

    夜隼008

    相关公众号
    • 机器人小槑
      关注智能生活和科技前沿,每周持续为您提供最新高科技精华集锦。
    • 中展世信小张
      专注一线城市大型展会媒体宣传、策划
    • 科技圈里那点事儿
      关注科技前沿热点,持续为您带来最新资讯。
    • TDrobot
      途道信息科技有限公司以技术研发为导向,专注机器人智能控制研究
    • 智能制造
      提供智能制造热点资讯和全面的分析探讨

    投诉文章问题

    ×
    • 营销广告
    • 重复、旧闻
    • 格式问题
    • 低俗
    • 标题夸张
    • 与事实不符
    • 疑似抄袭
    • 我有话要说
    确定取消

    举报评论问题

    ×
    • 淫秽色情
    • 营销广告
    • 恶意攻击谩骂
    • 我要吐槽
    确定取消

    用户登录×

    请输入用户名

    请输入密码