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服务端,能够同时接入几十个甚至几百个各 ...
随机推荐
- CentOS7修复OpenSSH漏洞升级到OpenSSH 9.8 RPM一键更新包
OpenSSH是SSH(Secure Shell)协议的开源实现,它支持在两个主机之间提供安全的加密通信,广泛用于Linux等系统,通常用于安全远程登录.远程文件传输和其它网络服务. 2024年7月1 ...
- Java实现minio上传文件加解密操作
一.背景与需求 在云存储场景中,数据安全是核心需求之一.MinIO作为高性能对象存储服务,支持通过客户端加密(CSE)在数据上传前完成加密,确保即使存储服务器被攻破,攻击者也无法获取明文数据.本文将详 ...
- vue3 基础-API-computed
前些章节讲了一些常用的 api 如 setup, ref, reactive, toRef ... 等, 并以一个 todoList 的小案例来体现在 vue3 中如何进行解耦逻辑, 以 setup ...
- 浅析鸿蒙(ark runtime)执行动态代码
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- C++11 Lambda表达式(匿名函数)详解
使用STL时,往往会大量用到函数对象,为此要编写很多函数对象类.而有的函数对象类只用定义一个对象,而且这个对象也只使用一次,那编写这样一个函数对象就很浪费了.而且有时这定义函数对象类的地方和使用函数对 ...
- SuperSocket 2.0 的发布标志着.NET Socket 服务器框架迈入了一个全新的时代
2025 年 4 月 20 日 - SuperSocket 团队自豪地宣布正式发布 SuperSocket 2.0,这是这款适用于 .NET 的高性能.可扩展套接字服务器应用程序框架的一个重要里程碑. ...
- E. Level Up
E. Level Up 题意 玩家初始等级为 \(1\), 有 \(n\) 只怪物,每个怪物有一个等级 \(a_i\), 如果怪物等级高于你,则你们会战斗,战斗后经验加1,否则怪物会逃跑,你不会获得经 ...
- Linux常用命令介绍-系统管理
find命令 - 根据路径和条件搜索指定文件 ind命令的功能是根据给定的路径和条件查找相关文件或目录,其参数灵活方便,且支持正则表达式,结合管道符后能够实现更加复杂的功能,是Linux系统运维人员必 ...
- AD 横向移动-哈希传递攻击
本文通过 Google 翻译 Lateral Movement – Pass-the-Hash Attacks 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充. 导航 ...
- 「Log」做题记录 2024.1.29-
\(2024.1.29-2024.2.4\) \(\color{royalblue}{P5903}\) 树上 \(k\) 级祖先模板,长链剖分. \(\color{blueviolet}{CF1009 ...