如何使用Azure Bot Services创建聊天机器人的分步说明
译者 | 李睿
审校 | 孙淑娟
信使、网络服务和其他软件都离不开机器人(bot)。而在软件开发和应用中,机器人是一种应用程序,旨在自动执行(或根据预设脚本执行)响应用户请求创建的操作。在本文中, NIX United公司的.NET开发人员Daniil Mikhov介绍了使用微软Azure Bot Services创建聊天机器人的一个例子。本文将对想要使用该服务开发聊天机器人的开发人员有所帮助。
为什么使用Azure Bot Services?
在Azure Bot Services上开发聊天机器人的优势在于微软公司对其产品的高度支持。该公司的专家积极与技术社区沟通,并迅速识别和修复服务中的漏洞。此外,微软公司提供了创建自定义JSON文件的能力,以配合一些信使的API,让开发人员在创建聊天机器人时有很多可能性。
记住Azure Bot Services的其他优点也很重要:
- Azure Bot Services允许开发人员使用开源SDK工具(软件开发工具包)来创建、测试和部署聊天机器人。
- 与认知服务的集成是指在工作中使用机器学习工具来解决典型任务的服务。认知服务确保了聊天机器人和用户之间更好的交互过程。
- 多平台是指将聊天机器人连接到多个通道而无需更改原始代码的能力。
- 大量的开源示例以促进开发过程和快速启动(GitHub上有很多现成的代码示例)。
开发人员可以通过添加新功能来扩展Azure平台上的聊天机器人基础设施。例如,可以添加更多通道并使用每个通道进行测试。可以使用Cosmos DB服务来存储对话状态和用户输入的信息。要训练聊天机器人,可以添加语言理解 (LUIS)。它使用机器学习算法来更好地与用户交流。然而,LUIS并不是免费的,并且不是每个客户都想分配额外的资金。
Azure Bot Services中的聊天机器人剖析
在Azure上创建的聊天机器人的功能结构可以表示为:
可以在右侧看到连接到聊天机器人的可能通道列表。这个列表会随着新的平台不断更新。其底部是Azure平台可以使用的Microsoft认知服务。这些服务允许通过语音请求、面部表情、手势等与聊天机器人交流。
Bot Builder SDK用于在Azure上开发聊天机器人。该产品处于公共领域,其主要优势是开发人员的持续支持。在GitHub上的一个单独的分支中,可以获得关于该服务的最新信息,或者向其开发人员提问。
创建聊天机器人
在编写代码之前,分析一下在Azure Bot Service上创建聊天机器人之前应该考虑的细微差别:
- 破坏功能的更新。微软公司正在不断更新其产品。新的更新经常会破坏以前可以工作的部分代码。所以一定要了解新的Bot Builder SDK版本的补丁列表,而用来开发聊天机器人的其他手册可能会变得无关紧要。
- 不明显的解决方案。在使用Bot Builder SDK时,应该始终对实验持开放态度,并愿意以不同于以往的方式进行操作。
- 多功能性。同一个聊天机器人可以上传到不同的频道(Telegram、Skype、Slack等等),而不需要更改源代码。在开发聊天机器人时应该记住,每个平台都有细微差别,这需要开发人员在创建应用程序的工作逻辑时采用不同的方法。
(1)聊天机器人能正确理解人们的问题吗?
与聊天机器人的交流是通过用户界面进行的。用户界面允许开发人员采用聊天机器人能理解的语言与它交流。为此,微软Azure使用了一个对话框系统,它遵循特定的层次结构:
在这里可以看到与聊天机器人建立对话的三种基本方法:
- 提示——聊天机器人通过提示和回答与用户交互。例如,以数字提示的形式给出聊天机器人信息。Prompt检查用户是否正确地回答了提示。如果成功,与聊天机器人的对话将继续进行。如果从用户那里收到不正确的回答,他将被提示输入有效的数据。
- 瀑布——瀑布是一种通过一系列连续任务/问题从用户那里收集信息的方法。瀑布对话框的每个步骤都是作为异步函数实现的。在每个阶段,聊天机器人要求用户输入数据,等待响应,然后将结果传递到下一步。第一个函数的结果作为参数传递给下一个函数,以此类推,直到传递完整个问题循环。
- 组件——组件是将一个庞大的对话框分解成更小的、易于管理的部分的一种方法。组件允许开发人员创建一个可重用的对话框,并在以后的各种独立场景中使用它。例如,可以使用它来创建一个对话框,该对话框将依次向用户询问街道名称/地址/邮政编码。
在最下面的一行,可以看到为聊天机器人创建自定义请求的允许方法:
- 文本查询(文本)
- 号码查询(数量)
- 日期/时间请求(日期时间)
- 确认请求(确认)
- 选择请求(选择)
- 附件要求(附件)
在本质上,查询是分阶段的对话框:在第一个阶段,聊天机器人请求输入数据;在第二个阶段,它向用户返回有效值,或者在收到无效值时重新启动数据查询循环。
(2)控制器和模板
以下看看Daniil Mikhov创建的“稍后提醒我”聊天聊天机器人示例中的代码,它的主要任务是提醒他将来需要采取的任何行动。
为了创建聊天机器人,Mikhov使用了Visual Studio提供的Empty Template,它包括几种类型的控制器:BotController和NotifyController。
BotController为聊天机器人接收消息并将它们传递给聊天机器人框架。聊天机器人还包含几个部署模板,用于更轻松地将应用程序部署到Azure平台。
Notify Controller确定何时向用户发送消息。将在后面更详细地讨论这个问题。
(3)启动功能和填充ToDoDialog选项卡
转到Startup.cs选项卡,查看它的内容。在这里可以看到注册的错误处理程序AdapterWithErrorHandler。如果错误发生在程序中,应用程序对错误的反应是必要的。注意注册ConversationState——使用它来让聊天机器人了解正在与哪个用户交流,以及在对话的哪个阶段。
以下看看ToDoDialog.cs选项卡的内容。Mikhov声明了waterfallSteps,这是瀑布对话框的一组步骤,已经在上面提到过了。在waterfallSteps中,指定在每个步骤中使用哪些异步函数来构建用户和聊天机器人之间的对话。
以下可以看到聊天机器人将使用什么类型的输入提示。这里的内容是相当标准的:聊天机器人会问人们一些关于事件的问题,然后提供安排提醒。
现在运行聊天机器人,并使用Bot Framework Emulator界面测试它的操作。
(4)在聊天机器人框架模拟器中首次启动和测试
当运行这个应用程序时,会出现一个链接到聊天机器人将等待用户消息的URL。
在开始测试之前,在聊天机器人框架模拟器中指定这个链接:
在第一个通信步骤中,聊天机器人要求用户输入需要提醒的事件名称。为此,调用以下代码:
现在,当调用聊天机器人时,它将返回以下文本:请输入事件描述。在声明想要进行提醒的事件(例如买牛奶)后,调用第二步的代码,在这里,聊天机器人将提供三个提醒时间选项中的一个:
注意stepContext的使用。它保存关于对话框的所有信息,记录中间值。为了实现可能的提醒时间列表,使用了ChoicePrompt。这个方法将为用户提供三个选项和一个可能的提醒时间(2分钟,5分钟,或第二天的同一时间)。本来可以有更多的选择,但只选了三个。
采用选择来表示每个新的选择时间,可以得到:
在聊天机器人框架模拟器中,这段代码将像这样呈现:
可以使用Parse对结果进行解析。在此提醒的是,解析是一个自动收集数据并对其进行结构化的过程。然后聊天机器人会询问用户是否确定所选的提醒时间,使用ConfirmPrompt来确认协议:
从视觉上看,这个方法如下所示:
最后一步是从stepContext中取出之前填写的信息,并生成一个SavedNotificationModel,必须向其添加一个conversationReference。如果没有它,聊天机器人将无法恢复与用户的对话,也无法确定是哪个用户专门解决了这个问题。
Mikhov使用字典方法作为这些事件的临时存储库,多亏采用它,聊天机器人将其唯一的instanceId分配给每个特定的对话框:
这将结束与聊天机器人的对话。可以向用户显示文本,指示对话框的结束并创建相应的提醒请求:“谢谢。通知已成功保存”。
(5)聊天机器人如何穿越时间
为了及时定位聊天机器人,Mikhov创建了notiffiedcontroller方法NotifyTimeCheck()。这种方法允许系统地轮询应用程序,如果某个事件即将发生,聊天机器人将从字典中检索该事件并向用户发送通知。
为了获得通知,将调用BotAdapter的ContinueConversationAsync()方法,并将ConversationReference传递给它。ContinueConversationAsync()的第一个参数必须始终是聊天机器人服务的appId(应用ID),否则,它将无法工作。
此外,还需要提醒聊天机器人,当某个时间到达时,必须将事件提醒给特定的用户。开发人员可以使用Azure Function(BotTimerFunction),它将由一个时间触发器(TimerTrigger)触发。
每隔一分钟,函数将向这个端点发送一个请求,并开始检查指定的事件。如果它到达了正确的时间框架,聊天机器人将通知用户预定的事件即将发生。
如今,WhatsApp、Facebook Messenger、Telegram和其他通信工具不仅是交流平台,也是业务平台。聊天机器人帮助企业有效地在线销售和推广商品和服务。实现日常流程的自动化,及时向客户提供必要的产品信息,接收和处理请求——所有这些适当配置的聊天机器人的功能将有助于将用户转化为客户。因此,作为开发人员,应该记住这个工具现在是多么流行,能够创建这样的应用程序并因此成为受欢迎的专家是多么酷的事。
原文标题:How to Create a Chatbot Using Azure Bot Service: Step-by-Step Instruction,作者:Daniil Mikhov
以上是如何使用Azure Bot Services创建聊天机器人的分步说明的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

这个AI辅助编程工具在这个AI迅速发展的阶段,挖掘出了一大批好用的AI辅助编程工具。AI辅助编程工具能够提高开发效率、改善代码质量、降低bug率,是现代软件开发过程中的重要助手。今天大姚给大家分享4款AI辅助编程工具(并且都支持C#语言),希望对大家有所帮助。https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot是一款AI编码助手,可帮助你更快、更省力地编写代码,从而将更多精力集中在问题解决和协作上。Git

在工业自动化技术领域,最近有两个热点很难被忽视:人工智能(AI)和英伟达(Nvidia)。不要改变原内容的意思,微调内容,重写内容,不要续写:“不仅如此,这两者密切相关,因为英伟达在不仅仅局限于其最开始的图形处理单元(GPU),正在将其GPU技术扩展到数字孪生领域,同时紧密连接着新兴的AI技术。”最近,英伟达与众多工业企业达成了合作,包括领先的工业自动化企业,如Aveva、罗克韦尔自动化、西门子和施耐德电气,以及泰瑞达机器人及其MiR和优傲机器人公司。Recently,Nvidiahascoll

机器之能报道编辑:吴昕国内版的人形机器人+大模型组队,首次完成叠衣服这类复杂柔性材料的操作任务。随着融合了OpenAI多模态大模型的Figure01揭开神秘面纱,国内同行的相关进展一直备受关注。就在昨天,国内"人形机器人第一股"优必选发布了人形机器人WalkerS深入融合百度文心大模型后的首个Demo,展示了一些有趣的新功能。现在,得到百度文心大模型能力加持的WalkerS是这个样子的。和Figure01一样,WalkerS没有走动,而是站在桌子后面完成一系列任务。它可以听从人类的命令,折叠衣物

这周,由OpenAI、微软、贝佐斯和英伟达投资的机器人公司FigureAI宣布获得接近7亿美元的融资,计划在未来一年内研发出可独立行走的人形机器人。而特斯拉的擎天柱也屡屡传出好消息。没人怀疑,今年会是人形机器人爆发的一年。一家位于加拿大的机器人公司SanctuaryAI最近发布了一款全新的人形机器人Phoenix。官方号称它能以和人类一样的速率自主完成很多工作。世界上第一台能以人类速度自主完成任务的机器人Pheonix可以轻轻地抓取、移动并优雅地将每个对象放置在它的左右两侧。它能够自主识别物体的

2022年3月3日,距世界首个AI程序员Devin诞生不足一个月,普林斯顿大学的NLP团队开发了一个开源AI程序员SWE-agent。它利用GPT-4模型在GitHub存储库中自动解决问题。SWE-agent在SWE-bench测试集上的表现与Devin相似,平均耗时93秒,解决了12.29%的问题。SWE-agent通过与专用终端交互,可以打开、搜索文件内容,使用自动语法检查、编辑特定行,以及编写和执行测试。(注:以上内容为原内容微调,但保留了原文中的关键信息,未超过指定字数限制。)SWE-A

Go语言开发移动应用程序教程随着移动应用市场的不断蓬勃发展,越来越多的开发者开始探索如何利用Go语言开发移动应用程序。作为一种简洁高效的编程语言,Go语言在移动应用开发中也展现出了强大的潜力。本文将详细介绍如何利用Go语言开发移动应用程序,并附上具体的代码示例,帮助读者快速入门并开始开发自己的移动应用。一、准备工作在开始之前,我们需要准备好开发环境和工具。首

以下10款类人机器人正在塑造我们的未来:1、ASIMO:ASIMO由Honda开发,是最知名的人形机器人之一。ASIMO高4英尺,重119磅,配备先进的传感器和人工智能功能,使其能够在复杂的环境中导航并与人类互动。ASIMO的多功能性使其适用于各种任务,从帮助残疾人到在活动中进行演示。2、Pepper:由SoftbankRobotics创建,Pepper旨在成为人类的社交伴侣。凭借其富有表现力的面孔和识别情绪的能力,Pepper可以参与对话、在零售环境中提供帮助,甚至提供教育支持。Pepper的

近几年最受消费者欢迎的智能家电,扫拖机器人可谓是其中之一。它所带来的操作便利性,甚至是无需操作,让懒人们释放了双手,让消费者能够从日常的家务中「解放」出来,也能拿更多的时间花在自己喜欢的事情上,变相提高了生活品质。借着这股热潮,市面上几乎所有的家电产品品牌都在做自己的扫拖机器人,一时间使得整个扫拖机器人市场热闹非凡。但市场的快速拓张必然会带来一个隐患:很多厂商会采用机海战术的方式快速占领更多的市场份额,从而导致很多新品并没有什么升级点,说它是“套娃”机型也不为过。不过,并不是所有的扫拖机器人都是
