首先freeswicth中有全局变量和局部变量的区别,使用X-PRE-PROCESS定义的为全局变量,在拨号计划中定义的往往是局部变量,查看FreeSWITCH\conf\var.xml中有很多X-PRE-PROCESS定义的全局变量,但是freswicth会默认在系统中生成一些全局变量分别为hostname、local_ip_v4、local_ip_v6、local_mask_v4、swicth_serial。
<X-PRE-PROCESS cmd="set" data="default_password=2345"/>
如果本地计算机有两个或多个网卡,在启动freeswicth的时候会随机选择某个,我这里有时候会使用192...内网地址,有时候会使用138...外网地址,asterisk部署在内网如果freeswicth使用外网地址就没办法代理到asterisk。
指定某一个网卡,首先在var.xml中定义一个全局变量同时将var.xml中的domain改为192.168.11.110,这里是指定freeswicth开启的服务域名
<X-PRE-PROCESS cmd="set" data="domain=192.168.11.110"/>
<X-PRE-PROCESS cmd="set" data="net_work=192.168.11.110"/>
然后分别将conf\sip_profiles\internal.xml和conf\sip_profiles\external.xml中的local_ip_v4改为var.xml中定义的全局变量net_work
<param name="rtp-ip" value="$${net_work}"/>
<param name="sip-ip" value="$${net_work}"/>