第一天
上午接到一个需求,询问现在我们的电话系统是否能做个呼叫转接。然后在网上搜了一下,发现有路子可走,所以简单试了一下,还真是可以。
首先,需求是什么?
客户拨通了400电话到我们的asterisk电话系统,比如说接通了坐席A;然后A需要在不挂断的情况下转拨给另外一个电话或者手机B。
实现:
找到http://www.asterisk-help.com/read.php?tid-191-page-1.html这篇文章说明了,配置features.conf
blindxfer=# ;转接开始的前缀
transferdigittimeout => 30
xfersound = beep
xferfailsound = beeperr
featuredigittimeout = 1000
atxfernoanswertimeout = 15
atxferdropcall = no
atxferloopdelay = 10
txfercallbackretries = 2
transferdigittimeout 参数,默认是3秒,刚开始以为是拨号的时间(英文不好)测试后发现其实是你按#后,到你拨第一个号码按键的时间。所以,你要转接的话,你得先查下号码是多少,然后再按#,接着开始拨号;
其他的参数默认的,也没仔细看,目前;
配置完features.conf后,你还需在你的拨号语法文件extensions.conf中配置:
比如exten => _x.,1,Dial(DAHDI/G0/${EXTEN},30,t), 注意加了t参数,t的意思是允许被叫用户按前面设置的#转接;相应的T是允许主叫用户按#转接。
这样就可以呼叫转接了,但是接着还有个问题:
比如我在按#后,转接输入号码,假如号码输错了,这时候该怎么办呢,难道是挂断?这个我还没解决测试,或许能够再按一下#,来重新输入。
第二天
在看http://www.voip-info.org/wiki/index.php?page=Asterisk+config+features.conf文档中,发现了另外一种转接的方式atxfer
之前在features.conf使用的是blindxfer ,也就是无人管理的转接,而且配置文件说明的也不详细。
现在的atxfer方式,据文档上的说明:
比如用户A打给坐席B,然后B需要转给分机C,B会先和C接通(blindxfer是接通后就自动断掉),然后B可以挂掉(挂掉后A与C将连通)或者按*(默认)返回到A与B的通话中。
这个方式或许可以解决掉输错号码的问题,也就是输错号码后,按*回到A与B通话中,然后再来一遍转接。