本文来自csdn lidp http://blog.csdn.net/perfectpdl,转载注明出处,谢谢。
我建了一个 Freeswitch 内核研究 交流群, 45211986, 欢迎加入, 另外,提供基于SIP的通信服务器及客户端解决方案。
Freeswitch可以作为SIP注册服务器,sip终端作为freeswitch user注册到freeswitch上,另外,freeswitch也可以通过sip协议连接外部服务,通常通过网关连接到pstn.
(1)freeswitch 用户
Freeswitch通过引入directory 概念来管理user,一个directory包含若干domain,一个domain可以包含若干个group,每个group 又分若干个真实的用户。
结构如下:
<section name="directory">
<domainname="example.com">
<groups>
<groupname="default">
<userid="1001">
<params>
<param name="password"value="1234"/>
</params>
</user>
</group>
</groups>
</domain>
</section>
通常并不需要group,用户部分直接在domain下,默认域名为freeswitch的ip地址。
/usr/local/freeswitch/conf/directory/目录为user配置及保存的位置
当freeswitch收到注册包时首先根据sip from或者to头中的domain查找directory目录下面的用户,freeswitch默认使用的域名为服务器ip,可以通过在控制台上执行sofia status查看。
如果想让服务器使用域名,客户端注册时用域名方式注册,需要修改vars.xml配置文件,设置默认域名。
/usr/local/freeswitch/conf/directory/default.xml为directory主配置文件,这里指定域名,组;系统默认组为default,
此组下的用户都在/usr/local/freeswitch/conf/directory/default/目录下,默认有20个账号。
所以,在default组中添加新账号的步骤:
1. /usr/local/freeswitch/conf/directory/default/添加xml用户文件,拷贝此目录下其中一个即可,然后再稍作改动。
[root@openser-devdefault]# cp 1000.xml 1111.xml
把1111.xml 中的1000都改成1111,密码为全局密码(vars.xml中配置)1234
2. 修改dialplan;freeswitch对注册到自己的用户的dialplan为cconf/dialplan/default.xml中的Local_Extension部分,
把1111添加到匹配中。
^(10[01][0-9]|1111)$
<conditionfield="destination_number" expression="^(10[01][0-9]|1111)$">
3. 重新加载配置 reloadxml,注册,呼叫 1111
采用多group的一个好处是可以让freeswitch呼叫一组内用户,比如在conf/directory/default.xml里添加sales组,然后再里面添加1001,1002,1003用户,然后再dialplan里添加
<extension name="group_dial_sales">
<conditionfield="destination_number"expression="^2000$">
<actionapplication="bridge"data="group/sales@${domain_name}"/>
</condition>
</extension>
当用户拨打2000时,freeswitch会同时呼叫salses组里的所有用户,一旦第一个用户应答,停止呼叫其他用户,这与asterisk或者其他pbx里面的队列呼叫策略类似,asteirsk中叫ringall.
也可以在控制台用group_call命令呼叫一个组,这里为group_call salses.