基于OpenSIPS做注册服务下,场景A打B,一方发起BYE挂断后收到500,另一方无法挂断的问题
- A打B,电话接通后,持续通过话5分钟后,任意一方挂断电话,另一方无法正常挂断,另一方电话始终显示正在通话中。
- 如果通话时长在4分钟以内,任何一方挂断,则另一方都能正常结束。
- OpenSIPs为分机提供注册服务
- OpenSIPs为FreeSWITCH提供Load balance服务,将电话转接至相应FreeSWITCH
- OpenSIPs为FreeSWITCH提供Gateway服务
- 通过抓包分析,发现主被叫任意一方挂断后,FS收到bye后,直接回给OpenSIPS 500 (Internal Server Error), 而导致OpenSIPS没能将bye信号发给另一方电话终端
- OpenSIPS 给FS和电话终端发OPTIONS检测会话状态只发4分钟后,就不再发了,并且主被双方可以继续通话
- 如果OpenSIPS关闭掉对FS的dialog会话OPTIONS检测,FS收到BYE后,能转发到另一方电话终端,但终端会返回500
- 四分之内正常挂断的BYE报文,跟超过4分钟无法挂断的BYE报文构造形式完全相同

loadmodule "dialog.so"
modparam("dialog", "db_mode", 1)
modparam("dialog", "dlg_match_mode", 1)
modparam("dialog", "default_timeout", 10800) # 3 hours timeout 【正确配置】
#modparam("dialog", "default_timeout", 240) # 4 mins 【错误配置 :如果使用了create_dialog("Pp"),当一同电话超过 default_timout + options_pint_interval ,就会出现终端返回500】
modparam("dialog", "profiles_with_value", "caller ; callee")
modparam("dialog", "options_ping_interval", 60) # 1 minu route{
if (is_method("INVITE")) {
if ( !create_dialog("Pp") ) { # 对OpenSIPS上进出两个dialog(如主/被叫)都进行OPTIONS探测
xlog("create_dialog error : Internal Server Error");
send_reply("500","Internal Server Error");
exit();
}
}
}
基于OpenSIPS做注册服务下,场景A打B,一方发起BYE挂断后收到500,另一方无法挂断的问题的更多相关文章
- 基于LadybugFlow的微服务编排(1.SpringBoot集成)
前言 前面的系列文章里,介绍了ladybugflow的业务可视化的设计以及常见场景的使用方法. 感谢大家对项目的关注. 本篇文章介绍一下基于ladybugflow的微服务编排场景及使用方法. 1. 业 ...
- 基于OpenSIPS 实现分机注册服务服务器
呼叫中心平台中坐席是不可或缺的一环,而坐席打电话自然需要使用办公分机.通常情况下我们通过软交换平台FreeSWITCH.Asterisk即可搭建分机注册服务. 但单台FreeSWITCH或Asteri ...
- 一个故事,一段代码告诉你如何使用不同语言(Golang&C#)提供相同的能力基于Consul做服务注册与发现
目录 引言 什么是微服务 传统服务 微服务 什么是服务注册与服务发现 为什么要使用不同的语言提供相同的服务能力 服务协调器 服务注册 Golang C#(.NetCore3.1) 服务发现 通过Htt ...
- 用Nacos做微服务架构里的服务注册与发现中心
转自:https://www.jianshu.com/p/61608ff86344 Nacos 另一个非常重要的特性就是服务注册与发现,说到服务的注册与发现相信大家应该都不陌生,在微服务盛行的今天,服 ...
- mormort 土拨鼠,做后端服务那是杠杠的,基于http.sys
http.sys你可以用 mormort 土拨鼠,做后端服务那是杠杠的,基于http.sys并且还是开源的,作者天天更新代码,非常勤奋,官方论坛提问,回答也快其实,稍微看看,就能玩的挺好的
- windows下consul利用json文件注册服务
windows下,以开发模式启动consul命令 consul agent -dev -config-dir=D:\tools\consul 人工注册服务,新建一个json文件 ,放到D:\tools ...
- 转载:ubuntu下编译安装nginx及注册服务
原文地址:https://www.cnblogs.com/EasonJim/p/7806879.html 安装gcc g++的依赖库 sudo apt-get install build-essent ...
- 手把手教你写一个windows服务 【基于.net】 附实用小工具{注册服务/开启服务/停止服务/删除服务}
1,本文适用范围 语言:.net 服务类型:windows服务,隔一段时间执行 2,服务搭建: 1,在vs中创建 console程序 2,在console项目所在类库右键 添加-新建项-选择Windo ...
- maven小项目注册服务(一)--email和persist模块
跟着书里的讲解,跟着做了一遍该项目: 首先明白注册账户的需求: 账号的lD和Email地址都可以用来唯一地标识某个用户,而显示名称则用来显示在页面下,方便浏览.注册的时候用户还需要输入两次密码,以确保 ...
随机推荐
- Json对象,Json数组,Json字符串的区别
Json对象: var str = {"姓名":"张三","性别":"男","年龄":"2 ...
- day6 python while,for 循环控制
1.1双向循环控制流程 i = 0 while i > 10: #外层循环 j = 10 while j < 0: #内层循环 j -= 1 i += 1 1.1.1 双向循环练习---- ...
- 我一天的工作,同事一个小时就做完了?python的应用
" ONE " 众所周知,现在很多行业,都离不开用Excel: 做财务的,要用Excel做报表: 做物流的,会用Excel来跟踪订单情况: 做HR的,会用Excel算工资: 做 ...
- Active Directory - Right Delegation and Audit
Delegate proper right to some user: Login/Logout Audit - GPO Setting - Event Viewer File Auditing M ...
- 程序员为什么要使用Markdown
为什么要学习markdown? 一个让你难以拒绝的理由:markdown可以让你养成了记录的习惯. 我自从使用了markdown之后,就喜欢了写文档,记录工作日志,记录周会,记录季度计划,记录学习目标 ...
- python中if及if-else如何使用
if 结构 if 结构允许程序做出选择,并根据不同的情况执行不同的操作 基本用法 比较运算符 根据 PEP 8 标准,比较运算符两侧应该各有一个空格,比如:5 == 3. PEP8 标准 ==(相等) ...
- vue------反响代理
//测试项目 https://i.cnblogs.com/Files.aspx
- Docker 入门教程(2)——image与container
image镜像 Definition of: image Docker images are the basis of containers. An Image is an ordered colle ...
- 任务调度中心xxl-job对外接口使用
xxl-job主要分为调度中心和执行器提供了图像化界面,操作简单上手快,基本实现定时任务自动执行,同时可以针对任务日志进行查看.具体xxl-job可以再github上下载:https://github ...
- ElasticSearch(一)概念介绍及环境搭建
一.什么是ElasticSearch: Elasticsearch (ES)是一个基于Lucene构建的开源.分布式.RESTful 接口全文搜索引擎.Elasticsearch 还是一个分布式文档数 ...