概述
这是一个简单的针对mod_fifo模块的On-hook Agent模式的配置示例。配置内容取自
https://wiki.freeswitch.org/wiki/Mod_fifo
网页内的Simple On-hook Agent Login/Logout Example一节。On-hook Agent的解释请参考上述网页的Terminology一节。
在FreeSWITCH安装目录的conf/dialplan/default目录下创建一个新的xml文件,例如01_fifo.xml。为此新建文件输入如下的内容:
<include>
<!-- Agent login extension: 6*[0-9] -->
<extension name="Agent Login">
<condition field="destination_number" expression="^6*(d)">
<action application="answer"/>
<action application="set" data="result=${fifo_member(add FIFO$1 {fifo_member_wait=nowait}user/${user_name} )"/>
<!-- use the following line instead if you want to have group_confirm for the agent
<action application="set" data="result=${fifo_member(add FIFO$1 {fifo_member_wait=nowait,group_confirm_file=ivr/ivr-accept_reject_voicemail.wav,group_confirm_key=1}user/${user_name} )"/>
-->
<action application="log" data="INFO Add FIFO agent result: ${result}"/>
<action application="log" data="INFO User Login: FIFO$1 User: ${user_name}"/>
<!-- No error checking, just assuming login went well... -->
<action application="playback" data="ivr/ivr-you_are_now_logged_in.wav"/>
</condition>
</extension>
<!-- Agent logout extension: 6#[0-9] -->
<extension name="Agent Logout">
<condition field="destination_number" expression="^6(#|**)(d)">
<action application="answer"/>
<action application="set" data="result=${fifo_member(del FIFO$1 {fifo_member_wait=nowait}user/${user_name})}"/>
<!-- Use this line instead if you are using group_group confirm
<action application="set" data="result=${fifo_member(del FIFO$2 {fifo_member_wait=nowait,group_confirm_file=ivr/ivr-accept_reject_voicemail.wav,group_confirm_key=1}user/${user_name} )"/>
-->
<action application="log" data="INFO Del FIFO agent result: ${result}"/>
<action application="log" data="INFO User Logout: FIFO$1 User: ${user_name}"/>
<!-- No error checking, just assuming logout went well... -->
<action application="playback" data="ivr/ivr-you_are_now_logged_out.wav"/>
</condition>
</extension>
<!-- Send a call to FIFO[0-9] -->
<extension name="send caller to FIFO">
<condition field="destination_number" expression="^610(d)$">
<action application="answer"/>
<action application="set" data="fifo_music=$${hold_music}"/>
<action application="playback" data="ivr/ivr-hold_connect_call.wav"/>
<action application="fifo" data="FIFO$1 in"/>
</condition>
</extension>
</include>
然后在fs_cli控制台下输入reloadxml命令重新加载XML配置。配置生效后,在任何一个注册成功的SIP话机上(硬话机或者软电话),例如1000,拨打“6*1”这个号码,然后挂机。接着使用另一部话机,例如1001,拨打“6101",拨打完毕后1000和1001进入通话状态。
名为“Agent Login”的extension的作用是让分机登录在某一个具体的队列内。队列名称由“FIFO”字串,以及后接一个数字组成。因此当分机1000拨打“6*1”,解析此字串得到最后一个数字“1”,再与“fifo”字串合并,得到队列名:“FIFO1”。
${fifo_member(add FIFO$1 {fifo_member_wait=nowait}user/${user_name} )
这句是“Agent Login” extension中最重要的一句。它调用了fifo_member命令向名为“FIFO1”的队列增加一个座席,参数“add“说明这是一个增加操作。${user_name}会用“1000”替换。然后最后向座席播放语音:ivr-you_are_now_logged_in.wav,通知其已登录成功。注意,这个extension未包括任何异常保护措施。
名为“Agent Logout”的extension的作用是让分机从某一个具体的队列内退出。队列名称由“FIFO”字串,以及后接一个数字组成。因此当分机1000拨打“6**1”,解析此字串得到最后一个数字“1”,再与“fifo”字串合并,得到队列名:“FIFO1”。
${fifo_member(del FIFO$1 {fifo_member_wait=nowait}user/${user_name})}
这句是“Agent Logout” extension中最重要的一句。它调用了fifo_member命令从名为“FIFO1”的队列删除一个座席,参数“del“说明这是一个删除操作。${user_name}会用“1000”替换。然后最后向座席播放语音:ivr-you_are_now_logged_out.wav,通知其已退出成功。注意,这个extension未包括任何异常保护措施。
名为“send caller to FIFO”的extension的作用是让到达此extension的来电方进入到某一个队列内排队等待分配。队列名称由“FIFO”字串,以及后接一个数字组成。因此当分机1001拨打“6101”,解析此字串得到最后一个数字“1”,再与“FIFO”字串合并,得到队列名:“FIFO1”。
<action application="fifo" data="FIFO$1 in"/>
这句将调用fifo应用模块向队列内加入当前通话。在刚才那个实际应用场景下,队列名就是”FIFO1“。从这个extension的配置可以看出,实际创建了十个队列6100~6109。
结论
这个示例的优点是不用在fifo.conf.xml配置文件中写入任何内容,即可创建一个可供实际使用的队列。这应该使用了mod_fifo模块动态创建队列的能力。
最后
以上就是缓慢人生为你收集整理的FreeSWITCH - mod_fifo On-hook Agent模式配置示例的全部内容,希望文章能够帮你解决FreeSWITCH - mod_fifo On-hook Agent模式配置示例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复