场景描述

有一个网关,位于nat后面,freeswitch位于公网。
freeswitch如何通过该网关进行外呼?

解决方案

1、内网网关注册到freeswitch,网关使用账号1005注册到freeswitch
2、freeswitch通过如下的拨号方案呼叫:

  1. <extension name="xxx_extension1">
  2. <condition field="destination_number" expression="^(\d{4,15})$">
  3. <action application="export" data="absolute_codec_string=PCMU,PCMA"/>
  4. <action application="bridge" data="{sip_invite_req_uri=sip:$1@${domain}}user/1005@${domain}"/>
  5. </condition>
  6. </extension>


或者通过下面的命令呼叫:

  1. originate {sip_invite_req_uri=sip:18652003060@172.16.167.151}user/1005@172.16.167.151 &echo()

这里核心的地方是:sip_invite_req_uri变量
该变量可以用于修改invite的目的地址。

参考资料

http://freeswitch-users.2379917.n2.nabble.com/Registering-SIP-Trunks-to-Freeswitch-td7582602.html
https://wiki.freeswitch.org/wiki/Variable_sip_invite_req_uri