freeswitch笔记(5)-小型呼叫中心设计思路
这一篇用esl实战一把,利用esl client来实现一个小型呼叫中心的原型,先看看下面这张图:

企业通常会对外公布一个400之类的服务电话,当用户拨打这个电话时,实际上背后是一堆客服妹纸带着耳麦通过电脑连着自己的电话分机。客人进线时,系统会根据一定的规则(比如挑1个当前空闲的客服),然后把电话转接过去,当然转接有可能不成功(比如目标客服没接听,或者当时走开了,或者误操作按了挂机...),系统要监听这些异常情况,然后再分配1个其它客服,直到接通(或客人等得不耐烦,主动挂机)

这是大致的时序图,解释一下:
1、客人来电后,数据会到过freeswitch
2、fs上配置outbound规则(见之前的文章)后,会把一些关键信息(比如客人来电号码),传到esl client
3、esl client根据自己的业务规则,分配一个客服(即:分机号)
4、fs主动向该客服发起呼叫(originate命令) --问题1:为啥这里不直接用bridge命令?
5、考虑到客服可能正好离开位置(比如:起身去倒杯水),或者比较忙,直接挂断了电话,步骤4的呼叫肯定失败。这里要用inbound模式,监听目标客服的分机状态,才能知道应答情况
6、如果目标客服无应答(挂机或一直振铃不接),则挂断客服这一头的电话(注:uuid_kill 客服通话的uuid),然后重复步骤2,继续分配另外一个客服 (注:这个重复分配的过程,客人是感知不到的)
7、如果目标客服接起了电话(即:应答),则先将客人来电应答(answer指令,否则客人那边还会一直听到等待音),然后将两头的电话接通(uuid_bridge uuid1 uuid2)
回答下刚才提到的一个小问题:步骤4为什么不用bridge命令?
答案:bridge也可用于转接,正常情况是没问题的,但是bridge命令执行成功,并不代表对方一定就接通了(见上面未接听情况的各种分析),如果对方挂断了,客人会先听到对方的振铃声,然后听到挂断,但是自己这一头的电话并未断,接下来又会听到排队的等待声,体验很不好,所以这个方式不推荐。
时序图中涉及的freeswitch命令列一下:
1、originate 向客服发起呼叫
tips: 可以在发起呼叫时,就指定uuid(避免fs自动生成),方便后面uuid_kill或uuid_bridge,示例如下
originate {ignore_early_media=true,call_timeout=60,hangup_after_bridge=false,origination_uuid=新的uuid,origination_caller_id_number=主叫号码,origination_caller_id_name=主叫号码显示名称}user/目标号码 &park()
注:最后的&park()不要忘了加,这个相当于系统自动应答,把客服端的电话先保持住,否则会超时自动挂断;另外新的uuid,可以通过create_uuid先生成。
2、answer 自动应答
用于客服拨通后,自动应答客人电话,否则客人那边一直播等待声音,没人接听,最终会超时。
3、uuid_kill 结束某一些的通话
如果目标客服一直振铃未接听,可以用该命令直接掐掉。
4、uuid_bridge
接通二边的电话
参考:
https://freeswitch.org/confluence/display/FREESWITCH/Originate+Example
https://freeswitch.org/confluence/display/FREESWITCH/mod_commands
https://freeswitch.org/confluence/display/FREESWITCH/Event+List#EventList-3.21CHANNEL_UUIDevent
freeswitch笔记(5)-小型呼叫中心设计思路的更多相关文章
- FreeLink开源呼叫中心设计思想
上一篇大概说了国内外优秀的呼叫中心系统: 国内外优秀呼叫中心系统简单介绍 借鉴上述呼叫中心系统,我们的设计新一代呼叫中心例如以下: watermark/2/text/aHR0cDovL2Jsb2cuY ...
- cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第0步---知识点总结&效果预览&设计思路
/* 说明: **1.本次游戏实例是<cocos2d-x游戏开发之旅>上的最后一个游戏.这里用3.0重写并做下笔记 **2.我也问过木头本人啦,他说:随便写.第一别全然照搬代码:第二能够说 ...
- iOS 组件化 —— 路由设计思路分析
原文 前言 随着用户的需求越来越多,对App的用户体验也变的要求越来越高.为了更好的应对各种需求,开发人员从软件工程的角度,将App架构由原来简单的MVC变成MVVM,VIPER等复杂架构.更换适合业 ...
- 基于Docker一键部署大规模Hadoop集群及设计思路
一.背景: 随着互联网的发展.互联网用户的增加,互联网中的数据也急剧膨胀.每天产生的数据量数以万计,本地文件系统和单机CPU已无法满足存储和计算要求.Hadoop分布式文件系统(HDFS)是海量数据存 ...
- selenium 关键字驱动部分设计思路
1 说明: 1.以下的代码亲测直接可用, 2.设计思路来自博客园的 张飞_ :http://www.cnblogs.com/zhangfei/p/5330994.html / http://w ...
- 什么是Asterisk,它如何帮助我们的呼叫中心?
如今的呼叫中心与过去的呼叫中心有很大差异.过去,一间房屋或一座大楼,装上硬接线的POTS电话,招聘几名员工就可以建立一个呼叫中心.如今,这样的情形已经一去不复返,因为有许多新技术让呼叫中心变得更像是一 ...
- IM开发基础知识补课(七):主流移动端账号登录方式的原理及设计思路
1.引言 在即时通讯网经常能看到各种高大上的高并发.分布式.高性能架构设计方面的文章,平时大家参加的众多开发者大会,主题也都是各种高大上的话题——什么5G啦.AI人工智能啦.什么阿里双11分分钟多少万 ...
- App 自动化框架设计思路
最近在整理和学习Appium+Java 自动化框架,对APP自动化框架的部分设想参考了一些文章,先进行整理下: 框架的思路一: 思考引入:https://www.cnblogs.com/yunfeio ...
- java并发编程笔记(十一)——高并发处理思路和手段
java并发编程笔记(十一)--高并发处理思路和手段 扩容 垂直扩容(纵向扩展):提高系统部件能力 水平扩容(横向扩容):增加更多系统成员来实现 缓存 缓存特征 命中率:命中数/(命中数+没有命中数) ...
- TYPESDK手游聚合SDK服务端设计思路与架构之一:应用场景分析
TYPESDK 服务端设计思路与架构之一:应用场景分析 作为一个渠道SDK统一接入框架,TYPESDK从一开始,所面对的需求场景就是多款游戏,通过一个统一的SDK服务端,能够同时接入几十个甚至几百个各 ...
随机推荐
- MIUI系统,APKMirror Installer安装apkm的时候提示app installation failed Installation aborted解决方案
场景 我的手机是MIUI系统,通过APKMirror Installer安装apkm的时候提示app installation failed Installation aborted. 本来不想装了, ...
- Java字节流--输出流OutputStream和输入流InputStream
OutputStream和InputStream都是抽象类 OutputStream定义和InputStream定义 OutputStream InputStream public abstract ...
- SpringBoot文件上传--转载
转载地址:https://www.jianshu.com/p/85017f5ecba1
- SpringBoot静态资源访问--转载
转载地址:https://www.jianshu.com/p/d40ee98b84b5
- B1021 个位数统计
描述 输入格式: 每个输入包含 1 个测试用例,即一个不超过 1000 位的正整数 N. 输出格式: 对 N 中每一种不同的个位数字,以 D:M 的格式在一行中输出该位数字 D 及其在 N 中出现的次 ...
- PHP代码学习
在php传参过程中,如果服务器运行的Linux环境,可以加入命令的执行,比如参数名是a,命令可以是:a=ls,通过用:,&&,|| 来分割,还可以同时执行多个命令.在Windows环境 ...
- 面试题:HashMap和Hashtable的区别和联系
摘要:从源码.特性和算法实现等几个角度归纳HashMap和Hashtable的区别和联系. HashMap与Hashtable的区别是面试中经常遇到的一个问题.此问题看似简单,但如若深挖,也可以学 ...
- [转]编译报错:virtual memory exhausted: Cannot allocate memory
一.问题 当安装虚拟机时系统时没有设置swap大小或设置内存太小,编译程序会出现virtual memory exhausted: Cannot allocate memory的问题,可以用swap扩 ...
- 图神经网络(GNN)模型的基本原理
一.概述 在人工智能领域,数据的多样性促使研究人员不断探索新的模型与算法.传统的神经网络在处理像图像.文本这类具有固定结构的数据时表现出色,但面对具有不规则拓扑结构的图数据,如社交网络.化学分子结 ...
- Windows基线检查
Windows 脆弱性检查是指通过一系列工具和方法,评估 Windows 操作系统中的潜在安全漏洞,以发现并修复可能被攻击者利用的弱点.这个过程包括对系统的安全配置.补丁更新.权限设置以及其他安全因素 ...