freeswitch之呼叫中心acd模块开发

2022-09-14 11:32:29 浏览数 (2)

大家好,又见面了,我是你们的朋友全栈君。

一、定义:

ACD(Automatic Call Distributor) 自动呼叫分配,也叫智能选择座席。它是呼叫中心整个前台接入系统逻辑功能的描述:把接入的呼叫转接到正确的座席员桌前。ACD是现代呼叫中心有别于一般的热线电话系统和自动应答系统的重要标志,其性能的优劣直接影响到呼叫中心的效率和顾客的满意度。

二、ACD包含的功能点:

1 、程控交换功能

ACD在本质上也是交换机的一种类型,必须具有程控交换最基本的话务交换功能。

2 、排队功能

ACD必须具有话务排队的功能,所谓排队是指在内线都忙的情况下,外部再打来一个电话时按一定规则进行排队,一旦内线空闲时进行接入。有的甚至具有vip优先排队接入功能。

3 、路由功能

拨入ACD的话务可以根据一定的路由规则转发到响应的座席终端(sip话机,坐席网关)、固话或者手机坐席或其他的一些的终端(如IVR )。

按分配策略可以分为:按最大空闲时长,按电话量,专员接入,按技能组优先级接入等等,坐席之间和技能组之间具有超时未听转和溢出转功能。

4、人工座席应答

根据客户的需要,将呼入的话路转接到人工座席上,客户将和座席人员进行交谈,接受客户预定、解答客户的疑问或输入客户的信息。

5、坐席软件接口

功能:登录,登出,示忙,示闲,小休,事务处理,咨询转(分机,手机,固话),三方通话,拦截通话,强拆,监听,切入IVR验证身份等功能。

事件:排队事件,排队取消事件,来电事件,通话事件,录音事件,挂机事件。来电事件中可以附带转接前ivr中受理业务的相关数据信息,方便弹屏页面展示给坐席来查看客户的预备需求;录音事件中附带录音文件信息,挂机事件中标识挂机方和挂机原因。

接口方式:ocx对接cs客户端模式;js(websocket)接口对接bs业务系统。

三、freeswitch实现ACD功能

1、esl方式

2、freeswitch模块方式

由于笔者是采用第二种开发,可以给基于此种方式的开发人员作为参考。

2.1 坐席接口可以采用libwebsockets库进行websocket协议开发,web端采用js连接通讯。

2.2 坐席分组,一套系统内分为多个技能组,不同技能组处理不同业务,技能组具备上述分配策略

2.3 设计app,参考语法turnslic {params}exts groups wait_time [queue_enable] [want_login] [all_ring] [speak_member_id] [record_enable] [wait_music] [data]

params:给坐席端的通道附加通道变量;

ring_exts:分机号,多个用逗号分开,优先级别可以用分号隔开;

ring_groups:技能组,多个用逗号分开,溢出技能组可以用分号隔开;

wait_time:超时时间;

queue_enable:排队使能;

wait_login:是否要求坐席登录才能接听电话;

all_ring:是否同振;

speak_member_id:坐席接听后是否报坐席工号;

record_enable:是否需要录音;

wait_music: 等待音乐;

data:附加数据,用于坐席弹屏中展示;

2.4细节事项

2.4.1 app设计失败返回值,以方便不同返回结果对应的后续处理。比如:超时未接,排队超时,无空闲坐席,被拦截。

2.4.2分机掉线的处理:可以通过监听sofia模块的sofia::register和sofia::unregister消息及时知道分机在线。

2.4.3转外部系统添加sip自定义头传送相关数据,方便对接第三方系统。

2.4.4 VIP优先接入功能,指定为优先级高的号码优先接入到系统。

2.4.5 坐席状态并发处理节点,分机呼叫分机,ACD转分机,咨询转分机,三方通话转分机,这些功能点都可能同时并发呼叫相同分机,为了保证单个分机同时只处理一次呼叫,避免分机重复呼叫,坐席的状态和锁机制控制唯一性很重要。

大家如果有什么好的想法,可以一起商讨!

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/159191.html原文链接:https://javaforall.cn

0 人点赞