sip trunk sip中继 -- ip网络通信
fail2ban 和防火墙配合,能限制IP、拦截攻击
如何管理作息状态的? 呼入callcenter有队列有状态,呼出(号码连选)呢?目前书上是轮询,有较大呼损
如何减少呼损?什么模块?或者什么服务?
callmanage模块--排队,acd 呼叫时fs产生事件到cm管理状态,cm进行坐席排队策略,呼叫分发
呼入:用户直接呼叫坐席(呼通ivr和坐席的callid一样,是一通呼叫)
浏览器外呼:(页面点呼叫,请求到达cm,cm构造呼叫命令,用esl通知fs进行呼叫)先呼叫坐席,再呼叫用户(在呼通坐席后cm通知fs调manual_call_start.lua,进行bridge用户)
originate agent &lua(manual_call_start.lua)
硬件ip话机外呼:话机 -- fs -- 用户,之后 manual_call_bridge_on_answer.lua 给cm推送消息
预测外呼:先呼叫用户,再呼叫坐席(排队选坐席)
呼叫流程SIP -- 信令场景图
操作后用sngrep抓取查看
fs日志状态变化Channel-State --
switch_core_state:Running State Change 代码内channel->state
--INVITE
CS_NEW
CS_INIT(invite)
CS_ROUTING(拨号计划)
CS_EXECUTE(action app)
CS_CONSUME_MEDIA(会话offer) --被叫bleg FSsnd invite --> 被叫
--SDP完成
CS_EXCHANGE_MEDIA(会话answer) --被叫bleg FSsnd 183/200 --> 主叫
--BYE
CS_HANGUP(BYE) hanging up, cause: NO_ANSWER hanging up, cause: NORMAL_CLEARING HANGUP, cause: NORMAL_CLEARING
CS_REPORTING(200ok) REPORTING, cause: NO_ANSWER
CS_DESTROY
FS视角(事务)sofia:entering state SIP channel:Callstate Change
rec[received][100] invite DOWN
snd[calling][0] invite DOWN
rec[proceeding][180] 180 RINGING/EARLY
snd[early][180] 180 RINGING/EARLY
rec[completing][200] 200ok ACTIVE
snd[ready][200] ACK
snd[completed][200] 200ok ACTIVE
rec[ready][200] ACK
BYE HANGUP
sip事务处理 -- 定时器
见sip协议.doc文档的事务章节
一些用户可能会遇到408,480或者487的消息。通常情况下,这三个错误消息和SIP的定时器相关,可能服务器端或者用户端的定时器设置相关。
408 Request timeout server不能产生响应而超时 主叫重传invite,未收到响应超时
480 Temporarily unavailable callee已经被联系上,被叫方振铃未接、拒接、正在通话中以及手机关机。-放音:呼叫受限
487 Request Terminated 被叫方手机关机,拒接。-放音:呼叫受限
#呼叫忙态回响应,回忙铃声(早期媒体)过程
--fs的ACD掌握坐席状态,是否给坐席分配呼叫 若是未能预知对端状态,sip代理终端(话机)收到请求,能判别终端用户当前状态(闲忙)、指示用户放音、回复响应
sngrep命令(测试时好用) -- sip呼叫跟踪工具,实时抓取sip信令包
space 选择多条对话打开
F2 保存现有的sip信令包 s
F5 清除现有条目 ctrl+l
F7 筛选 f
r 原文显示交互命令
i 统计invite交互信息
p 暂停、开始抓sip信令
--交互图
space 选择两天信令比较内容
F2 SDP信息
F3 RTP媒体流
c 排序颜色规则
s 合并相同ip。当存在虚拟服务器,导致相同终端ip不一致。相同ip不同端口不适合,代表两个应用
参数用法:
sngrep -d eth0 -O save.pcap port 5060 and udp 抓取sip包输出指定文件
sngrep -I file.pcap host 192.168.1.1 and port 5060 打开sip包文件
-N –no-interface
-c --calls:仅显示邀请消息