FreeSWITCH动态更改网关中的sip_from_user

笔者在FreeSWITCH中有一个网关配置:

<include>
  <gateway name="pstn">
     <param name="realm" value="10.18.2.18"/>
     <param name="register" value="false"/>
     <param name="username" value="022xxxxxxxx"/>
  </gateway>
</include>

这个网关是用来外呼的,realm里的IP是OpenSIPS的havip,FreeSWITCH将外呼路由到OpenSIPS,由其中继到运营商。username是向运营商申请的固话号码。

现在由于业务上的需求,我们有多个固话号码,给不同的APP使用,所以在这里不能hard code 022xxxxxxxx,需要根据外呼APP的不同动态改变。

外呼是由OpenSIPS通过ESL发起的,命令如下:

bgapi originate {origination_caller_id_number=010xxxxxxx}sofia/gateway/pstn/a1%s xxxxxxx XML public

然而这个新号码010xxxxxxxx并没有生效,INVITE里的from user仍然是022xxxxxxxx(如果网关配置里去掉username,那么from user就是代码里hard code的"FreeSWITCH")。

吐槽下网上FS的讨论真的很少,自己追了下FreeSWITCH的代码,终于发现网关配置里要把caller-id-in-from设置为true,这样sofia模块在创建channel的时候,就不会用网关配置里的from-user了,而是用通道变量设置的from user(见mod_sofia.c的sofia_outgoing_channel函数)。

最终网关配置如下:

<include>
  <gateway name="pstn">
     <param name="realm" value="10.18.2.18"/>
     <param name="register" value="false"/>
     <param name="caller-id-in-from" value="true"/>
  </gateway>
</include>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值