1.ipcc总体架构模块
2.系统模块图
2.1 acd模块
1.acd模块
acd在平台中的位置
2.配置坐席呼出
https://blog.csdn.net/weixin_34242819/article/details/90492301
对于登录坐席工号进行呼出的情况,我们有如下步骤:1.坐席签入后能上线成功 2.坐席能够正确路由到运营商的sip电话进行呼叫
2.1.1 坐席签入后能上线成功
坐席上线
1.在cti_work表中找到分机,如:100003。
2.配置100003到cti_work_queue中去
3.在cti_outcaller中配置上线的主叫
3.在cti_telno中配置分机路由:100003分机呼出使用内线字段、长度在1-6(因为:100003是6位数)、
4.查看/cc/bin/log下面的日志:
发现话机没有注册,打开一看:是注册的服务错了
5.如果出问题,查看Acdgate模块下Tomcat日志,在查看/cc/log/acd_acd01.log下的日志
acd_acd01.log里面r:开头的。
机器人锁定坐席转人工
我们在排查之前可以关掉hmp,设置:hmpcheck=0
1.在确保坐席能够上线情况下,先配置转人工的机器人场景:1013502011
2.在批次场景里面创建人批次场景,然后创建对应批次,进行外呼
3.查看acd_acd01_xxxx.log下的日志:锁定坐席成功与否?—>TRptque::getandlockagent
4.外呼后查看日志:httpg_httpg01_xxxx.log
查看机器人转人工文档说明书知道:”att_status”:”0”不在线,”att_status”:”1”在线
5.如果和ai交互时候,传递的参数不对的话,我们查看acd模块:
TRptque::getandlockagent res=[-1]表示没有获取到空闲坐席
6.如果转人工时候,坐席挂不断,说明是坐席表里面的相同workno有多条。
6.正常交互如下:
acd:2019-09-15 09:48:03.453 TRptque::getandlockagent res=[0], workno=[100002] quueueid=[52] usid = [90046126300563]
httpg:ai获取空闲坐席:key:[{“userid”:”900461263”,”inaction”:0,”inparams”:{“call_id”:”900461263”,”call_sor_id”:”15188317019”,”call_dst_id”:”051289578445”,”att_status”:”1”}}].
ai转人工传递queueid:ok:0,resultbuf[{“ret”:0,”userid”:”900461263”,”outaction”:”11”,”outparams”:{“call_dst_id”:”051289578445”,”queue_id”:”52”,”call_id”:”900461263”,”inter_idx”:”8”,”call_sor_id”:”15188317019”}}].
2.1.2 正确路由到运营商的sip电话进行呼叫
1.acd.cfg配置(配置是不是开启did,did是优先级最高的,如果开启,呼叫客户的主叫号码将会是did号码-DID的中文意思是直接拨入,是运营商提出的概念,通过这个号码,运营商可以呼叫到voip系统内,freeswitch上实现外乎呼叫的方式为配置一个网关,指定运营商的接入号和密码,有呼叫这个号码时,运营商会把这个号码送给freeswitch。)
2.acd.cfg配置(设置使用的主叫号码:usefromcaller,如果想要使用cti_work里面的,需要配置为1)
3.配置坐席呼出的主叫显示:cti_outcaller
4.使用web页面上的软电话条进行呼叫,然后查看呼叫的结果里面是不是我们配置的主叫
从上面我们可以知道,坐席呼出时候是两通电话。
2.2.fsg模块
FSG模块作为:AG(CTI)和FS进行交互模块,其作用就是一个接口调用服务。
对应的配置文件是:/cc/cfg/fsg.cfg
对应的日志文件是:/cc/log/fsg**.log和/cc/bin/log/log*.log
其日志记录了ipcc内部和外部中继网络交互的日志详情。
2.2.1.fsg模块修改日志
有时候,我们为了排查和外部对接的错误信息时候,可以通过两种方式:
1.修改fsg的日志级别为6
2.通过tcpdump -w xx.cap抓包
以下为修改fsg的日志级别为6的设置
2.2.1.1.删除原来的fsg相关日志文件
- 删除/cc/bin/log文件目录下的文件
- 删除/cc/log/fsg*.log文件
2.2.1.2.修改日志级别配置文件fsg.cfg
- 修改fsg.cfg里面SET下的日志级别文件为6
acd在平台起到用户转座席排队,座席分配,座席操作控制等和座席呼叫相关的功能。2.2.1.3.以写入文件的方式启动fsg.sh
进入/cc/bin下输入
|
|
2.3 ag模块
2.3.1 概述
AG在整个YC平台中起着集中管理的作用。AG模块就是我们常说的CTI模块。
AG起的作用有以下几点:
1、 管理多个适配节点的接入。
2、 统一对多个节点的电路进行全局编号。
3、 对电路进行分组管理。
4、 呼入电话路由相应的IVR流程进行处理。
5、 呼出电话路由到相应的电路组。
6、 管理呼叫电话分配媒体资源(播音,录音,会议,传真等媒体资源)
2.3.2 呼叫问题排查(AG问题排查)
理解T、HT、R、HR是理解ag模块的关键
- 1.按照流程来:T是收到 R是发送 HR是收到发送端的消息 HT是给T端返回信息
- 2.对于AG来说:T端是ACD、Dyflow等;R端是fsg
- 3.对于FSG来说: T端是ag R是fsapi
- 4.ACD等来说:T端是自己 R端是ag
我们查相关日志时候,先从ag模块(cti模块)查询起,然后一次找到T、R。
分析:看ag的日志—>这种交互ag的日志是两边都有的–>从ag里面开始分析—>平台挂机0、200是用户挂的—>从ag开始看确定消息在什么地方不对了 然后再分析fsg测 或者是ivr测的日志
2.日志文件模块
2.1.查看和机器人交互日志
和机器人交互日志都是通过ivr流程中http传数据,所以在httpg日志,需要看就提详细信息可以看dyflow日志
2.2.查看任务加载,工作日,时间段,呼叫情况
- 1.任务即是notify,但是任务在呼叫前任务加载,工作日,时间段都是在dbg_dbg01模块
- 2.查看任务呼叫情况:callnotify_callnotify01.log
- 3.查看任务调用api模块:callnotify_callnotifyapi.log
- 4.查看任务呼叫失败情况,没有数据插入到cti_cdr、ocm_result:查看callnotify_callnotifyfailsql.log
3.ipcc对接其他server
参考:https://blog.csdn.net/gredn/article/details/40581871
3.1 修改freeswitch配置
从平台架构我们知道,我们现在需要和外部第三方sipServer对接,首先需要打通各自的网络,然后就是配置相关的网管
- 1.进入freeswitch目录下freeswitch/conf/sip_profiles/external其中有外部网管模块。 拷贝存在的一个网关配置
- 2.修改gw3.xml中对接的外部sipServer地址和端口:
- 3.重启freeswitch
进入freeswitch的bin目录停止fs:./freeswitch -stop
进入freeswitch的bin目录启动fs:./freeswitch -nc -nonat
3.2 修改号码网管路由
- 1.修改cti_route表
打开数据库表cti_route配置主叫外显号码和网关对应的关系
- 2.重启fsg
进入/cc/bin目录下:执行:./fsg.sh restart
3.3 使用抓包工具抓包
对接完之后,如果电话不通,那么就需要使用wireshake进行网络抓包,分析包
4.ipcc对每个号码并发进行控制
在/cc/cfg/notify.cfg下的callnotify添加:examentline=1表明开启了号码并发设置
5.ipcc配置空号检测
5.1 安装空号检测
- 1.首先正常安装并启用空号检测da2(安装数据库、程序)
- 2.如果空号检测部署在一台服务器上,我们呼叫平台部署在多台服务器上,我们如何配置呢?
- 3.查看/usr/local/freeswitch/conf下面文件:da2.json
- 4.重启freeswitch:进入freeswitch的bin目录:执行:./freeswitch -stop 再执行:./freeswitch -nc -nonat
- 5.打开freeswitch客户端:1./fs_cli -P 8031 -p testtest
- 6.在fs控制台客户端输入:da2 show
出现上面问题说明成功,如果一直不成功检查对应数据库表
5.2 添加新的授权
部署新的话务平台节点时候需要添加新的授权,修改两个表:user,bill;
6.ipcc中cdr关于服务
- 1.服务水平只对呼入而言的 呼出不用管 calltype=100 and dir=1
- 2.starttime connecttime和endtime 是整个电话的开始 接起和结束时间
- 3.workstarttime 是电话进入acd的时间 workconnect是坐席接起电话的时间 workendtime是坐席服务结束的时间 acmtime 在呼入的时候是坐席开始振铃时间(注意 在呼出的时候是用户振铃时间)
- 4.acmtime是服务水平的统计标志
- 5.用户呼叫系统的全部电话(呼入我们目前都要进入ivr ):calltype<300 and dir = 1
- 6.坐席呼出用户的电话 calltype=100 || calltype=113||calltype=114 and dir=0
- 7.自动外呼呼出的电话 notifyid is not null
- 8.里面 connecttime workconnecttime字段很重要 判断是否接通的依据
- 9.建议:现在数据除了cdr表外 通话数据 坐席数据 其实已经通过ice推送给ccms了、ccms能不能做一些文件存储 然后通过一些外部工具进行数据分析、毕竟cdr是生产上的 不能频繁访问、 ZeroC ICE提供一种打补丁方式,名为IcePatch2。基本功能就是通过ICE通讯将服务器上的最近软件部署到各个客户端中,这间接的实现了文件传输功能,
7.ipcc中任务呼叫失败原因
8.ipcc中任务脚本通知
通过shell脚本的iniwrite和ice不能并存,如果用ice需要把iniwrite改成iniwrite1或者其他
9.ipcc中配置
ipcc各种配置请参考对应的doc文档。
2.空号检测模块搭建及录音库文件更新
注意:金服空号检测服务器由于私有云不能访问到外网,所以将空号检测license所在服务部署到了金服金融云。(金融云是连通公有云和私有云的桥梁)
空号检测服务daserver是根据局端返回的录音文件:然后通过asr识别来返回信令结果:dropcause
2.1服务搭建
- 1.解压da.tar.gz数据库
- 2.安装mysql
centos6
-yum install mysql-server
-service mysqld start
-chkconfig mysqld on
centos7
-yum install mariadb-server
-systemctl start mariadb.service
-systemctl enable mariadb.service
3.创建数据库da
mysqladmin -uroot -p create da4.导入数据到da
mysql -uroot -p da < da.sql
生成的数据库和表如下:- 5.执行machinecode获取机器码,发给cdevelop@qq.com申请授权码,写入 license.txt .
6.根据安装文档word版本,配置数据库和JSON
7.启动daserver
临时启动: ./daserver
后台启动: nohup ./daserver &
注意:启动出现 ./daserver: relocation error: ./libssl.so.10: symbol private_ossl_minimum_dh_bits, version libcrypto.so.10 not defined in file libcrypto.so.10 with link time reference
一般是系统已经有了其他版本的ssl,删除 本目录的 libssl.so.10 文件
2.2更新录音文件库
电话在拨打过程中出现了运营商返回的错误信令:dropcause为480
通过查询da模块(空号检测模块)录制的录音知道:”您拨打的号码是非本地号码,请在拨打号码前加0” 我们知道空号检测模块的录音库中没有识别到此空号录音,所以我们需要更新录音库(使用da提供的win下的工具samplemgr,连接da所在license的库数据库da),有时候我们是无法直接连接license所在的da数据,而只能连接测试数据库,所以我们需要在测试环境下操作,然后把对应的数据替换到生产库。
2.2.1更新da语音库
- 1.打开samplemgr,连接对应的数据库
2.启动服务,输入key(key是da数据库中)
启动成功日志:
3.添加录音库测试
文件要求 8000hz 16位 单声道,文件名要是数字,比如 电话号码.wav 这样子。
后续步骤按照samplemgr里面的文档:添加样本例子.docx
2.2.2 测试环境da数据导入到生产环境
注意:1.由于da表结构中字段类型是:blob所以我们不能使用SQLyog或者Navicat工具直接将表数据导出,经测试直接导出的数据通过source导入到生产环境时候会由于乱码导入报错。而只能直接在测试环境所在服务是使用mysqldump指令导出数据。
1.测试环境da数据导出
- 1.进入测试环境da数据库数据(以导出mfcc数据为例)
mysqldump -u-p > /path/to/*.sql
我们直接输入:mysqldump -u root -p123456 da mfcc>mfcc.sql 报错如下:
说明我们导出表数据时候不能直接输入密码。我们更换成如下:
2.生产环境da数据导入
- 1.连接生产环境数据库(注:如果连接不上时候加上-h 127.0.01参数)
- 2.数据导入
3.启动da的license所在服务
从数据导入之后使用./daserver启用之后,大概到了下午4点11分左右,局端又返回许多480结果,然后查看da的录音
听录音是没有识别到,于是进入freeswitch里面的log下的da.log打开后发现下午4点11分左右就不开始识别了:
查看daserver进程发现进程挂了,所以使用下面后太启动方式。
- 1.进入daserver所在目录下执行后台启动指令:
nohup ./daserver &
10.定时备份日志
1.编写clearlog.sh
1234567cd /cc/log/bakfind /cc/bin/log -mtime +1 -type f -name "log*.log" -exec mv {} /cc/log/bak/. \;tar zcvf fslog$(date +"%Y%m%d%H%M")tar.gz log*.logrm -f log*.logfind /cc/log -mtime +1 -type f -name "*.log" -exec mv {} /cc/log/bak/. \;tar zcvf log$(date +"%Y%m%d%H%M").log.tar.gz *.logrm -f *.log2.添加到系统定时任务中去
a.在root下执行 crontab -e
b.将0 0 * /cc/bin/cleanlog.sh > /dev/null 2>&1 放进去 保存退出。3.运维查询每天日志的最小、最大拨打时间
|
|
```