Skip to main content

使用Azure Bot Service开发聊天机器人

分类:  Azure机器人 标签:  #Azure Bot Framework SDK #Azure Bot Service #机器人 发布于: 2023-08-07 22:36:15

聊天机器人在电商时代有很多的应用,各种自动客服,订单系统,电话语音等。它适用各种重复的,枯燥的工作。在和人的交互过程中,聊天机器人可以通过语音,文字,图片,甚至是视频完成交互工作。同时可以接入自然语言处理模型,问答模型等等各种基于AI的组件,使得聊天机器人更像人类,更好,更自然的完成交互的工作。

要设计一个聊天机器人的基础框架是繁复的,需要考虑很多场景,例如多场景对话,连续对话,跳跃性对话等都需要认真的考虑,技术上也受制各种技术集成,拔高了难度。推荐大家可以使用微软推出的Azure Bot Service来简化聊天机器的开发,节省成本,何乐而不为。

我们先看一下Azure Bot Service的介绍。

Azure Bot Service的介绍

Azure Bot由一系列的概念和工具组成,包括微软对于聊天机器人大部分的场景抽象以及针对这些抽象设计的工具。
微软提供的工具根据使用的人群和场景不同,主要分为:

  • Azure Bot Service and Azure Bot Framework SDK
  • Power Virutal Agent

这其中Power Virutal AgentO365的产品线,而且集成在Power平台上,更多的面向终端用户,我们只讨论Azure Bot ServiceAzure Bot Framework SDK

微软把聊天的业务场景分成很多个部分:用户和聊天机器人交互的工具,例如微信,运行在web上的网页聊天工具,SkypeQQteams等称之为Channel, 每个Channel支持的交互方式不完全相同,例如Teams支持电话,微信支持视频通话等等。用于连接渠道您开发的BotChannel之间的转换和适配的中间件称之为Adapter, 最后才是你的聊天机器人,总结一下,微软在设计聊天机器人时,设计了三个物理上的概念:

  • Channel: 代表性的系统或者工具有微信,QQTeamsFacebookWeb Chat等等,用户可以通过这些Channel连接到您的机器人系统上,当然你也可以直接通过机器人开发的rest api直接向它发送消息。
  • Adapter: 适配器的作用是将通过渠道传送过来的消息,进行转换和包装,统一格式处理。同时在Adapter这一层还设计了中间件的理念,利用Adaptermiddlewware形成一个处理消息的pipeline, 在pipeline的最末端就是Bot的处理函数了。
  • Bot: 最后就是我们开发的聊天机器人了,由于已经由Adapter统一了格式,在bot只需要按照统一的标准处理就可以了。

除了上述三个物理概念之外,为了在逻辑业务上更好的处理聊天的场景,微软还设计了如下的概念:

  • Conversation: 会话,每一个用户开始通过Channel了解聊天机器人时,这个用户以及它使用的Channel和对话的Bot实例就形成了一个会话Conversation, 只要通过去Channel的用户ID不变,Channel不变,Bot不变,那么这个会话就一直存在(当然技术上要持久化)
  • Turn: 作业(turn很不好翻译,本来想翻译为回合,但是计算机词典都翻译为作业), 这个主要是指聊天的场景基本上用户发送一句,机器人回复一句或者多句,这个就规定为一个turn
  • Activity: 用户或者channel和机器人交互的消息经过Adapter打包,打包之后的对象就是Activity, 也就是说和机器人之间交互的消息承载都是由Activity完成。预定义了有多种类型的Activity, 例如有MessageActivity, 有ConversationUpdateActivity, 有MemberAddActivity等等。
  • Turn Context: 每次用户或者Channel和机器人之间的交互都需要一个上下文用于传递环境,Turn Context就是抽象出来的对象,由Adapter生成并传递给Bot

Hello, Bot

为了快速的体验一下到底什么是Azure Bot, 可以使用如下的步骤快速的测试一下,开始之前我们先需要准备几个工具:

  1. Bot Framework Emulator: Channel的模拟器,您可以通过如下的地址下载:https://github.com/Microsoft/BotFramework-Emulator#readme
  2. Bot Framework Visual Studio模板: 从这里下载:https://marketplace.visualstudio.com/items?itemName=BotBuilder.botbuilderv4
  3. Visual Studio: 可以从这里下载,个人用社区版就很好用了:https://visualstudio.microsoft.com/

在安装好Visual studioBot Framework Visual Studio模板之后,启动Visual studio, 创建新项目时选择Echo Bot如下图:


按照步骤创建完成之后,运行该模板生成的应用,自动打开浏览器,并如下提示:


拷贝上述红框处的地址, 启动Bot Framework Emulator, 如下图输入刚刚保存的连接,并Connect:


连接上后,可以开始简单的测试一下你的第一个聊天机器人了:


Azure Bot ServiceAzure Bot Framework SDK的关系

Azure Bot Framework SDK用于开发自己的BotAzure Bot ServiceAzure提供的云服务,主要用于帮助你的Bot适配不同的Channel,作为一个统一入口,并且还会在Channel和你的Adapter以及Bot之间relay消息。

如果你的渠道单一,可以不需要创建Azure Bot ServiceBot完全可以运行在你自己的环境里, 就像上面的那个Hello Bot,就是运行在本地。

今天就学习到这里。明天继续