2015-01-15 130 views
0

我是新来的Asterisk,所以任何帮助将不胜感激。如何在Asterisk中将远程方ID保存到CDR?

我试图在转移的呼叫中的CDR日志表中保存远程方ID(CONNECTEDLINE)。在盲转中,没有问题,因为我在src字段中将Remote Party ID作为来电显示。

在有人值班转移我失去了原来的来电显示。

这是转让如何去:

  1. A呼叫B(A为B说话)
  2. 乙持有A,并调用C(B以C说话)
  3. 乙转移A至C(与C交谈)

现在,在CDR表中,我得到两条记录。一个用于第一个呼叫(A <→B),另一个用于两个第二呼叫(B <→C和A <→C)。重点是在第二个CDR我已经失去了任何参考A.

我想在第二个CDR保存远程党的ID(A)。 我已经在CDR表中添加了一个自定义字段(connectedID)。

我阅读有关编辑一些配置文件,加入这样的句子:

"exten => s,1,set(CDR(connectedID)=${CONNECTEDLINE})" 

不过,我完全迷失了方向。我不知道我需要编辑哪个文件,即使在文件的哪一部分,我也应该放置这些代码行。

有人可以指出我正确的方向吗?

回答

0

阅读呼叫事件我管理如何保存远程党ID的CDR。

hangup事件中,我们可以在ConnectedLineNum字段中看到Remote Party ID。

对于这样一个转移的呼叫:

  • 401呼叫208
  • 208电话308(401暂停)
  • 208将原来的呼叫308(401 308说话)

这是呼叫最后一段的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文件beggining加入这一行。

在其他基于Asterisk的发行版中,它应该放在另一个文件中。

0

您可以使用Func_SHARED,保存CID共享变量,并通过桥接通道名称做查找

但是这都需要调试和你自己的努力。

http://www.voip-info.org/wiki/view/Asterisk+func+shared

其他选项是集事件和remmember所有传输通过AMI(感谢@arheops)

+0

在有人值班转移中,我没有任何交叉引用值可用于跟踪呼叫的两部分(我有4个不同的渠道,每个呼叫段2个)。也许是我的电话机工作。不过,我认为Func_SHARED是正确的方法来达到我所要求的(在适当的环境中)。 – ejuanillo

+0

您可以通过AMI阅读活动,将链接/取消链接事件(参加者转接的次数超过1次),可用于确定结果。 – arheops

+0

谢谢@arheops,我会尝试AMI事件。 – ejuanillo

相关问题