呼叫中心一般都会需要到这样的功能:当坐席即将接通队列中的用户时,用户那边会听到
类似“工号80001为您服务”的语音提示,我们的400热线呼入也想增加语音提示,那Asterisk
可以实现吗?
废话不多说,只有想不到,没有做不到,下面给出2个解决方案:
Solution 1
1.在dialplan中调用queue的地方加个参数:
Queue(10088,t,,,100,sayinterface.agi)
2.在/var/lib/asterisk/agi-bin目录下新建文件sayinterface.agi
#!/usr/bin/php -q
<?php
require_once "phpagi.php";
require_once "phpagi-asmanager.php";
$agi=new AGI();
$temp=$agi->get_variable("MEMBERINTERFACE");
$member=$temp['data'];
$member=substr($member,4);
$agi->verbose($member);
$agi->say_digits($member);
$agi->exec("playback","number-report");
?>
该方案有个缺憾:报号时,坐席端处于空白阶段,不能明确知道何时可与用户建立通话;
Solution 2
1.进入asterisk源码包apps目录下,vi app_queue.c
char k_exten[15] = "";;
int k9i = 0;
int k9j = 0;
int k9_flag = 0;
在 bridge = ast_bridge_call(qe->chan,peer, &bridge_config); 之前加入代码
for(;k9i < 15;k9i++){
if(member->interface[k9i]=='/'){
k9_flag=1;
continue;
}
if(member->interface[k9i]=='@'){
k9_flag=0;
break;
}
if(k9_flag){
k_exten[k9j++]=member->interface[k9i];
}
}
ast_say_digit_str(qe->chan, k_exten, AST_DIGIT_ANY, qe->chan->language);
play_file(qe->chan, "number-report");
play_file(peer, "beep");
2.编译之,生成新的app_queue.so,用其替换掉/usr/lib/asterisk/modules下的同名文件,重启asterisk;
以上两个解决方案均需在queue的配置中加入参数:setinterfacevar=yes