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->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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值