技术漫谈|IVR通用开发框架简说

news2024/10/1 4:26:04

IVR为Interactive Voice Response的缩写,意为交互式语音应答(系统)。它可以应答客户的呼叫,然后为呼叫者提供语音导航或自助服务,呼叫者可通过按键输入或使用语音命令进行选择。随后,IVR可通过呼叫路由将呼叫转移到座席或自助服务应用程序。在金融领域,IVR应用系统也被银行称之为电话银行系统。

千行百业都离不开客服系统,IVR作为客服系统中话务接入的门户,是构成客户体验感的服务排头兵。在金融领域,电话银行系统是银行与客户建立和保持沟通的重要渠道,自下而上支撑着远程银行的构建和正常运转。

开发一个兼济天下的IVR框架,善莫大焉

一个完整的IVR应用系统由IVR平台(下文简称平台)和IVR业务系统(下文简称业务系统或业务)组成。

市面上现有的、主流与非主流厂商基于软交换技术推出的IVR平台可谓琳琅满目。这些平台有共同的特点——和自身的开发工具强绑定,因此开发过程及成果都只能应用在自身的闭环系统上。虽然VXML号称是IVR的通用国际建议(此处注意:国际建议和标准不同),但是各家厂商大都也是遵循“有利则用,不利则弃”这一不成文的规则,形成了多如牛毛的VXML开发过程,没有办法做到业务和平台特性的完全解耦。

这就造成一个让人头疼的问题:开发人员必须要掌握每种IVR的开发细节才行。由于开发人员对各家平台的理解程度有高有低,这些平台所使用的开发工具又多多少少地埋着各种不尽如人意的“坑”,最终导致开发出来的成品稳定性、鲁棒性各不相同,造成上线质量参差不齐且客户的业务受制于IVR平台。

综上所述,开发一个可适用于所有平台、并且基于目前最常用开发语言的、具备“兼济天下”能力的IVR框架,具有非常重要的实际意义。

框架设计思想:专业的“人”干专业的事

框架设计围绕这样的思想展开:平台只干平台的事,业务逻辑交给WebAPP来做,平台和WebAPP的交互通过目前流行的REST接口或HTTP接口。IVR平台实现基本功能:

■ 1. 来电时接起电话,作为被叫和主叫建立通话链路,也可以作为主叫呼出电话和被叫链接通话链路;

■ 2. 播放语音,可以是TTS和预录好的语音文件;

■ 3. 搜集客户的按键或客户的语音(如果有集成ASR);

■ 4. 侦测通话链路的状态(比如客户挂机等等);

■ 5. 挂断电话(可以主动挂断电话);

■ 6. 链接CTI(非基本功能,可以在服务端实现);

■ 7. 转接会议电话;

■ 8. 链接外部系统接口。

把这些基本的功能串接在一起成为一个完整的IVR应用系统(电话银行系统),由应用服务来实现。

总体交互逻辑

图片

前文已经提到,一个完整的IVR应用系统分为IVR平台IVR业务系统两部分。

IVR平台根据具体产商不同而不同,其主要功能是接收客户来电,并在接收客户来电后搜集客户信息。执行具体的放音、按键搜集、语音识别、传真(现在很少使用)、菜单选择、转接、挂断话务层面的事情。如果平台支持IVVR则执行IVVR相关的功能,如播放视频。如果有类似UUI类的随路数据,则也由平台执行。其开发过程使用产商的开发工具,只做基本功能的开发及与平台的通讯开发。

IVR业务系统完成所有菜单匹配、流程处理、超时处理、错误判断、随路数据等等具体的业务过程,使用纯Java的开发。

其中业务系统作为服务端,IVR平台作为客户端,平台和业务系统之间采用Restful的通讯协议。

具体过程如下:

■ 1. 客户来电时,IVR平台搜集来电的基本信息,并向业务系统发起来电请求;

■ 2. 业务系统根据配置菜单来获取下一步操作,并把下一步要执行的动作返回给IVR平台,同时保留当前的业务流程上下文;

■ 3. IVR平台收到返回后执行响应的动作,并把操作的结果通过请求接口方式返回给业务系统;

■ 4. 业务系统收到请求后,根据请求结果结合当前的上下文判定后续动作,再次返回给平台;

■ 5. 重复步骤3和4。

详细交互过程

图片

IVR平台总体逻辑架构 

图片

基础通讯组件完成和业务系统的通讯,如果平台有现成的支持API则可以不用开发,如果没有就要根据产品平台提供的集成API来开发。

其过程如下图所示:

图片

此处多了两个服务:一是利用平台本身开发工具提供组件调用DLL(或JAVA 通讯API)的便利性来调用C语言的DLL;二是利用JAVA解释JSON报文的有利工具来封装和解释报文。

框架说明

框架由两个部分组成:菜单和业务流程。

菜单采用XML结构来描述,一者XML文档的结构很适合用于描述菜单,二者XML的遍历开发比较成熟,对开发人员要求不算太高。

菜单的结构如下:

图片

业务流程

所有的业务流程采用纯J2EE的服务方式开发,框架实现基本的功能,定制开发只实现具体的业务流程。主要包含:实现各类输入的属性、业务过程串接、后台交易的实现等。

业务开发步骤

■ 1. 流程开发的任务配置菜单文件;

■ 2. 开发所有输入项(比如输入开始日期、结束日期、币种等等);

■ 3. 开发业务流程,比如余额查询,首先输入卡号、然后输入密码、调交易、报读结果,最后回到上级菜单;

■ 4. 开发交易过程,配置交易提交接口、调交易、返回值封装等等,是开发的主要工作;

■ 5. 记录日志、埋点等运维及运营相关的功能。

所有业务流程都要从BusiBase类中派生出来。流程开发具体过程如下:

图片

通过上图可以看出,一个业务流程的完成,需要和平台有多次交互才可以实现,每次交互流程类的对象都结束了,都需要保存和恢复上下文,这是一个需要特别注意的地方。

接口说明

平台和业务系统之间通过接口实现,这个接口适合于所有的平台。接口的具体内容如下:

图片

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/983587.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决Vue3.0以上+Vite项目打包后低版本浏览器兼容性问题

文章目录 一、Vite在低版本浏览器中运行遇到的问题二、浏览器兼容性三、官方解决方案:使用vitejs/plugin-legacy插件1)、安装插件2)、在vite.config.js中配置 四、vitejs/plugin-legacy插件,在打包过程中做了什么 一、Vite在低版本浏览器中运行遇到的问题…

CVE-2023-3836:大华智慧园区综合管理平台任意文件上传漏洞复现

文章目录 CVE-2023-3836:大华智慧园区综合管理平台任意文件上传漏洞复现0x01 前言0x02 漏洞描述0x03 影响范围0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 CVE-2023-3836:大华智慧园区综合管理平台任意文件上传漏洞复现 0x01 前言 免责声…

python 文创产品商城推荐网上购物系统设计与实现vue

随着Internet的发展,人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化、网络化和电子化。网上销售,它将是直接市场营销的最新形式。本论文是以构建文创产品推荐系统为目标,使用 django制作,由前台用户购物、…

搭建vue3项目并git管理

搭建vue3项目 采用vue3的create-vue脚手架搭建项目,底层是vite,要求环境 node 16.0及以上(node -v检查node版本) 在文件夹右键->终端-> npm init vuelatest,输入项目名称,根据需要选择是否装包 src…

Nginx教程

Nginx教程 01-Nginx简介02-windows安装Nginx03-Nginx目录结构04-Linux安装Nginx05-linux下源码安装nginx06-linux下nginx配置07-在docker中安装nginx08-源码安装和yum安装的区别09-Nginx运行组和运行用户10-卸载nginx11-nginx的基本原理和架构12-nginx是如何处理请求的13-nginx…

ABB CMA120 3DDE300400面板

人机界面:ABB CMA120 3DDE300400 面板通常具有用户友好的人机界面,可用于监视和控制连接设备和系统的操作。 图形显示:该面板通常具有高分辨率的液晶显示屏,用于显示图形界面和实时数据,以便操作员更容易理解和管理工…

港陆证券:股票做t解套的方法和技巧?

做股票出资的人都知道,有时候会遇到股票价格跌落的状况,导致自己手中的股票市值缩水,丢失惨重。而股票做T则是一种解套的办法之一。本文将从多个角度剖析股票做T解套的办法和技巧。 一、什么是股票做T? ​ 股票做T是出资者为了…

Echarts图表小数处理

在项目中遇到echarts图,小数显示两位如何处理呢? 获取到数据后,直接传值给echarts图的时候,会自动四舍五入保留整数进行显示,如果想如上进行显示,在echarts的 series 数组对象的 label 中添加一个属性即可&…

【Spring面试题】AOP相关面试题:概念?使用场景?如何使用?核心?

什么是AOP AOP是面向切面,面向切面编程,是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。对多个对象共同行为封装成一个模块叫切面,然后某个方法为切点。 通俗的讲:就是在一些代码中做重复操作的时候,我们为了…

使用Pritunl OpenVPN远程连接:实现安全高效的远程访问

文章目录 前言1.环境安装2.开始安装3.访问测试4.创建连接5.局域网测试连接6.安装cpolar7.配置固定公网访问地址8.远程连接测试 前言 Pritunl是一款免费开源的 VPN 平台软件(但使用的不是标准的开源许可证,用户受到很多限制)。这是一种简单有…

大数据与AI:解析智慧城市的幕后英雄

文章目录 1. 智慧城市的定义与发展2. 大数据:智慧城市的基石2.1 大数据的概念与重要性2.2 大数据的应用案例2.2.1 智能交通管理2.2.2 能源效率优化2.2.3 城市规划与土地利用 3. 人工智能:智慧城市的大脑3.1 人工智能的概念与重要性3.2 人工智能的应用案例…

【网络通信 -- WebRTC】Open WebRTC Toolkit 环境搭建指南

【网络通信 -- WebRTC】Open WebRTC Toolkit -- OWT-Server 编译安装指南 【1】OWT Server 与 Web Demo 视频会议环境搭建 【1.1】编译 OWT Server 安装依赖 ./scripts/installDepsUnattended.sh编译 scripts/build.js -t all --check 注意若不支持硬件加速则采用如下命令 s…

C++的命名空间namespace详解及特殊情况分析

这里写目录标题 历史来源意义定义使用using namespace std弊端 历史来源 最开始的C 头文件仍然以.h为后缀,它们所包含的类、函数、宏等都是全局范围的。后来 C 引入了命名空间,计划重新编写库将类、函数、宏等都统一纳入一个命名空间std 但改版后的c库致使旧c库无法…

springboot 下 activiti 7会签配置与实现

流程图配置 会签实现须在 userTask 节点下的 multi instance 中配置 collection 及 completion condition; collection 会签人员列表;element variable 当前会签变量名称,类似循环中的 item;completion condition: 完成条件。 ${taskExecutionServiceIm…

Credo推出业界首款单片集成CMOS VCSEL驱动器的800G光DSP芯片

针对AOC及短距(SR)光模块优化的新型Credo DSP,适用于下一代超大规模数据中心/AI应用 加州圣何塞和中国深圳,2023年9月6日——Credo Technology(纳斯达克股票代码:CRDO)今日发布两款新品&#x…

EasyPhoto:基于 SD WebUI 的艺术照生成插件来啦!

作者 :wuziheng 背景介绍 最近,基于生成式AI技术批量产出真/像/美的个人写真应用非常受欢迎。同时,随着 Stable Diffusion 领域开源社区的快速发展,社区也涌现了类似 FaceChain 的开源项目,帮助开发者开发个性化的真…

14 合并区间

合并区间 题解1 左端点排序后合并(可证连续,贪心)题解2 双指针(优化) 以数组 i n t e r v a l s intervals intervals 表示若干个区间的集合,其中单个区间为 i n t e r v a l s [ i ] [ s t a r t i , e n…

计算机视觉-OpenCV入门讲解

🎉作者简介:在读计算机研究生,目前研二。主要研究方向是人工智能和群智能算法方向。目前熟悉python网页爬虫、机器学习、计算机视觉(OpenCV)、群智能算法目前正在学习深度学习的相关内容。 📃个人主页&…

jar包或exe程序设置为windows服务

最近在使用java和python制作客户端时突发奇想,是否能够通过一种方法来讲jar包和exe程序打包成windows服务呢?简单了解了一下是可以的。 首先要用到的是winSW,制作windows服务的过程非常简单,仅需几步制作完成,也不需要…

2023 Google 开发者大会

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…