FreeSWITCH--配置代接电话
配置代接电话,需要更改 分机、拨号计划、外线 的配置
一、配置分机
代接组内分机的这个“组”, 不是“conf/directory/default.xml"中配置的 group,而是要在分机配置中配置。然后会在拨号计划中使用到这个配置。
如下配置: “callgroup”
<include> <user id="8002"> <params> <param name="password" value="$${default_password}"/> </params> <variables> <variable name="toll_allow" value="domestic,international,local"/> <variable name="accountcode" value="8004"/> <variable name="user_context" value="default"/> <variable name="effective_caller_id_number" value="8004"/> <variable name="effective_caller_id_name" value="8004"/> <variable name="callgroup" value="allagents"/> </variables> </user> </include>
二、配置拨号计划-代接
线上代码, 再解释:
<!-- 全局截断分机代接 --> <extension name="global-intercept"> <condition field="destination_number" expression="^\#\*\*$"> <action application="answer"/> <action application="intercept" data="${hash(select/${domain_name}-last_dial_ext/global)}"/> </condition> </extension> <!-- 组内截断分机代接 --> <extension name="group-intercept"> <condition field="destination_number" expression="^\#\*$"> <action application="answer"/> <action application="intercept" data="${hash(select/${domain_name}-last_dial_ext/${callgroup})}"/> </condition> </extension> <!-- 指定截断代接 --> <extension name="intercept-ext"> <condition field="destination_number" expression="^\#(\d+)$"> <action application="answer"/> <action application="intercept" data="${hash(select/${domain_name}-last_dial_ext/$1)}"/> </condition> </extension> <!-- 重播 --> <extension name="redial"> <condition field="destination_number" expression="^(redial|\*\#)$"> <action application="transfer" data="${hash(select/${domain_name}-last_dial/${caller_id_number})}"/> </condition> </extension>
“intercept” 这个application 是中途拦截的意思,也就是说,在通话中的话,也能吧电话接过来,抢劫哈~
1.不例外, 先”answer“
2.然后拦截呼叫
拦截呼叫要先查找呼叫,当然是查找最后一个啦:“${domain_name}-last_dial_ext”,全局,主内,或者指定的分机。
这里使用的hash表,来存储的 记录, 所以是在hash表中查,官网是用db记录的,就在db中查了。
三、配置拨号计划-记录
前面提到了查询,那么这些个记录是哪里来的呢;同样是拨号计划中记录的啦。
要代接的,一般都是外线呼入的,当然也有内线呼入的,那么怎么记录呢?
1、内线记录呼叫
内线呼入,当然是在内线的dialplan里记录了:
<!-- 拨分机 --> <extension name="extension-intercom"> <condition field="destination_number" expression="^(8[0-6][0-9][0-9])$"> <!--<action application="log" data="console $1 ${destination_number}"/>--> <action application="set" data="dialed_extension=${destination_number}"/> <action application="set" data="callee_party_callgroup=${user_data(${destination_number}@${domain_name} var callgroup)}"/> <action application="export" data="dialed_extension=${destination_number}"/> <action application="hash" data="insert/${domain_name}-call_return/${dialed_extension}/${caller_id_number}"/> <action application="hash" data="insert/${domain_name}-last_dial_ext/${dialed_extension}/${uuid}"/> <action application="hash" data="insert/${domain_name}-last_dial_ext/${callee_party_callgroup}/${uuid}"/> <action application="hash" data="insert/${domain_name}-last_dial_ext/global/${uuid}"/> <action application="export" data="nolocal:rtp_secure_media=${user_data(${dialed_extension}@${domain_name} var rtp_secure_media)}"/> <action application="hash" data="insert/${domain_name}-last_dial/${callee_party_callgroup}/${uuid}"/> <!--设置回铃音--> <action application="set" data="ringback=${us-ring}"/> <!--<action application="set" data="ringback=ForestHymn3.wav"/>--> <!--<action application="set" data="transfer_ringback=$${hold_music}"/>--> <action application="set" data="transfer_ringback=local_stream://moh"/> <!--<action application="set" data="transfer_ringback=ForestHymn.wav}"/>--> <action application="set" data="call_timeout=30"/> <!-- <action application="set" data="sip_exclude_contact=${network_addr}"/> --> <action application="set" data="hangup_after_bridge=true"/> <!--<action application="set" data="continue_on_fail=NORMAL_TEMPORARY_FAILURE,USER_BUSY,NO_ANSWER,TIMEOUT,NO_ROUTE_DESTINATION"/> --> <action application="set" data="continue_on_fail=true"/> <!--话机自动接听--> <!--<action application="export" data="sip_auto_answer=true"/>--> <action application="bridge" data="user/${destination_number}@${domain_name}"/> </condition> </extension>
上面三个加粗的,分别是记录指定分机,组内,全局的。
2、外线记录呼叫呼叫
外线,就在外线的dialplan里记录了,转分机前,记得,是转分机前!
<action application="set" data="dialed_extension=8002"/> <action application="set" data="callee_party_callgroup=${user_data(${dialed_extension}@${domain_name} var callgroup)}"/> <action application="hash" data="insert/${domain_name}-last_dial_ext/${callee_party_callgroup}/${uuid}"/> <action application="hash" data="insert/${domain_name}-last_dial_ext/${dialed_extension}/${uuid}"/> <action application="hash" data="insert/${domain_name}-last_dial_ext/${callee_party_callgroup}/${uuid}"/> <action application="bridge" data="[originate_timeout=30]user/${dialed_extension}"/>
问题: 如果是在 用esl转的,咋加记录? callcenter转的咋记录?
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
原文链接:https://www.cnblogs.com/lzpong/p/10751825.html
--- auth:lzpong
分类:
FreeSWITCH
, 软件配置设置
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!