常见问题
本文档以faq的方式解答常见问题,如果你的配置和本文档描述的有点不一样是正常的,本文档以ccadmin1.09导入的默认配置讲解的。
怎么设置机器人最大通话时间
进入机器人的拨号方案park_timeout=${robot_maximum_connect_time}
,${robot_maximum_connect_time}这个就是最大通话时间的变量,默认值在配置文件vars.xml里面设置robot_maximum_connect_time=3600。如果你要给不同的任务设置不同的机器人最大通话时间,可以给在队列外呼模板添加一个名为robot_maximum_connect_time的变量,然后任务里面给这个变量设置一个你需要的值就可以了。
自动外呼要录音接通前的声音怎么设置
在队列外呼任务配置,配置录音模板和勾选允许嵌套变量就可以了。mod_cti 1.3.15版本之后推荐的配置方法是,自动外呼勾选不等待应答,然后路由里面把拨号方案调整拨号方案的顺序,把通话录音放到等待应答之前。
自动外呼不呼叫了怎么分析
执行fs命令 cti show queue_dialer 任务名
会输出任务的全部参数。重点查看这几个参数,允许外呼的时间,外呼线路是否有空闲的并发,如果配置了坐席线路组,检测坐席线路组是否有空闲的并发。
enable:false (任务是否启用)
call_limit:1 (任务最大并发)
number_queue:number_robot (号码队列)
line_group:[default(idle=0)] (外线线路空闲的并发,idle要大于0)
start_time:2021-07-28 08:52:20 (开始时间)
stop_time:2023-07-28 08:52:22 (停止时间)
work_hour:[wday:-1 08:00-23:00] (上班时间)
work_week:[0,1,2,3,4,5,6] (工作日)
service_line_group: (坐席线路组)
service_line_group_idle:0 (坐席线路组空闲坐席个数)
- 查看线路组的内存状态的命令是
cti show line_group 线路组
如果外呼线路组和坐席线路组空闲并发不对,可以查看线路组内存状态看看。新添加的线路组要点更新(线路组里面的每个线路,如果也是新加的,需要先更新,然后再更新线组)。 - 空闲CPU小于cti.json配置(queuedialer.idle_cpu)默认是10% 会停止外呼
- 系统负载/CPU核心数大于cti.json配置(queuedialer.loadavg)默认是1.5 会停止外呼
自动外呼怎么启用空号识别功能
安装好空号识别模块,任务配置里面启用空号识别,然后cdr.json的cdr配置把空号识别的结果变量da2_result记录到数据库就可以了。
自动外呼的号码怎么和通话记录关联
如果每个任务的号码是唯一的,可以通过任务名和被叫号码来关联,如果不是唯一的,可以导入号码时添加一个origination_uuid的变量,这样外呼系统就会使用这个uuid作为通话的UUID。
自动外呼呼叫速度(cps)和并发的关系
cps和limit 的关系:比如并发设置为100,当前存在的通话是0个,呼叫速度设置为10时,第一秒发起10个呼叫,第二秒再发起10个呼叫,以这样的速度发起呼叫,直到通话总数达到并发就停止发起新的呼叫。如果有电话挂断了,那么以1秒10个的速度继续发起新的呼叫,使通话总数达到并发设置的值。
自动外呼任务并发和线路并发的关系
自动外呼实际并发控制方式时, 第一步获取任务配置的最大并发,第二步如果配置了坐席组(根据空闲坐席,和呼叫倍数等设置)动态计算可以呼叫的并发,第三步计算外呼线路组的可用并发。然后3个并发取最小值。
自动外呼呼叫速度(cps)小于1的计算方法
比如需要几秒才呼叫一个电话,这个时候怎么设置CPS呢,1÷秒数,就是CPS。比如 20秒呼叫一个,就是1÷20=0.05,CPS 就设置0.05
拨打外地手机自动加0
ccadmin导入导出,导入手机号码归属地数据库(ccadmin下载包里面包含这个库),然后再外呼使用的线路设置以下本地区号就可以外地手机自动加0了。
分机注册超时(408 Request Timeout)
fs_cli -x "sofia status profile internal"
查看internal的sip状态,如果输出Invalid Profile!,进入fs_cli 执行reload mod_sofia
重载模块,然后在执行sofia status profile internal
,看BIND-URL(sip:mod_sofia@101.43.12.232:11450;maddr=10.0.16.17;transport=udp,tcp) 绑定的端口。mod_sofia@101.43.12.232:11450;maddr=10.0.16.17意思是端口是11450,外网IP是101.43.12.232,本机IP是10.0.16.17,transport=udp,tcp 绑定了UDP和TCP,这个就是绑定了本机IP 10.0.16.17的11450,配置了外网IP为101.43.12.232。如果绑定的端口不是ccadmin->sip->internal->sip-port设置的,先检查ccadmin->配置文件->vars->external_ip=公网IP,是否把stun:stun.freeswitch.org修改成了正确的公网IP,如果多网卡maddr地址错了,ccadmin->sip->internal->sip-ip和rtp-ip的值默认$${local_ip_v4}改成实际的本机Ip,修改后重启fs,或者fs_cli 里面执行 reload mod_sofia,再次查看sip状态
[root@VM-16-17-centos ~]# fs_cli -x "sofia status profile internal" |
netstat -ntulp | grep freeswitch
或者ss -ntupl | grep freeswitch
查看tcp和udp对应的sip端口是否监听了,本例子 tcp 10.0.16.17:11450和udp 10.0.16.17:11450 都是有监听的。
[root@VM-16-17-centos ~]# netstat -nap | grep freeswitch |
iptables --list
查看防火墙规则,如果有屏蔽的规则,并且 Chain INPUT (policy ACCEPT)不是DROP, 可以先 清空防火墙规则试试,清空防火墙规则的命令是iptables -F
,如果默认是 Chain INPUT (policy DROP),先iptables -P INPUT ACCEPT
把默认规则改成ACCEPT,然后在清除规则。云服务器后台或者路由器里面检查是否映射了端口进来,云服务器的网络安全必须放开SIP端口和RTP端口,如果是本地服务器路由器里面先把SIP端口和RTP端口映射进来。
tcpdump抓包看是否收到了客户端的注册请求,命令是
tcpdump -Aqnns 0 port 11450
端口如果不是11450改成port sip端口。fs_cli 打开sip信令看是否能收到注册请求,打开信令输出的命令是 fs_cli里面执行
sofia global siptrace on
外呼进度通知
比如需要183或者180的时候触发一个通知用来发送闪信。
可以通过设置变量,来绑定事件和回掉url
api_on_pre_originate_notify
呼叫前触发 (只有a呼叫b的时候a路有效)api_on_orphaned_bleg_notify
发起呼叫的通道先挂断了触发(只有a呼叫b的时候a路有效)api_on_originate_notify
呼叫请求发送后触发api_on_post_originate_notify
呼叫完成后(180或者200)触发
注意呼叫完成分2种情况,如果加了ignore_early_media=true|consume,接通后才触发,如果ignore_early_media=false ,彩铃的时候就是收到183就触发。
例子:api_on_post_originate_notify='cti_http_get_async http://127.0.0.1/uuid=${uuid}&number=${cti_dial_number}'
如果是队列外呼需要勾选嵌套变量,其他场景加上变量origination_nested_vars=”true”。
机器人伴随转人工或者排队转人工 把坐席通道变量同步到外呼通道
设置通道变量 cti_import
=要同步的变量名,多个变量用逗号隔开。如果要给导入后的变量加一个前缀可以设置一个导入前缀变量cti_import_prefix
。
机器人伴随转人工或者排队转人工 把外呼通道同步到坐席通道变量
在拨号方案转人工动作cti_acd,或者转机器人动作cti_rotobt的前面,添加一个 export nolocal:变量名=${变量名}
CDR记录媒体信息(丢包,抖动等)
以下通道变量记录了媒体信息可以把需要的变量写入到CDR表
"rtp_audio_in_raw_bytes": "0", |
如果cti.json的cdr.details 设置为true, details信息里面的callstats也有媒体信息。
"callStats": { |
默认通道变量
配置文件 -> vars.xml 配置的变量就是默认的通道变量。
分机掉线检测
修改注册过期时间
sip 客户端注册的时候会设置一个注册过期时间,freeswitch的分机配置 sip-force-expires 可以强制修改客户端的注册过期时间(建议 sofia的配置(sip->internal) NDLB-expires-in-register-response 改成 true), 如果更快的检测到分机掉线,建议 sip-force-expires 设置小点,比如60秒。
开启ping
分机配置 force_ping 勾选,然后 sofia配置(sip->internal) unregister-on-options-fail 改成true。
如果单独勾选了force_ping ,分机掉线后会把分机注册状态改成 Unreachable。
如果unregister-on-options-fail设置为true,会把掉线的分机的注册信息直接删除。
ubuntu系统启动失败
因为 ubuntu系统默认不是root权限,切换用户,会导致启动失败
先把/ddt目录所有者改成要启动的用户 sudo chown -R ddt /ddt
然后指定用户权限前台启动看输出失败信息
freeswitch 指定启动用户权限的方法sudo freeswitch -u ddt
asrproxy 指定启动用户权限的方法,先cd /ddt/asrproxy 切换到程序目录sudo ./asrproxy -uddt
如果提示锁定文件失败,可以直接删除对应的文件
非root权限监听端口失败
非root权限不能监听低于1024的端口,可以把监听端口改成大于1024