我是Asterisk的新手,所以非常感谢任何帮助。
我试图在转移的呼叫中保存CDR日志表中的远程参与方ID(CONNECTEDLINE)。在盲转接中,没有问题,因为我在src
字段中将远程参与方ID作为来电显示。
在有人值守的转接中,我忘记了原来的来电显示。
转移的方式如下:
现在,在CDRs表中,我得到了两条记录。一个用于第一次呼叫(A-B),另一个用于两次第二次呼叫(B-C和A-C)。关键是在第二个CDR我失去了对A的任何引用。
我想在第二个CDR中保存远程参与方ID(A)。
我已经在CDR表格中添加了自定义字段(connectedID
)。
我正在阅读有关编辑某些配置文件的内容,并添加了这种句子:
"exten => s,1,set(CDR(connectedID)=${CONNECTEDLINE})"
但是,我很失落。我不知道我需要编辑哪个文件,即使在文件的哪个部分我应该放置这些代码行。
有人能指出我正确的方向吗?
答案 0 :(得分:0)
您可以使用Func_SHARED,在共享变量中保存cid并按桥接频道名称进行查找
然而,这一切都需要调试和你自己的努力。
http://www.voip-info.org/wiki/view/Asterisk+func+shared
其他选项是收集事件并记住所有转移
答案 1 :(得分:0)
通过AMI读取呼叫事件(感谢@arheops)我管理如何在CDR中保存远程方ID。
在hangup
事件中,我们可以在ConnectedLineNum
字段中看到远程参与方ID。
对于像这样的转接电话:
这是最后一段电话的hangup
事件样本。
Event Hangup
Privilege: call,all
Channel: SIP/308-00000665
Uniqueid: 1421757614.1658
CallerIDNum: 208
CallerIDName: Juan Ruiz
ConnectedLineNum: 401
ConnectedLineName: Test1
Cause: 16
Cause-txt: Normal Clearing
原始来电者存储在ConnectedLineNum
变量中。
所以我将此行添加到挂断部分:
exten => s,1,Set(CDR(connectedid)=${CONNECTEDLINE(number)})
我正在使用Elastix 2.4.0,所以我在[macro-hangupcall]
文件的extensions_override_elastix.conf
宏的开头添加了这一行。
在其他基于Asterisk的发行版中,它应该在另一个文件中。