Asterisk自动播报工号的解决方案

    呼叫中心一般都会需要到这样的功能:当坐席即将接通队列中的用户时,用户那边会听到
类似“工号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-&gt;chan,peer, &amp;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

你可能感兴趣的:(C++,c,PHP,C#)