让asterisk有报工号的功能!

从一个朋友的哪里找到的这个办法,修改源代码,实际使用效果,还是不错的。

以下是原文:

自动报工号是呼叫中心应具备的基本功能之一。但在Asterisk中并没有直接的实现方法,这在应用中多少是个缺陷。幸好Asterisk是open source,我们可以定制相应的代码,实现自动报工号的功能。具体方法如下
我们这里以Asterisk-1.4.21为例:
打开 asterisk-1.4.21/apps/apps_queue.c
在行3017行(内容为:bridge = ast_bridge_call(qe->chan,peer, &bridge_config);),前添加代码 play_file(qe->chan, peer->cid.cid_num);
其中参数qe->chan对应的主叫通道结构,peer->cid.cid_num为被叫的号码值,该函数的功能是向主叫播放与被叫号码对应的语音文件,这里假定你也经提供了
名为peer->cid.cid_num的语音文件,比如8001.gsm.

我根据自己的需要修改了一下,适合自己的需要

char tmp[1024]={0};
   strncpy(tmp,member->interface+4,strlen((member->interface+4)));                         //去掉 SIP/
   if(tmp[0]=='s')
    strncpy(tmp,tmp+8,strlen((tmp+8)));                                                                       //另外一台服务器上的SIP格式是SIP/serverB/XXXX, 去掉serverB/
  
   char tmp2[20]={0};                                                                                                  //实际测试发现在SIP/serverB/XXXX后边还有别的内容,比如是SIP/8001/SIp/8001的形式,总之是需要取得第一个8001的号码就可以,采用下面的方式来处理,截断后面的部分。
   if(tmp[4]<'0'||tmp[4]>'9') {                                                                   
    strncpy(tmp2,tmp,4);
    ast_say_phonetic_str(qe->chan, tmp2, AST_DIGIT_ANY, qe->chan->language);     //报工号
   }else if(tmp[7]<'0'||tmp[7]>'9'){
    strncpy(tmp2,tmp,7);
    ast_say_phonetic_str(qe->chan, tmp2, AST_DIGIT_ANY, qe->chan->language);    //报工号
   }else
    ast_say_phonetic_str(qe->chan, tmp, AST_DIGIT_ANY, qe->chan->language);      //报工号

play_file(qe->chan, "workIDForService");        //号话务员为您服务
   play_file(peer, "beep");                                  //嘀的一声

我们配置的asterisk服务器上的工号是4位或7位,我根据情况截取其中的工号部分。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值