Asterisk 扩展应用(2)——常见Extern App实现

1         常见Extern App实现

1.1       回拨AGI实现
Asterisk本身提供回拨功能,但是有两个Bug

1)      没有回铃音

2)      回拨显示的号码都是中断号

如果要解决这两个问题必须自己实现Origin。

实现思路:

首先拨打主叫号码,当主叫号码接通后拨打被叫号码。设置两个变量,分别储存主叫号码和被叫号码。

从APIManager里面主动发起呼叫使用 OriginateAction 命令,首先必须是通道的选择.

Trixbox提供了默认的local通道。选择Local通道要注意

1)      chan_local 需要加载

2)      Local格式是

Local通道或对当前已经有的通道进行迭代。直至选择到能够通的通道

还可以选择中继通道。

中继通道格式:TrunkName/extension

增加一个变量oricaller放入主叫号码。设置callerid为被叫号码。等待主叫号码接通。当主叫号码接通后。再在以有通道的情况下发送Dial命令。从而实现回拨接口。

修改脚本文件,当拨通第一个号码时设置callerID为主叫号,拨通第二个号码时,设置callerID为被叫号。

拨放回铃音:Dial||r。发送回铃信号

详细实现见AsteriskClient 的MakeCall2方法和脚本配置文件

1.2       彩铃业务实现
彩铃业务实现。彩铃必须要有播放的音乐文件,文件格式为wav或mp3格式。但在测试过程中发现mp3格式变不起作用,可能是有bug。使用wav文件没有发现问题。

       wav文件必须采用以下格式:音频格式PCM,音频采样级别8kHZ,采样大小,16位。位速128kbps

       上传wav文件。使用freepbx来上传wav文件会有bug。它会自动修改wav文件格式,但是wav文件在修改后却不能播放。手动上传wav文件。

上传wav文件/var/lib/asterisk/mohmp3/qqtech/。wav文件重命名为fpm-world-mix.wav

修改musiconhold_additional.conf文件,增加

[qqtech]

mode=files

directory=/var/lib/asterisk/mohmp3/qqtech/

这样如果选择qqtech的MusicOnHold,就会选择上刚刚上传的文件

可以使用Playback来播放回铃音,但是在AGI中却不能如此实现。彩铃音的回拨需求可以分为以下步骤。

1:拨号

2:对方响铃

3:向对方播放彩铃

4:对方接通,停止播放彩铃

使用AGI发送命令Dial后,直到对方接通或挂断才会有返回结果。2和3的步骤通过AGI无法实现。

最终实现方式:发送Dial|m(musiconholdclass)来实现,具体代码见app_dial.c

1.3       ACD队列实现
ACD的主要作用是实现呼叫队列选择号码由第三方实现。ACD队列必须有以下流程:

1:拨入呼入号

2:从呼入号选择列队。并从队列中选择号码

3:转接至选择号码

4:如果未接通则跳至2

向第三方应用申请GetNumber请求。传入呼叫队列号。第三方应用经过处理返回号码,拨打该号码,并拨放回铃音,如果未接通则继续发送GetNumber请求。直至到达发送Number的最大次数。

1.3.1    脚本伪代码实现
接入号接通后,接通并接入AGI

exten=>99999,1,Answer

exten=>99999,2,Ringing

exten=>99999,3,Wait(2)

exten=>99999,4,agi(agi://192.168.1.6/queue.agi?extern=644552&timeout=10&retry=3)

1.3.2    AGI伪代码
String extern = agiRequest.getParameter("extern");//队列接入号

String number = GetNumber(extern);

agiChannel.Dial(number);

1.4     其他用户提出的需求
1.4.1    语音会议
对语音会议有一些补充。主要有两个需求:

1:外线(pstn)可以打入加入电话会议

2:在客户端邀请外线(pstn)直接发起电话会议,使pstn不用接入

需求1的实现思路:

1:pstn电话输入呼叫接入号。

2:提示输入当前活动的电话会议号

3:输入呼叫接入号。Pstn电话进入语音会议

需求2的实现思路:

1:选择合适的电话会议号

2:使用该电话会议号发起回拨,一个一个地拨打外线号码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值