freeswitch配置SIP网关拨打外部电话

Song5454 次浏览0个评论2018年07月01日

如果你拥有某个运营商提供的SIP账号,那么你就可以通过配置SIP来拨打外部电话了。该SIP账号(或提供该账号的设备)在FreeSWITCH中称为SIP网关(Gateway)。添加一个网关只需要在conf/sip_profiles/external/中创建一个XML文件,名字可以随便起,如gw1.xml,然后在该文件中输入如下代码:

<gateway name="gw1">
    <param name="realm" value="SIP
服务器地址,可以是IP
或IP:
端口号"/>
    <param name="username" value="SIP
用户名"/>
    <param name="password" value="
密码"/>
</gateway>

如果你的SIP网关还需要其他参数,可以参阅同目录下的example.xml,但一般来说上述参数就够了。你可以重启FreeSWITCH,或者执行以下命令使用之生效:

freeswitch> sofia profile external rescan

显示一下网关的注册状态:

freeswitch> sofia status

如果显示gateway gw1的状态是REGED,则表明已正确地注册到了网关上。

freeswitch> originate sofia/gateway/goip08/*** &echo
freeswitch> originate user/1000 &hold

以上命令会通过网关gw1呼叫号码xxxxxx(可能是你的手机号),被叫号码接听电话后,FreeSWITCH会执行echo程序,你应该就能听到自己的回音了。

1、从某一分机上呼出

如果网关测试正常,你就可以配置从你的SIP软电话或portaudio呼出了。由于我们是把FreeSWITCH当作PBX用,所以需要选一个出局字冠。常见的PBX一般是内部拨小号,打外部电话就需要加拨0或先拨9。当然,这是你自己的交换机,你可以用任何你喜欢的数字(甚至是字母)。继续修改拨号计划,创建一个新的XML文件——conf/dialplan/default/call_out.xml,内容如下:

<include>
  <extension name="call out">
    <condition field="destination_number" expression="^0(\d+)$">
      <action application="bridge" data="sofia/gateway/gw1/$1"/>
    </condition>
  </extension>
</include>

其中,“^0(\d+)$”为正则表达式,“(\d+)”匹配0后面的所有数字并存到变量$1中。然后通过bridge程序通过网关gw1打出该号码。当然,建立该XML后需要在控制台中执行reloadxml使之生效。

2、呼入电话处理

如果你的SIP网关支持DID,那么你需要知道呼入的DID号码。一般来说,呼入的DID就是你的SIP号码,如果你不知道,也没关系,学习完第6章你就能学到如何取得这个值了。创建以下XML文件并放到conf/dialplan/public/my_did.xml中:

<include>
  <extension name="public_did">
    <condition field="destination_number" expression="^(你的DID)$">
      <action application="transfer" data="1000 XML default"/>
    </condition>
  </extension>
</include>

在FreeSWITCH中执行reloadxml使之生效。上述配置会将来话直接转接到分机1000上。在后面的章节中你会学到如何更灵活地处理呼入电话,如转接到语音菜单或语音信箱等。

提交评论

请登录后评论

用户评论

    当前暂无评价,快来发表您的观点吧...

更多相关好文

    当前暂无更多相关好文推荐...