用户目录的默认配置文件在 conf/directory/ 下,系统自带的配置文件为default.xml,其代码如下
<domain name="$${domain}">
<params>
<param name="dial-string" value="{^^:sip_invite_domain=${dialed_domain}:presence_id=${dialed_user}@${dialed_domain}}${sofia_contact(*/${dialed_user}@${dialed_domain})}"/>
<!-- These are required for Verto to function properly -->
<!-- <param name="jsonrpc-allowed-methods" value="verto"/> -->
<!-- <param name="jsonrpc-allowed-event-channels" value="demo,conference,presence"/> -->
</params>
<variables>
<variable name="record_stereo" value="true"/>
<variable name="default_gateway" value="$${default_provider}"/>
<variable name="default_areacode" value="$${default_areacode}"/>
<variable name="transfer_fallback_extension" value="operator"/>
</variables>
<groups>
<group name="default">
<users>
<X-PRE-PROCESS cmd="include" data="default/*.xml"/>
</users>
</group>
</groups>
</domain>
params参数
#params中定义了该Domain中所有用户的公共参数,在这里只定义了一个 dial-string 这是一个至关重要的参数,在使用
#user/username 或 sofia/internal/username@domain 这样的呼叫字符串时,FreeSWITCH会根据username以及
#domain找到该dial-string,并最终扩展成用户实际的SIP地址
sofia_contact
#sofia_contact是一个API命令,它会根据用户的注册地址扩展成相应的呼叫字符串
variables
#variables定义了一些公共变量,在用户主叫或被叫时,这些变量会绑定到相应的Channel上形成Channel Variable
#在domain中还定义了许多组,组里面包含了很多用户
<group name="default">
<users>
<X-PRE-PROCESS cmd="include" data="default/*.xml"/>
</users>
</group>
组名default
#在这里组名default并没有特殊意义
#如下,也可以定义其他组,组中的用户并不需要是完整的XML节点,也可以是一个指向已存在用户的指针,如下代码
#使用type="pointer"定义的指针
<group name="sales">
<users>
<user id="1000" type="pointer"/>
<user id="1001" type="pointer"/>
<user id="1002" type="pointer"/>
<user id="1003" type="pointer"/>
<user id="1004" type="pointer"/>
</users>
</group>
#注意,使用组并不是必需的,如果不打算用组,可将用户节点直接放到 domain 的下一级也是可以的,但是使用组可以比较
#方便的支持像群呼、代接之类的业务,例如使用group_call可以同时或者顺序呼叫某个组的用户
#一个SIP用户1001的设置
<include>
<user id="1001">
<params>
<param name="password" value="$${default_password}"/>
<param name="vm-password" value="1001"/>
</params>
<variables>
<variable name="toll_allow" value="domestic,international,local"/>
<variable name="accountcode" value="1001"/>
<variable name="user_context" value="default"/>
<variable name="effective_caller_id_name" value="Extension 1001"/>
<variable name="effective_caller_id_number" value="1001"/>
<variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
<variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
<variable name="callgroup" value="techsupport"/>
</variables>
</user>
</include>
#由上面代码可知,实际上params 和 variables可以出现在group和domain中,当它们有重复时,优先级由高到低
#依次为user、group、domain