Tag

sip调试 归档 - 呼叫中心,呼叫中心系统,云通讯平台,asterisk 呼叫中心

常见的 SIP中继外呼失败原因 及解决办法

By | VoIP技术 | No Comments

SIP中继外呼失败原因 及解决办法

在asterCC系统中,配置外呼中继最简单的配置方法是将该中继分配给一个团队,这样该团队所有的对外呼叫都会被默认经由此中继外呼,如图:

配置完成后,使用软电话注册一个该团队下的分机,就可以进行外呼测试了。

问题一: 外呼振铃后, 电话一接听即挂断(SIP错误 488 )

问题现象

电话外呼后被叫号码会振铃,但是当接通时,通话挂断.

SIP错误代码

当使用抓包工具时可以看到错误编码为 488 not acceptable here

SIP/2.0 488 Not acceptable here
Via: SIP/2.0/UDP 192.168.0.57:5060;branch=z9hG4bK644461b7;received=192.168.0.57;rport=5060
From: "aziz" <sip:157@192.168.0.254>;tag=350164683297
To: "Alice" <sip:57@192.168.0.254:5060>;tag=as3f160681
Call-ID: 728007708208@192.168.0.57
CSeq: 2 INVITE
Server: FPBX-2.8.1(1.8.11.0)
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
Content-Length: 0

 

问题原因

一般由于电话编码和中继编码不匹配,且系统无法进行编码转换的原因造成。

解决办法

检查终端,系统,中继三者是否设定了相同的语音编码,如果没有,则需要确认系统有语音编码转换功能.

问题二: 无法外呼 (SIP 错误 404)

问题现象

电话无法外呼

SIP错误代码

当使用抓包工具时可以看到错误编码为 404 Not Found

SIP/2.0 404 Not Found
Via: SIP/2.0/UDP 192.168.1.5:5060;branch=z9hG4bK-u2p6nv;rport
Record-Route: <sip:siproxd@192.168.1.1:5060;lr>
From: "Ticket1" <sip:000000@173.234.33.58>;tag=xm2wi9
To: "11" <sip:11@173.234.33.58;user=phone>;tag=18412430722368
Call-ID: k39e75bxg5
CSeq: 18331 INVITE
Content-Length: 0

问题原因

一般原因是被叫号码格式错误

解决办法

请确保被叫号码格式是中继指定的格式,部分中继会要求设定号码前缀等.

问题三: 无法外呼 (SIP 错误 500 或 603 )

问题现象

电话无法外呼

SIP错误代码

当使用抓包工具时可以看到错误编码为 500 Internal Error 或者 603 Decline

问题原因

一般原因是验证错误

解决办法

确保使用了正确的用户名密码, 部分中继要求使用特定的 SIP From Header 请阅读 网路中继教程之-asterisk-sip中继配置 , 或者 要求使用指定的主叫号码 主叫号码callerid的管理 .

问题四: 无法外呼 (SIP 错误 408 )

问题现象

电话无法外呼

SIP错误代码

当使用抓包工具时可以看到错误编码为 408 Timeout

问题原因

电话无法连接到系统或者系统无法连接到对方网络

解决办法

  • 确定电话正确配置,即软电话能够正常注册到asterisk/astercc服务器
    • 当使用非标准端口时,注册地址需要填写端口号码,例如 sip.astercc.org:8060
  • 确定电话请求可以抵达服务器
  • 确定服务器中继配置使用了正确的ip地址和端口

问题五: 呼入错误

问题现象

拨打系统上的DID号码后,没有反应或者直接被挂断

问题原因

中继没有正确的注册

解决办法

  • 如果是中继注册,请确认已将系统公网IP和端口提供给供应商 并且对方已经正确配置
  • 如果是用户名密码注册, 请确认填写了正确的注册串 阅读 网路中继教程之-asterisk-sip中继配置

VoIP调试 使用tcpdump和wireshark调试VoIP通话

By | VoIP技术, 呼叫中心使用技巧 | No Comments

VoIP调试

之前的 如何利用ngrep调试sip系统 适用于SIP包的快速分析,有些情况下系统环境比较复杂,我们希望能获取完整的通话信息(SIP+RTP,即完整的语音通话),这时我们可以使用tcpdump获取网络数据,使用wireshark进行进一步分析。

tcpdump

安装

yum install -y tcpdump

命令基本格式如下

tcpdump -i  -s 65535 -w

例如

tcpdump -i any -s 65535 -w internal.pcap

表示将任意网络接口收到的包保存到internal.pcap文件

 

tcpdump voip调试

开始tcpdump抓包

命令执行后系统会停在这里,这时候我们可以打一个电话,然后使用Ctrl+c结束

tcpdump voip调试

中断tcpdump抓包

tcpdump会输出一些抓包的信息,这样tcpdump的使命就完成了,下载pcap文件,轮到wireshark出场了。

Wireshark

wireshark可以从http://www.wireshark.org/download.html下载,安装完毕后,运行wireshark,打开下载到的internal.pcap文件

wireshark VoIP调试

wireshark中查看VoIP通话

 

这里我们可以看到tcpdump抓到了各式各样的包,使用Telephony下的VoIP Calls,系统会自动归纳总结期间的通话, 便于进一步完成VoIP调试.

wireshark VoIP调试

wireshark中选择要查看的VoIP通话

选取一个通话,点击Flow按钮,wireshark会使用一个图形来表示参与通话的地址,点击相应的步骤,我们可以看到对应的IP包信息

wireshark VoIP调试

wireshark中查看VoIP通话的SIP流程

 

对于包含RTP语音的通话,点击 Player 按钮,我们还可以试着收听通话内容

wireshark VoIP调试

Wireshark 解码VoIP通话中的RTP流

 

对于G711编码的通话,wireshark自带解码器,点击 Play 按钮进行播放。在这个图中我们有三段RTP,我们可以分别收听,合成起来就是一个正常的通话了

wireshark VoIP调试

Wireshark 播放VoIP通话

sip调试 使用ngrep进行快速SIP包分析

By | VoIP技术, 呼叫中心使用技巧 | No Comments

sip调试

asterCC呼叫中心系统是一个基于SIP通信的系统,与传统的电话系统相比,语音的传送基于IP网络,因此学会如何调试VoIP通信是网络管理员们必须掌握的技能之一。这里我们会逐步介绍一些VoIP调试工具,希望能够帮助大家更好的设计、维护语音通信和呼叫中心系统。

什么是ngrep

ngrep是网络版的grep,用于从网络中过滤特定的信息,这里我们学习如何利用ngrep来调试SIP系统。

ngrep安装

yum install -y ngrep
对于sip 最常用的命令格式为
ngrep -dany -qWbyline "" port 5060
ngrep_any

ngrep sip调试

这个命令会输出到达该服务器5060端口的所有包,5060为sip的默认端口,这样所有sip包都会输出到屏幕
如果我们想看来自/发送到服务器astercc.org的包,命令为
ngrep -dany -qWbyline "" port 5060 and host astercc.org
ngrep_astercc

ngrep sip调试

我们也可以使用正则表达式来过滤特定的信息,例如我想看来自分机astercc-1000的包
ngrep -dany -qWbyline "astercc-1000" port 5060 and host astercc.org
使用ngrep过滤信息时可以使用正则表达式,例如只想看到SIP REGISTER包
ngrep -deth0 -qWbyline "^REGISTER" port 5060

其中 ^REGISTER 表示以REGISTER开头的包

我们也可以指定对某个网卡(eth0)进行查询 例如
ngrep -deth0 -qWbyline "astercc-1000" port 5060
 注意ngrep抓包的优先级高于iptables防火墙,如果ngrep中看到有包但是asterisk中看不到,则说明是iptables阻挡,需要检查iptables设置 [] [/]
使用ngrep我们也可以将输出保存到指定的文件,命令格式为
ngrep -W byline -d eth0 port 5060 -O capture_file
其他两个参数包括
  • -t : 以 年/月/日 的格式显示每个包的时间戳
  • -T: 以 +S.UUUUUU 的格式打印时间,用于表示两个包之间的时差

asterisk中的Sip调试

asterisk中查看sip包的方法为,登陆到linux系统,连接到asterisk控制台
asterisk -r
开启sip调试模式
sip set debug on
asterisk_sip_debug

asterisk sip调试

查看指定ip
sip set debug ip 76.68.146.197
关闭sip调试模式
sip set debug off
asterisk_sip_debug_off

asterisk sip调试

总结

ngrep命令使用方便,能够帮助我们快速定位问题,实际上ngrep不仅能够应用于sip协议,能够适用于任何明文传送的网络数据。

索克维尔旗下产品 · CXMind AI联络中心 · WCC全渠道联络中心