Office 365 机器人(Bot)开发入门指南 (新篇)

最近在整理书稿时,发现我在2017年7月份写的这篇 Office 365 机器人(Bot)开发入门 的内容,由于相关平台的升级,已经彻底不能体现当前的开发过程,因此我再专门写一篇新的开发入门指南给有兴趣的你们参考。git

此次平台升级的具体开始时间我不得而知,可是若是你如今继续访问 https://dev.botframework.com/ ,你将会看到一个明确的提示,要求将早先建立好的Bot在2018年3月31日以前迁移到新的Azure Bot Service:github

若是你此时点击了“Create a bot”按钮的话,你也将被要求经过Azure Portal来操做:web

这将意味着,如今要进行机器人的开发,你必须首先拥有一个Azure的订阅,不论是试用版的,仍是正式版的。本文将假定你已经拥有这些条件。浏览器

值得注意的是,目前Azure的国内版尚未Bot Service的功能。bash

三种不一样类型的Bot

你能够在Azure Portal中搜索Bot Service,或者快速经过 这个地址 定位到目前支持的三种Bot Service类型,以下图所示:app

它们分别的使用场景以下编辑器

  1. Web App Bot。这种类型将在Azure中建立一个App Service来运行你的Bot,而且经过模板和自动化的配置极大地简化你的开发过程。
  2. Function Bot。这种类型将在Azure中建立一个Azure Function App来运行你的Bot,一样也是会有模板和自动化配置来简化开发,它与Web App Bot的区别在于,它的计费是按照具体的使用次数,而不是虚拟机的启用时间——事实上,这也正是Azure Function App和web App的本质区别。我我的以为,这种形式应该是更加符合机器人的特色的——它是按需调用的,并不见得要一直运行在后台。
  3. Bot Channels Registration。这种类型是支持你将Bot应用部署到你本身选择的其余位置(多是你的数据中心,也能够是其余的云平台),而后经过Azure来作Channel的注册和对接。若是你看过我上一篇文章,你应该会对Bot,Bot Framework,Channel有一些概念,若是还不太明白,我下面会继续作一些解释。

在开发阶段,不论是上述哪种类型的Bot,咱们均可以选择“免费”的价格进行开发和调试(普通讯道无限量消息,高级信道每个月10000次消息调用)。"免费”的服务是没有SLA保障的,但对于开发阶段来讲已经足够了。工具

三种常见的Azure 机器人服务方案

虽然咱们知道建立Bot并不难,本文后半部分也将再次以一个实例来介绍如何开发和测试基于Azure Bot Service的机器人。但在此以前,我仍是摘录三种常见的Azure机器人服务方案给你们参考,了解这些业界流行的作法和流程,可能会对你后续开发有借鉴意义。测试

商务聊天机器人

Azure 机器人服务和语言理解服务结合可以使开发人员可以建立针对各类场景的对话接口,如银行、旅游和娱乐。例如,酒店礼宾员可使用机器人加强传统的电子邮件和电话呼叫交互,方法是经过 Azure Active Directory 验证客户,并使用认知服务更好地根据实际情景利用文字和语音处理客户请求。能够添加语音识别服务来支持语音命令。ui

信息聊天机器人

此信息机器人可回答知识集中定义的问题或使用认知服务 QnA Maker 回答常见问题,以及使用 Azure 搜索回答更加开放的问题。

企业效率聊天机器人

Azure 机器人服务可轻松与语言理解结合以生成强大的企业效率机器人,让组织能够经过集成外部系统(如 Office 365 日历、Dynamics CRM 中存储的客户事例等)来简化常见工做活动。

Function Bot 开发和调试

下面我将以一个实例来演示如何开发和调试Function Bot。在下图的向导中,你须要指定一个惟一的名称,而且选择存储位置,订价层(我选择F0,是指免费的订价),宿主计划我选择的是“消耗计划”指的是按调用次数付费,Application insights选择“打开”以便后期能够经过一个仪表盘来看到机器人被调用的统计数据。

你已经看到了,Azure Bot Service默认提供了两种语言(C#和Node.js)的五种模板。我先以Basic为例建立一个应用。建立成功后,请在下面的界面中点击“Test in Web Chat”来进行测试。

在线修改代码而且进行测试

这就是Basic模板默认提供的功能,它就像是一个回声筒同样,将你发送过去的话再返回过来。若是你以为这样太无聊了,你固然能够修改代码让它变得有趣一些。请点击“机器人管理”中的“内部版本”这个菜单。

点击“在Azure Functions中打开此机器人”连接,在接下来的界面中,找到EchoDialog.csx这个文件,按照下面红色框示意修改代码

点击“保存”按钮,而后回到此前的"Test in Web Chat”页面,再次输入你的消息,观察其返回的内容,如今在回复消息中多了一个时间戳了。

本地修改机器人代码并实现持续整合

以上演示了如何在线修改代码并进行测试的方法。只要你愿意,你随时能够将代码下载到本地,而后使用你喜欢的编辑器进行本地开发,最后提交给Azure Bot Service。请在下图中点击“下载zip文件”连接。

你须要使用Visual Studio 2017打开这个解决方案文件

将上面这一行代码稍做修改,例如:await context.PostAsync($"{this.count++}: You said {message.Text} at {DateTime.Now},Modify by Visual Studio");

接下来,咱们要将本地这个目录进行git配置,以便后续能够跟Azure Bot Service 进行持续整合(经过git的代码提交,自动替换Azure Bot Serivce代码并触发编译,更新Bot应用)。请确保你的本地计算机上面安装了git工具。

以上经过git init命令初始化当前目录的git仓库。而后经过git add .命令和git commit -m命令提交本地更新。接下来咱们配置Bot Service以便它能使用本地git仓库进行持续整合。

请点击上图的“全部应用服务设置”菜单,而且接下来的“部署选项”中选择“本地Git存储库”选项

点击“保存”按钮后,设置“部署凭据”。请牢记这个用户名和密码,而且不要泄露给其余人。

在“概述”页面中,此时会多出来一个Git的克隆Url,以下图所示

请将这个地址复制下来,接下来回到git bash的窗口。经过git remote add origin 你的url 命令添加远程存储库绑定,而且经过git push origin master命令来完成代码推送。

推送成功后稍等片刻,再次回到Azure Bot Service的“Test in Web Chat”菜单,你会发现刚才咱们在Visual Studio中进行的代码修改已经起了做用,以下图所示。

使用Bot Framework Emulator进行调试

若是你想进行更加细节的调试,我推荐你下载和安装 Bot Framework Emulator。经过它来进行调试的好处是能够清晰地看到消息发送和接收的细节,以下图所示

在你的业务应用中整合这个机器人

上面咱们演示了如何开发、测试和调试机器人,默认状况下,Azure Bot Service会将这个机器人链接到一个Web Chat的信道(Channel),这样的话,咱们既能够经过以前屡次演示的“Test in web chat”界面进行使用,但也能够将这个界面整合到本身的业务应用中来,为此咱们须要获取机器人嵌入代码,以下图所示

你能够配置多个站点,而且为每一个站点都生成一个单独的密钥以进行区分,而后点击“复制”按钮,实际上你会获得一串HTML代码,里面是一个iframe。请注意用你的密钥替换掉代码中的“使用此处的密钥”,请将代码保存为一个HTML文件,以下图所示

请注意,我这里添加了一个Style的设置,这是为了让它在浏览器中看起来更加美观一些。接下来你能够在任意浏览器中打开这个本地网页,输入消息后你会获得跟此前一致的使用体验。

将机器人链接到Microsoft Teams

既然这篇文章讲的是“Office 365 机器人(Bot)开发入门”,天然要提到如何跟Office 365的结合。这个话题有两层含义,首先在Bot Service中能够经过Microsoft Graph调用Office 365的服务来完成一些工做,其次是咱们能够将机器人链接到Office 365的组件中来,目前支持Microsoft Teams和Skype for Business两个信道,以下图所示

添加到Microsoft Teams相对容易一些,你只须要点击上图中的Microsoft Teams图标,而且接受协议,在下图中点击“完成”便可。

回到信道主界面,点击“Microsoft Teams”的连接,便可为本身的Microsoft Teams客户端添加当前这个机器人。

若是不出意外的话,你的联系人中会出现一个机器人,你能够像跟同事聊天同样与它进行互动了。

若是你的同事也须要使用这个机器人,在你没有将这个应用提交给微软官方的市场以前,他们须要经过机器人的编号进行搜索,以下图所示

添加联系人后,后续的聊天形式是同样的

关于如何将你开发的这个机器人提交到微软的官方市场,请参考 https://docs.microsoft.com/zh-cn/microsoftteams/platform/publishing/apps-publish 的说明。

将机器人链接到Skype for Business

与Microsoft Teams相比,将机器人链接到Skype for Business的体验正好相反——它的安装配置过程比较复杂(须要Office 365管理员权限),但一旦配置完成,则整个公司的用户都能直接搜索到这个机器人,而无需发布到微软的应用市场。

添加Skype for Business这个信道只是第一步,接下来要根据一个文档的说明,使用Office 365管理员身份以及几个PowerShell的命令来完成这个机器人的注册和配置。一般的指令形式以下图所示

在个人Office 365测试环境中,我执行的命令以下图所示(请注意,第二个命令的执行可能须要几分钟时间)

完成上面的配置后,任何一个用户,均可以直接在Skype for Business中搜索中这个机器人而且跟它聊天了。

请注意,我前面已经提到了,由于当前这个机器人是托管在免费的模式下,因此可能你在测试过程当中偶尔会遇到一些错误。

结语

新年新气象,这篇文章给你们完整地介绍了全新的Azure Bot Service提供的服务。咱们能够利用它快速地完成机器人的开发、测试,根据本身的须要将其链接到包括Microsoft Teams和Skype for Business在内的多个信道中去,真正实现“一次编写、到处运行”,我相信这种平台级别的创新,结合Office 365的庞大用户群体,以及海量的有价值的信息,使得机器人(Bot)再也不是一个实验室中的花骨朵,而是咱们现实工做和生活中能够触手可及的应用。

顺便预告一下,第三届Office 365开发者大会将于3月17-18日在北京将隆重举办,我将作关于机器人开发的主题演讲。这一届大会规模比以前两届大,精彩内容除了Office 365, 还有Windows 10的最新开发场景。欢迎踊跃报名,但愿现场能够看到你。活动详情和报名请访问 https://aka.ms/M365DevDays, 你也能够经过扫描如下二维码进行访问

相关文章
相关标签/搜索