使用 freeiris 对 asterisk 做包装。
今天使用 Asterisk 的 AMI 外呼时,发现录音不成功,
在 /freeiris2/agimod/rount.dynamic 中发现
#主叫自动录音检测
$AGI->exec('AGI','agi://127.0.0.1/sysautomon?type=caller&number='.$accountcode);
中的变量 accountcode 变量为空
这个 accountcode 是 CDR 的变量,
于是在
originateToExtensionAsync(java.lang.String channel, java.lang.String context, java.lang.String exten, int priority, long timeout, CallerId callerId, java.util.Map<java.lang.String,java.lang.String> variables, OriginateCallback cb)
中的 callback 中的 onSuccess 方法执行的时候,进行设置
@Override
public void onSuccess(AsteriskChannel channel) {
channel.setVariable("CDR(accountcode)", agent);
System.out.println("onSuccess..........");
}
将 Channel 的变量修改一下即可。
问题解决。。
==============================================================