语音机器人对话管理方法有哪些?语音机器人测试自动化实践的结果是什么?
作者:羽翼 | 发布时间:2023-05-19 09:17 | 阅读量:0语音机器人对话管理方法有哪些?语音机器人测试自动化实践的结果是什么?语音机器人集成了语音识别、语义理解、知识图谱、深度学习等多项智能交互技术,能准确理解用户的意图或提问,再根据丰富的内容和海量知识图谱,给予用户满意的回答。下面就跟企呱呱一起来看看语音机器人对话管理方法有哪些?语音机器人测试自动化实践的结果是什么?
【专业团队解答 价格透明 咨询电话:15807558155】

什么是语音机器人
语音机器人集成了语音识别、语义理解、知识图谱、深度学习等多项智能交互技术,能准确理解用户的意图或提问,再根据丰富的内容和海量知识图谱,给予用户满意的回答。深度应用 AI 语音语义顶尖算法的智能机器人,应对海量场景进行高质量智能呼叫,实现新客增长、留存激活、流失挽回、通知调研、问题咨询等广泛业务目标。
语音机器人系统能轻松对接多家厂商,支持 SaaS 集成、PaaS 接入,适应各种业务架构,各组件模块化能快速搭建新能力,适应复杂业务场景。强大的开放平台助力开发者深度定制多业务场景的呼叫规则、创建数据分析模型,方便开发者快速拥有呼叫和数据分析能力。

业务实现
核心模块交互
1. 通讯模块
能力由网易云信提供,通过 SIP 和 RTP 协议,实现进行各种信令和语音流的传输,即语音机器人系统中的 nim 服务
2. AI 模块(NLP)
5. DM(对话管理)
对话流程:基于呼叫回调事件驱动流程执行
通话连接回调事件:ASR 设置和录音设置、启动流程找到执行的根节点
用户开始说话事件:清除当前节点无全局应答标记、判断是否是打断和是否可以打断、执行打断操作
ASR 回调事件:ASR 节点执行,分支匹配到具体节点(关键词+nlp)->记录用户 ASR 和匹配信息,将关键信息缓存
挂断事件回调:拿到上下文信息、资源释放
其他:录音播放完成回调事件、全局超时事件等待
对话状态
对话流程中,记录执行节点的执行状态信息进行用户流程流转的判断,包含:当前通话执行状态、节点执行次数、脚本播放状态、脚本播放事件、设置节点无应答标记等。

目前现状
语音机器人核心功能在于对话过程的流转,对话管理测试目前的质量挑战:
执行验证大量耗时:对话管理的测试验证依赖任务运行中的实时通话,过程长且需要多次通话,同时 ASR 转译效果亦会对测试结果造成干扰
重复性工作量大:”牵一发而动全身“,小的话术需求变更会引来整体对话管理的回归验证
bot 话术执行的覆盖率难以保障:手动方式进行 Bot 话术的全组合遍历几乎是一件不可能的事情
版本高频迭代压力:敏捷开发交付模式下的需求迭代,急需构建自动化持续交付 pipeline

破解之道
测试的自动化是解决目前质挑战的关键点,要实现语音机器人对话管理的测试自动化,难点在于:
bot话术的用户对话流转无法通过 Http 接口进行模拟,且需要解决通讯模块(云信 nim)的依赖。
bot 话术场景节点间、节点与通讯模块间交互关系如何维护
节点间、场景间执行调度和规则生成,如何保障每个 bot 话术的通用性
基于这些思考,我们不妨把语音机器人中的场景画布当做一张地图,每一通语音通话的完成就如同从一个地点到达另一个地点,有很多途经点,每个途经点就像画布的每个节点,节点的配置决定每个途经点可能到达的下一个地方或可以做的事,可快速直达,亦可玩玩停停,而我们的自动化就可以对这些节点进行对象抽取,由点及线(实例化),生成一个个可执行的实例,即每一通电话的预置回调模拟规则,再由线到面,通过通讯模块的 mock 服务运行实例,将这张画布地图自动的”跑“起来。
抽取:反画布节点桩模块对象
语音机器人系统 bot 画布中的每一个节点的设置,在实际对话管理模块中运行时,可以理解为云信 nim 通讯模块交互的操作桩模块,进而我们可以把节点桩模块抽取的对象属性分为四部分:
基础属性:带变量的 TTS 合成话术内容(保障语音机器人系统进行 nim 请求时节点的身份信息)、放音时长、延迟时长
决策属性:决定当前节点的下一级流转,主要包含预期分支属性和 ASR 期望回调结果属性;不同的节点预期分支,可以有不同的分支命中方式,包括:关键词命中、NLP 语句命中、采集成功命中(直接赋值、自定义实体、默认实体),同时可以选择性的命中知识问答 QA,在此基础上根据不同的命中方式生成我们期望的 ASR 回调信息
场景属性:无场景属性或者场景流转信息,叶子节点的专有属性,决定了场景间的切换
行为属性:包含打断、无应答、挂机等,其中是否挂机回调作为实例执行完结的标志属性
通过对测试场景 bot 话术的反向抽取,每个场景画布变成了一个个带有云信 nim 操作交互信息的基础桩模块。
实例化:桩模块实例化策略生成
节点桩模块抽取完成后,接下来将这些点连接成线创建调度规则,即:执行实例生成
测试 bot 话术的一个场景通常会包含多个节点,我们可以依据场景画布的 JSON 信息生成对应的场景多叉树,执行实例集的生成即:多叉树的路径遍历。主要实例化生成策略如下:
话术全流程遍历:场景的每个节点的每个意图分支均进行组合遍历, 每条遍历路径对应一个执行实例,后续也可根据请求参数在执行实例集中随机选取指定条数的执行实例
更多对话轮次:场景中话术流转层级(对话轮次)更多的一个或多个进行遍历,即深度优先
指定节点全分支遍历:只对指定的画布节点做全意图分支遍历,其余节点随机选择一个意图分支遍历
随机 N 分支路径遍历:相对于全路径,每个画布节点只需随机选取 N 个意图分支做遍历,N 更小值为 1,当 N 超过节点意图分支分支数时,亦取 1
对于 Bot 话术中多个场景画布,则根据叶子节点的场景属性中对应的场景信息做场景间的笛卡尔积遍历,生成可执行实例集
运行:nim-mock 服务
语音机器人系统和自动化的 nim-mock 服务间流转流程:
nim-mock 作为与语音机器人系统交互的回调 mock 服务,主要在 DM 模块(对话管理)运行时为 nim 请求提供响铃回调、接通回调、播音结束回调、用户开始说话回调、ASR 回调、挂机回调等,保障用户的正常通话和语音交互,而提供什么样的回调信息(尤其 ASR 回调)、何时提供则依赖于实例生成服务(instance-produce)中的具体执行实例信息。
整体实现
主要包含两个服务:实例生成服务和云信 Mock 服务,前置自动化脚本即语音机器人系统提供的 CRUD 类接口
话术生成:主要包含 Bot 话术创建和反话术(画布)节点桩模块对象的抽取两部分
bot 话术的创建:通过前置自动化接口脚本或 Web 页面操作方式创建测试场景所需的 bot 话术
反话术节点桩模块对象抽取:创建后通过调用自动化的实例生成服务(instance-produce),对创建的测试话术场景/节点进行反画布的对象抽取
实例化:基于节点模块对象的抽取,根据遍历策略算法生成可执行的实例集进行入库
执行任务:导入模拟用户开启任务,自动化开始执行
nim 请求:语音机器人系统根据隔离环境的配置请求到自动化的云信 mock 服务(nim-mock)
请求执行实例:根据 nim 请求测试话术提取实例生成服务(instance-produce)中的执行实例集
返回实例模拟信息:按照线程池配置,返回每个执行实例中云信 mock 服务(nim-mock)所需回调信息
生成 nim 回调:依据任务运行中多轮话术不同执行阶段的不同请求生成相对应的 nim 回调
任务结果查询:http 接口方式获取语音机器人系统任务执行结果
结果校验:对 bot 话术的每个执行实例流转结果进行校验、整理
需求 CI 整合
将以上 nim-mock 和 instance-produce 服务化后,结合 GoAPI(网易接口自动化测试平台)和 Overmind(网易效能平台)实现需求 CI
成果
对话流转测试执行覆盖率显著提高:有效解决手工单点覆盖不全的问题,话术场景核心对话流转覆盖可达 80% 以上,更加贴合实际用户真实的使用状况 敏捷交付模式下缩短测试交付周期:语音机器人对话管理需求平均缩短测试周期 1-2人/天 压测支持:为压测提供场景、数据及服务化能力支持