Freeswitch新增网关
本文介绍认证模式网关配置
配置demo如下,文件存放路径/freeswitch/conf/sip_profiles/external/gw01.xml:
1 <include> 2 <gateway name="gw01"> 3 <param name="username" value="10000"/> 4 <param name="realm" value="ims.domain.com"/> 5 <param name="from-domain" value="ims.domain.com"/> 6 <param name="from-user" value="10000"/> 7 <param name="password" value="66771"/> 8 <param name="outbound-proxy" value="172.10.16.168:5060"/> 9 <param name="register-proxy" value="172.10.16.168:5060"/> 10 <param name="expire-seconds" value="60"/> 11 <param name="register" value="true"/> 12 <param name="ping" value="10"/> 13 </gateway> 14 </include>
配置说明如下:
1 <gateways> 2 <!-- 网关名称,建议使用代表性的名称 --> 3 <gateway name="test"/> 4 <!-- realm:对接方的域名或ip加端口的形式,如 81.70.88.88:9060 --> 5 <param name="realm" value="www.example.com"/> 6 <!-- 表示注册的地址 --> 7 <param name="register-proxy" value="192.168.1.8"/> 8 <!-- 用户名,用于开启鉴权时进行的注册验证 --> 9 <param name="username" value="4444"/> 10 <!-- 分机的密码 --> 11 <param name="password" value="!@#qwe123"/> 12 <!-- 指定在SIP消息中的源用户信息,没有配置则默认和username相同 --> 13 <param name="from-user" value="4444"/> 14 <!-- 是指定域,它们会影响SIP中的“From”头域。有时第三方会要求我们固定 from头中内容 --> 15 <param name="from-domain" value="www.example.com"/> 16 <!-- 是否注册,认证模式为true,非认证模式为false --> 17 <param name="register" value="true"/> 18 <!-- 注册的间隔时间 --> 19 <param name="expire-seconds" value="120"/> 20 <!-- ping网关地址保持存活,有时需要,主动注册对方时,可能总是掉线刷新网关恢复,可以使用ping保持存活 --> 21 <param name="ping" value="10"/> 22 </gateway> 23 <gateways/>
修改完网关信息后,可以重启freeswitch自动生效或者在控制台使用如下命令使网关配置生效:
sofia profile internal killgw 网关名 sofia profile internal rescan
注册完成后可以在控制台使用sofia status gateway gw01 查看网关是否注册成功。网关状态分为两种:
- NOREG 没有开启认证模式。
- REGED 开启认证模式。
配置完后,可以在default.xml配置外呼路由:
1 <extension name="call_out"> 2 <condition field="destination_number" expression="^(\d{10,13})$"> 3 <action application="set" data="RECORD_TITLE=Recording ${destination_number} ${caller_id_number} ${strftime(%Y-%m-%d %H:%M)}"/> 4 <action application="set" data="RECORD_COPYRIGHT=(c) 2011"/> 5 <action application="set" data="RECORD_SOFTWARE=FreeSWITCH"/> 6 <action application="set" data="RECORD_ARTIST=FreeSWITCH"/> 7 <action application="set" data="RECORD_COMMENT=FreeSWITCH"/> 8 <action application="set" data="RECORD_DATE=${strftime(%Y-%m-%d %H:%M)}"/> 9 <action application="set" data="RECORD_STEREO=true"/> 10 <action application="set" data="media_bug_answer_req=true"/> 11 <action application="record_session" data="$${base_dir}/recordings/archive/${strftime(%Y-%m-%d-%H-%M-%S)}_${destination_number}_${caller_id_number}.wav"/> 12 <!-- 以上内容都是录音的路由写死即可无需修改 --> 13 <!-- 超时时间 60s 对方不接听时持续振铃60S --> 14 <action application="set" data="call_timeout=60"/> 15 <!-- 规定坐席保持时播放的录音,可以单独使用其他录音 --> 16 <action application="set" data="temp_hold_music=local_stream://alternate_moh"/> 17 <!-- 设置外呼时的主叫名称和号码为 xxx--> 18 <action application="set" data="effective_caller_id_name=xxx" /> 19 <action application="set" data="effective_caller_id_number=xxx" /> 20 <!-- 使用刚所配置路由的地方 --> 21 <action application= "bridge" data="sofia/gateway/gw01(网关名)/${destination_number}" /> 22 <action application="set" data="test=${hangup_cause}"/> 23 <action application="execute_extension" data="hangup_reason-${hangup_cause} XML features"/> 24 </condition> 25 </extension>