使用 ami 外呼时,在 freeiirs 录音时会找不到 accountcode 变量解决办法

使用 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 的变量修改一下即可。

问题解决。。

==============================================================

猜你喜欢

转载自hwzyyx.iteye.com/blog/1396783