FREESWITCH和SIP.JS进行参数传递

您所在的位置:网站首页 sipjs设置ice超时 FREESWITCH和SIP.JS进行参数传递

FREESWITCH和SIP.JS进行参数传递

2023-09-28 16:56| 来源: 网络整理| 查看: 265

FREESWITCH和SIP.JS进行参数传递

之前,一直遇到一个问题,困扰了很久,就是在freeswitch的dialplan中定义了许多业务需要的通道变量,但是不知道该如何用freeswitch将这些变量传递给sip.js,所以后续业务处理起来很麻烦. 通过查看freeswitch官方文档以及百度,总算找到了解决方案.

FREESWITCH通道变量

添加请求标头

您可以通过将字符串’sip_h_'添加到任何通道变量前面来向出站SIP调用添加任意标头,例如:

请注意,对于BYE请求,您需要在通道变量上使用前缀’sip_bye_h_’。

虽然不是必需的,但您应在标头前加上“X-”,以避免与其他SIP堆栈的互操作性问题。 所有入站SIP调用都会将任何X-header安装到本地变量中。 这意味着您可以轻松地将任何X-header从一个FreeSWITCH实例桥接到另一个。 要在第二个框中访问上面的标题,请使用频道变量$ {sip_h_X-Answer} 请务必注意,语法$ {sip_h_custom-header}不能用于检索任何不以X-开头的自定义标头。 这是因为Sofia只读取并放入以X-开头的变量自定义标题。

添加响应标头 可以设置三种类型的响应头前缀:

响应头(Response header) sip_rh_

临时响应标头(Provisional response header) sip_ph_

再见响应头(Bye response header) sip_bye_h_

每个前缀将专门为其给定类型的请求添加标头 - 没有“全局”响应标头前缀,它将为所有响应消息添加标头。例如:

sip.js传递参数到freeswitch

sip.js UA的invite方法的附加参数 extraHeaders参数,接收一个Array(String),我们需要传递到后台的参数需要放到此参数中. 格式是固定的,必须以X-为前缀,示例:X-MY-FOO: IMSBSMY,在freeswitch中获取时以${variable_sip_h_X-MY-FOO}去获取值.

sip.js部分代码 var number = document.getElementById("number").value; //创建一个新的出站(用户代理客户端)会话 session = ua.invite(number, { sessionDescriptionHandlerOptions: { constraints: { audio: true, video: false }, alwaysAcquireMediaFirst: true // 此参数是sip.js官方修复在firefox遇到的bug所设置 }, extraHeaders: [ 'X-MY-FOO: IMSBSMY', 'X-MY-BAR: 456789' ] }); //开始振铃 Ring.startRingbackTone(); freeswitch dialplan 部分代码

我们将呼叫 test1000,即可进入上面的dialplan中,打开fs控制台,可以观察到如下信息 在这里插入图片描述

freeswitch传递参数到sip.js

sip.js部分代码

ua.on('invite', function (session) { console.error(session.request.headers); console.error(session.request.getHeader("X-TASK-ID")); // 开始振铃 Ring.startRingTone(); var url = session.remoteIdentity.uri.toString() + "来电了,是否接听"; ...... ...... })

fs控制台执行的指令 originate {sip_h_X-TASK-ID=12345}user/admin12 &echo FS添加请求头的时候规定了必须以sip_h_X-为前缀,在前台获取时,从session.request.headers中获取,也可以使用session.request.getHeader("X-TASK-ID")方法获取,建议查看sip.js官方文档.

chrome控制台日志如下: 红色框中的即为fs传递来的自定义参数 在这里插入图片描述

参考 https://freeswitch.org/confluence/display/FREESWITCH/Sofia+SIP+Stackhttps://www.sipjs.com/api/0.13.0/sipMessage/


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3