OpenSIPS替代VOS3000的方案

写在前面

    最近一直在做人工智能呼叫的业务,也使用过VOS3000,主要好处是功能稳定。坏处就是不好和自己的系统集成,再者是收费,并发大了收费也不低。

需要解决的问题

  1. 网关可以通过创建
  2. 主叫号码路由到网关的端口,默认一对一路由
  3. 物理网关的路由配置一键下发(和网关开发企业匹配)
  4. 网关的端口的实时监控(卡有没有插,是否异常,是否欠费)

解决方法(先解决网关注册到opensips平台,后续继续添加)

每一个主叫号码都有应该有路由方式和路由地址,路由地址可以是网关,或者一个IP地址,所以在subscriber表格增加两个列,如下图

subscriber表格

这样的情况下,只要修改数据库,就可以实时对主叫和网关进行路由,我们外呼主要是动态分配主叫号码。对应着OpenSIPS,我们开发了一个配置服务器,所有的路由关系,通过前端可以查看。

这部分的opensips.cfg的配置:

加载subscriber表中的对应配置
####  auth_db
loadmodule "auth.so"
loadmodule "auth_db.so"
modparam("auth_db", "load_credentials", "$avp(route_type)=route_type; $avp(route_dest)=route_dest")

###呼叫的主要脚本,其他的就不贴了
# account only INVITEs
if (is_method("INVITE")) {

        if (!www_authorize("", "subscriber"))
        {
            	www_challenge("", "0");
            	exit;
        }

	do_accounting("db|log", "cdr|missed");

	xlog("L_INFO", "get avp type: $avp(route_type) , avp route dest: $avp(route_dest)");

        #route the register
        if ($avp(route_type) == 1){

            	$avp(old_rU) = $rU;
            	$rU = $avp(route_dest);
            	xlog("L_ERR", "invite get route_type==1, rU: $rU , old_rU:$avp(old_rU), avp dest: $avp(route_dest)");

            	lookup("location");
            	switch ($retcode) {
                	case -1:
                	case -3:
                    		sl_send_reply("404", "Not Found");
                    		exit;
                	case -2:
                    		sl_send_reply("405", "Not Found");
                    		exit;
                };

            	$rU = $avp(old_rU);
        }

}

通过阅读源码发现:www_authorize方法调用时,会把route_type和route_dest放在avp键值对里面。 收到一路呼叫,根据路由类型route_type,如果是类型1的话,路由到另一个注册网关上,通过location获取对应的公网IP+port,修改了ruri,实现了重定向到网关的地址。

网关方面:

收到了一个 18958022872 @ voip.dasxxx.com的sip信令,To的头域名:也包含18958022872的被叫。网关收到之后,根据网关的配置和主叫路由,通过指定的端口呼叫出去,这样就完成了一次路由。

转载于:https://my.oschina.net/andywang1988/blog/2989332

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值