IPBX和话机对接
某厂家的话机和IPBX进行对接问题:
1. 该话机作为主叫方,呼叫能够正常建立
2. 该话机作为被叫方。呼叫无法建立,IPBX发送INVITE消息给该话机,该话机回复400
具体消息例如以下:
IPBX->P1
INVITEsip:302@172.16.251.157 SIP/2.0
Via:SIP/2.0/UDP 172.16.250.127:5060;branch=4694cb8a
From:"301" <sip:301@172.16.250.127>;tag=288bc0ba
Contact:<sip:301@172.16.250.127:5060>
To:<sip:302@172.16.251.157>
Call-ID:14391754550e6c0a8658dc0efb4864da89@7ffa10ac
CSeq:2200 INVITE
Max-Forwards:70
Content-Type:application/sdp
Content-Length:319
v=0
o=root1184156554 1184156554 IN IP4 172.16.250.127
s=session
c=IN IP4172.16.250.127
t=0 0
m=audio25118 RTP/AVP 0 8 18 101
a=rtpmap:0PCMU/8000
a=rtpmap:8PCMA/8000
a=rtpmap:18G729/8000
a=rtpmap:101telephone-event/8000
a=fmtp:1010-15
P1->IPBX
SIP/2.0 400 Bad Request
Via: SIP/2.0/UDP 172.16.250.127:5060;branch=4694cb8a
From: "301"<sip:301@172.16.250.127>;tag=288bc0ba
Contact:<sip:301@172.16.250.127:5060>
To: <sip:302@172.16.251.157>
Call-ID:14391754550e6c0a8658dc0efb4864da89@7ffa10ac
CSeq: 2200 INVITE
Max-Forwards: 70
Content-Type: application/sdp
Content-Length: 319
v=0
o=root 1184156554 1184156554 IN IP4172.16.250.127
s=session
c=IN IP4 172.16.250.127
t=0 0
m=audio 25118 RTP/AVP 0 8 18 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
依据如上消息进行分析branch=4694cb8a没有添加z9hG4bK值(该值的添加设置到事物的处理详见事物处理),因此推断IPBX支持的是RFC2543协议,话机支持的是RFC3261协议。
具体处理过程例如以下:
1. 依据上述的分析,查看话机是否支持RFC2543协议
2. 查看话机配置页,发现有RFC2543和RFC3261协议选项,因此,选择RFC2543重新启动话机
3. 话机重新启动后。发现作为被叫呼叫还是建立不起来
4. 在IPBX上的branch简单添加z9hG4bK值后,呼叫正常建立
5. 从以上分析发现,该厂商的话机仅仅是简单的推断branch中是否存在z9hG4bK值,没有严格的依照RFC3261协议中的事物来进行处理
6. 到此。和该话机对接成功。成功的消息详见以下
IPBX->P1
INVITE sip:8501@172.16.251.157:5060 SIP/2.0
Via: SIP/2.0/UDP172.16.250.191:5060;branch=z9hG4bK1c1ac64a;rport
Max-Forwards: 70
From: " 8500"<sip:8500@172.16.250.191>;tag=as76dfef91
To: <sip:8501@172.16.251.157:5060>
Contact:<sip:8500@172.16.250.191:5060>
Call-ID: 4b99a0636512f93430c4e9dd58fa9832@172.16.250.191:5060
CSeq: 102 INVITE
Content-Type: application/sdp
Content-Length: 233
v=0
o=root 628132733 628132733 IN IP4172.16.250.191
s=BPBX 2.0.0.0
c=IN IP4 172.16.250.191
t=0 0
m=audio 18088 RTP/AVP 8 101
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
P1->IPBX
SIP/2.0 200 OK
Via: SIP/2.0/UDP172.16.250.191:5060;branch=z9hG4bK1c1ac64a;rport
From: " 8500"<sip:8500@172.16.250.191>;tag=as76dfef91
To:<sip:8501@172.16.251.157:5060>;tag=169336615
Call-ID: 4b99a0636512f93430c4e9dd58fa9832@172.16.250.191:5060
CSeq: 102 INVITE
Contact:<sip:8501@172.16.251.157:5060>
Content-Type: application/sdp
Content-Length: 217
v=0
o=802 30033847 10069422 IN IP4172.16.251.157
s=AC
c=IN IP4 172.16.251.157
t=0 0
m=audio 10028 RTP/AVP 8 101
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=ptime:20
a=sendrecv
IPBX和话机对接的更多相关文章
- freeswitch对接其它SIP设备
这几天用到freeswitch对接其它设备方面的知识,这里整理下,也方便我以后查阅. 操作系统:debian8.5_x64 freeswitch 版本 : 1.6.8 一.freeswitch作为被叫 ...
- FreeSWITCH与PSTN对接
FreeSWITCH与PSTN电话系统对接设定 一.环境介绍 我们目前使用模拟的话机连接到电信运营商,购买他们配套的电话总机,勉强实现了公司的基本通话.但是客户电话总机系统以及升级添加新的应用不但费用 ...
- 通过AngularJS实现前端与后台的数据对接(二)——服务(service,$http)篇
什么是服务? 服务提供了一种能在应用的整个生命周期内保持数据的方法,它能够在控制器之间进行通信,并且能保证数据的一致性. 服务是一个单例对象,在每个应用中只会被实例化一次(被$injector实例化) ...
- .NET 对接JAVA 使用Modulus,Exponent RSA 加密
最近有一个工作是需要把数据用RSA发送给Java 虽然一开始标准公钥 net和Java RSA填充的一些算法不一样 但是后来这个坑也补的差不多了 具体可以参考 http://www.cnblogs. ...
- 通过AngularJS实现前端与后台的数据对接(一)——预备工作篇
最近,笔者在做一个项目:使用AngularJS,从而实现前端与后台的数据对接.笔者这是第一次做前端与后台的数据对接的工作,因此遇到了许多问题.笔者在这些问题中,总结了一些如何实现前端与后台的数据对接的 ...
- 萌新笔记——封装hiredis——C++与redis对接(一)(string的SET与GET操作)
在菜鸟教程自学了redis,总想着像Mysql一样,在C/C++中进行对接.于是查询了一些资料,最后找到了hiredis.然而直接用它的话,难免有点不方便.于是,对其进行封装. hiredis直接去g ...
- spark 2.0 中 pyspark 对接 Ipython
pyspark 2.0 对接 ipython 在安装spark2.0 后,以往的对接ipython方法失效,会报如下错错误: 因为在spark2.0后对接ipython的方法进行了变更我们只需要在py ...
- Web Api 与 Andriod 接口对接开发经验
最近一直急着在负责弄Asp.Net Web Api 与 Andriod 接口开发的对接工作! 刚听说要用Asp.Net Web Api去跟 Andriod 那端做接口对接工作,自己也是第一次接触Web ...
- 【工业串口和网络软件通讯平台(SuperIO)教程】八.SuperIO通讯机制与设备驱动对接的说明
SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1 通讯机制说明 通讯的总体机制采用呼叫应答方式,就是上位机软件主动发送请求数据命令,下位机终端接 ...
随机推荐
- 工作流Activiti新手入门学习路线整理
写在前面: 最近项目中使用到了工作流,虽然此部分不是自己需要完成的,但是也涉及到了要调用写的接口.正好有时间,就了解下,以便之后能在其他项目中用到时,不至于什么都不知道什么都不了解. 这里就主要整理下 ...
- EditText中禁止输入中文的方法
应用场景 在Android应用中有时需要EditText中只允许输入约定的一些字符,禁止输入其他字符.这里列举了一些可能的应用场景. 1. 场景一 在通讯录保存好友信息界面中填写好友的电话号码时,应当 ...
- CSS3:图片水平垂直居中
加上这两个就行 display:-webkit-box; 显示成盒子模式 -webkit-box-align:center; 垂直居中 -webkit-box-pack:center; ...
- WebLogic MBean Monitor
weblogic server提供了一个dashboard让我们对mbean进行图形化的展现和分析,地址是 http://localhost:7001/console/dashboard 但有时候总是 ...
- mac 安装PyQt5
PyQt5官方安装教程指出2种安装方法: Installing from Wheels Building and Installing from Source 网上搜罗的大多是按照第二种方法安装的,本 ...
- 接入WebSocket记录 + 一些个人经验
闲扯 WebSocket 以前没用过,之前写过一篇博客是基于原生socket的(查看)比较复杂,慎入.今天另外一个APP需要接websocket了,然后便找到了facebook的 SocketRock ...
- unity 的视锥剔除和遮挡剔除
Regular frustum culling only renders objects within the camera’s view. This is automatic and always ...
- 算法导论-求(Fibonacci)斐波那契数列算法对比
目录 1.斐波那契数列(Fibonacci)介绍 2.朴素递归算法(Naive recursive algorithm) 3.朴素递归平方算法(Naive recursive squaring) 4 ...
- Android项目总结
功能: 1.图片载入 ImageLoader 參数配置要合理 cacheMemory 一次性的图片最好不要缓存在内存中 合理控制在内存中的内存大小 ,适当的释放 volley是googl ...
- 深入浅出理解之 onInterceptTouchEvent与onTouchEvent
参考:http://blog.csdn.net/android_tutor/article/details/7193090 与 http://www.cnblogs.com/kingcent/ ...