参考
http://www.cppblog.com/byc/archive/2012/06/27/180485.html
参考中的文章和网上能找到的,都是基于Asterisk 1.X版本的app_queue.c 文件进行修改。
改进步骤
- 下载Asterisk 源码包,拷贝至服务器中
- ./configure 和 make menuselect
- 修改源文件
vi apps/app_queue.c
在try_calling((struct queue_ent *qe, 下面增加
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];
}
}
play_file(qe->chan, "number-report-begin"); // 在报工号之前播放的语音,例如:您好,由
ast_say_digit_str(qe->chan, k_exten, AST_DIGIT_ANY, ast_channel_language(qe->chan)); // 播放坐席分机号码
play_file(qe->chan, "number-report-end"); // 在报工号之后播放的语音,例如:号坐席为您服务
play_file(peer, "beep");
- 编译安装
make
make install
- 自行准备语音文件
- 将编译好的app_queue.so 放置在 /usr/lib64/asterisk/module目录下,替换原有文件
我的环境是FreePBX14+Asterisk 16 测试成功~