如何在JsSIP中获取100 Trying、180 Ringing等SIP响应状态码
JsSIP获取100 Trying和180 Ringing状态码的实现方法
1. 实现逻辑
无需手动解析控制台日志提取状态码,JsSIP的RTCSession实例已经封装了对应事件和响应参数,直接绑定事件回调即可获取目标状态码。
2. 代码示例
在你初始化UA、调用呼叫方法得到RTCSession实例后,绑定对应事件即可:
// 初始化UA后发起呼叫,得到session实例 const session = ua.call('被叫号码SIP URI', callOptions); // 监听trying事件,获取100 Trying响应 session.on('trying', (event) => { const statusCode = event.response.status_code; const reason = event.response.reason_phrase; console.log(`收到响应:${statusCode} ${reason}`); // 此处添加100 Trying对应的业务逻辑 }); // 监听progress事件,获取180 Ringing等其他1xx临时响应 session.on('progress', (event) => { const statusCode = event.response.status_code; const reason = event.response.reason_phrase; console.log(`收到响应:${statusCode} ${reason}`); if (statusCode === 180) { // 此处添加180 Ringing对应的业务逻辑 } });
3. 补充说明
- 回调参数中的
event.response是JsSIP封装的标准SIP响应对象,status_code属性为数值类型的状态码,reason_phrase为状态描述文本。 - 如果你确实需要手动解析原始SIP报文,直接取SIP报文第一行按空格分割后的第二个元素即可,比如原始行
SIP/2.0 100 Trying分割后索引为1的元素就是100。
内容的提问来源于stack exchange,提问作者kevin ladani
相关产品推荐
相关产品推荐

