如果freeswitch上有一个网关是注册在别的系统或者呼叫中心上的,那么可以通过配置external下的xml文件来实现注册。注册也很简单,可以参考external下的example样例来写。主要也是把realm,username,password等写清楚即可。
如下示例所示一个简单external gateway的注册
<include>
<gateway name="test_user">
<param name="username" value="test_user"/>
<param name="realm" value="sip.example.com"/>
<param name="password" value="123456"/>
<param name="expire-seconds" value="360"/>
</gateway>
</include>
注册流程如下

那么如果新增了opensips这个网关怎么办呢?
基本思想是将freeswitch的注册发送地址改为opensips,然后在opensips修改sip路由,将注册消息转发至真实地址。
注册流程如下

那么现在的注册信息需要改写一下,
<include>
<gateway name="test_user">
<param name="username" value="test_user"/>
<param name="realm" value="opensips.example.com"/>
<param name="from-domain" value="sip.example.com"/>
<param name="password" value="123456"/>
<param name="expire-seconds" value="360"/>
</gateway>
</include>
这里的改动主要有两点:
- realm需要改写为opensips的域名或者地址
- from-domain需要保持真实的域名或者地址,不然注册时会找不到
opensips配置的更改
修改opensips.cfg文件中的路由脚本部分,主要添加一下register消息的处理
if (is_method("REGISTER")) {
xlog("L_INFO", "this is register!!!!!\n");
$rd = 'sip.example.com'; #将route domain修改为真实domain
#$rp = '2102'; # 如果有修改端口的话
}
网友评论