手写结构图
一.分组
1.在freeswitch中group在conf/directory/default.xml 中配置 ,首先定位到groups节点。如果想把 1000 1001 1019编在一个分组,假设组的名字为xiaobai。那么可以在groups中加入以下内容:
<group name="test_group">
<users>
<user id="1001" type="pointer"/>
<user id="1002" type="pointer"/>
<user id="1003" type="pointer"/>
<user id="1004" type="pointer"/>
</users>
</group>
2.在conf/dialplan/default.xml 中配置拨号计划。首先打开default.xml配置文件,然后定位到group_dial_billing 在</extension>之后加入
<extension name="group_dial_test_group">
<condition field="destination_number" expression="^1314$">
<action application="bridge" data="group/test_group@${domain_name}"/>
</condition>
</extension>
这两步完成之后 用户组就配置成功了
3.拨打1314 用户组中的所有的电话就会ring ,当一个被叫摘机后其它的用户就自动挂机。
二、配置网关(未有账号,暂未实现)
在VOIP通信系统中,经常要用到网关。那么网关怎么和FreeSwitch在一起配合使用?
有如下需求:
有一虚拟运营商(即:SIP PROVIDER ),提供拨打外线的功能。从该处购买一 SIP 账号,具体配置信息如下:
用户名:user
密码: pass
服务器IP:100. 100.100.100
想通过和该SIP PROVIDER 对接实现拨打外线功能。即:0+要拨打的号码,就送到该SIP PROVIER (说明:此时的 SIP PROVIDER 相当于一网关)。
解决方法:
(1)添加一个网关
在 \conf\sip_profiles\external 中添加一个名为GW_TEST.xml 的文件,内容如下:
<gateway name="GW_TEST">
<param name="realm" value="100. 100.100.100"/>
<param name="username" value="user"/>
<param name="password" value="pass"/>
</gateway>
(2) 新建一个拨码计划
在 \conf\dialplan\default 中新建一个名为 call_gw_test.xml 的文件 ,内容如下:
<include>
<extension name="call out">
<condition field="destination_number" expression="^0(\d+)$">
<action application="bridge" data="sofia/gateway/GW_TEST/$1"/>
</condition>
</extension>
</include>
(3) 通过 FS_CLI.exe 运行 reloadxml ,即可生效。
三、坐席配置与管理
静态坐席的配置
1. mod_callcenter默认配置文件在conf\autoload_configs\callcenter.conf.xml中。
默认系统配置了support@default队列
<queue name="support@default">
<param name="strategy" value="longest-idle-agent"/>
...
</queue>
strategy是设置队列的分配方式,longest-idle-agent是优先选择等待时间最长的座席分配.
2. 分配座席
<agents>
<agent name="1002@default" type="callback" contact="[call_timeout=10]user/1002" status="Available" max-no-answer="3" wrap-up-time="10" reject-delay-time="10" busy-delay-time="60" />
...
</agents>
type指定座席的类型
contact为座席的呼叫字符串
status为座席初始状态,Available表示可用状态
max-no-answer定义座席呼叫失败的次数
wrap-up-time在队列中等待其他任务的时间
reject-delay-time座席拒接后再次选到该座席的最短时长
busy-delay-time座席如果忙,则再次尝试选到该座席的最短时间
3. 座席与队列关联
<tiers>
<tier agent="1002@default" queue="support@default" level="1" position="1"/>
...
</tiers>
4. 在Diaplan中设置电话拨打5000转到callcenter队列
<extension name="Callcenter Example">
<condition field="destination_number" expression="^5000$">
<action application="answer"/>
<action application="callcenter" data="support@default"/>
</condition>
</extension>
四、转接与代接
1. 盲转(A-->B,转接到C,AC通话,B挂断;拨号为“*1”+c号码)
1. 默认在Diaplan中的Local_Extension中设置
<action application="bind_meta_app" data="1 b s execute_extension::dx XML features"/>
盲转功能,按“*1”激活b腿上转接功能,s表示在哪条腿上接受按键就在哪条腿上执行
2. 在features.xml文件中会有一个“dx”的extension,B按下“*1”会执行到“dx”
<extension name="dx">
<condition field="destination_number" expression="^dx$">
<action application="answer"/>
<action application="read" data="11 11 'tone_stream://%(10000,0,350,440)' digits 5000 #"/>
<action application="execute_extension" data="is_transfer XML features"/>
</condition>
</extension>
"answer"保持电话应答状态,“read”表示等待用户按键,参数“11 11”表示最少11位,最多11位,tone_stream为拨号音,拨号音出现后,可以直接拨号,然后执行下列的"is_transfer",转到features.xml中的is_transfer中的extension
is_transfer的extension
<extension name="is_transfer">
<condition field="destination_number" expression="^is_transfer$"/>
<condition field="${digits}" expression="^(\d+)$">
<action application="transfer" data="-bleg ${digits} XML default"/>
<anti-action application="eval" data="cancel transfer"/>
</condition>
</extension>
表达式“^(\d+)$”判断输入数字是否合法,如果 不合法执行anti-action取消操作。AB继续通话
如果合法,转接到digits变量代表的值,即B输入的C的号码,-bleg表示把a-leg上的通话转接到C,AC通话,B挂断
2. 协商转(A-->B,转接到C,BC通话,A等待,C挂断,AB继续通话;拨号为“*4”+C号码)
1. 默认在Diaplan中的Local_Extension中设置
<action application="bind_meta_app" data="4 b s execute_extension::att_xfer XML features"/>
按“*4”执行到features.xml中的att_xfer的extension
<extension name="att_xfer">
<condition field="destination_number" expression="^att_xfer$">
<action application="read" data="3 4 'tone_stream://%(10000,0,350,440)' digits 30000 #"/>
<action application="set" data="origination_cancel_key=#"/>
<action application="att_xfer" data="user/${digits}@$${domain}"/>
</condition>
</extension>
输入3-4位按键,输入正确,处理呼叫转移,B呼叫C,A播放等待音乐,B和C通话,询问C是否愿意通话,如果不愿意,C挂机,AB通话;如果C愿意,B挂机,AC通话,如果B不挂机,按0形成三方会议,在会议中,B可以按“#”取消与C的通话,AB通话
代接
1. 全局代接
拨打886
2. 组内代接
3. 指定分机代接