某厂家的话机和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和话机对接的更多相关文章

  1. freeswitch对接其它SIP设备

    这几天用到freeswitch对接其它设备方面的知识,这里整理下,也方便我以后查阅. 操作系统:debian8.5_x64 freeswitch 版本 : 1.6.8 一.freeswitch作为被叫 ...

  2. FreeSWITCH与PSTN对接

    FreeSWITCH与PSTN电话系统对接设定 一.环境介绍 我们目前使用模拟的话机连接到电信运营商,购买他们配套的电话总机,勉强实现了公司的基本通话.但是客户电话总机系统以及升级添加新的应用不但费用 ...

  3. 通过AngularJS实现前端与后台的数据对接(二)——服务(service,$http)篇

    什么是服务? 服务提供了一种能在应用的整个生命周期内保持数据的方法,它能够在控制器之间进行通信,并且能保证数据的一致性. 服务是一个单例对象,在每个应用中只会被实例化一次(被$injector实例化) ...

  4. .NET 对接JAVA 使用Modulus,Exponent RSA 加密

    最近有一个工作是需要把数据用RSA发送给Java 虽然一开始标准公钥 net和Java  RSA填充的一些算法不一样 但是后来这个坑也补的差不多了 具体可以参考 http://www.cnblogs. ...

  5. 通过AngularJS实现前端与后台的数据对接(一)——预备工作篇

    最近,笔者在做一个项目:使用AngularJS,从而实现前端与后台的数据对接.笔者这是第一次做前端与后台的数据对接的工作,因此遇到了许多问题.笔者在这些问题中,总结了一些如何实现前端与后台的数据对接的 ...

  6. 萌新笔记——封装hiredis——C++与redis对接(一)(string的SET与GET操作)

    在菜鸟教程自学了redis,总想着像Mysql一样,在C/C++中进行对接.于是查询了一些资料,最后找到了hiredis.然而直接用它的话,难免有点不方便.于是,对其进行封装. hiredis直接去g ...

  7. spark 2.0 中 pyspark 对接 Ipython

    pyspark 2.0 对接 ipython 在安装spark2.0 后,以往的对接ipython方法失效,会报如下错错误: 因为在spark2.0后对接ipython的方法进行了变更我们只需要在py ...

  8. Web Api 与 Andriod 接口对接开发经验

    最近一直急着在负责弄Asp.Net Web Api 与 Andriod 接口开发的对接工作! 刚听说要用Asp.Net Web Api去跟 Andriod 那端做接口对接工作,自己也是第一次接触Web ...

  9. 【工业串口和网络软件通讯平台(SuperIO)教程】八.SuperIO通讯机制与设备驱动对接的说明

    SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1    通讯机制说明 通讯的总体机制采用呼叫应答方式,就是上位机软件主动发送请求数据命令,下位机终端接 ...

随机推荐

  1. 关于JS中原型链中的prototype与_proto_的个人理解与详细总结

    一直认为原型链太过复杂,尤其看过某图后被绕晕了一整子,今天清理硬盘空间(渣电脑),偶然又看到这图,勾起了点回忆,于是索性复习一下原型链相关的内容,表达能力欠缺逻辑混乱别见怪(为了防止新人__(此处指我 ...

  2. mybatis入门基础----动态SQL

    原文:http://www.cnblogs.com/selene/p/4613035.html 阅读目录 一:动态SQL 二:SQL片段 三:foreach 回到顶部 一:动态SQL 1.1.定义 m ...

  3. 【mybatis】mybatis中update更新原来的值加1

    示例代码: floor的值 = floor原来的值+要更新的差距值 <update id="updateFloor" parameterType="com.pise ...

  4. SpringMVC学习记录(七)--拦截器的使用

    SpringMVC的请求如以下这样的图所看到的: 能够看出全部的请求都要通过Dispatherservlet来接收,然后通过Handlermapping来决定使用哪个控制器,再依据ViewResolv ...

  5. javascript快速入门13--BOM——浏览器对象模型(Browser Object Model)

    什么是BOM? BOM是Browser Object Model的缩写,简称浏览器对象模型 BOM提供了独立于内容而与浏览器窗口进行交互的对象 由于BOM主要用于管理窗口与窗口之间的通讯,因此其核心对 ...

  6. Socket网络通讯开发总结之:Java 与 C进行Socket通讯(转)

    先交待一下业务应用背景:服务端:移动交费系统:基于C语言的Unix系统客户端:增值服务系统:基于Java的软件系统通迅协议:采用TCP/IP协议,使用TCP以异步方式接入数据传输:基于Socket流的 ...

  7. netty handlers模式

    netty的handler模式真的挺方便的,可以像插件一样随意的插入自己新增的功能而不用队系统进行大的变动. 下面我们来看一下这个模式是如何实现和运行的. 待续...

  8. 谋哥:玩App怎么赚钱(三)

    谋哥每天坚持写文章,如今写作速度是越来越快了,当然这样也能节省点时间.只是坚持每天写,确实须要极大的耐力和毅力,由于偶然事件会影响你心情和灵感.只是我一直相信秦刚老师(微信/QQ1111884 )说的 ...

  9. SRS Audio Sandbox没有声音怎么办

    首先介绍下这款软件呵: SRS Audio Sandbox是一款个人电脑终极音频增强软件.该软件可以提供令人叹为观止的环绕音效,重低音效果并且非常清晰,甚至可以用於桌面扬声器.可以作用於个人电脑上的所 ...

  10. js apply和call区别

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...