如何将远程方 ID 保存到星号中的 CDR



我是Asterisk的新手,所以任何帮助将不胜感激。

我正在尝试将远程方 ID (CONNECTEDLINE) 保存在转接呼叫的 CDR 日志表中。在盲转中没有问题,因为我src字段中将远程方 ID 作为呼叫者 ID。

在有人值守的转接中,我丢失了原始来电显示。

转移是这样的:

    A
  1. 呼叫 B(A 与 B 交谈)
  2. B
  3. 抱着 A,并呼叫 C(B 与 C 交谈)
  4. B 将 A 转移到 C(A 与 C 交谈)

现在,在 CDR 表中,我得到了两条记录。一个用于第一个呼叫(A<->B),另一个用于第二个呼叫(B<->C 和 A<->C)。关键是在第二个CDR中,我失去了对A的任何引用。

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

我正在阅读有关编辑一些配置文件的信息,添加此类句子:

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

但是,我很迷茫。我不知道我需要编辑哪个文件,甚至不知道我应该将这些代码行放在文件的哪个部分。

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

您可以使用

Func_SHARED,将cid保存在共享变量中,并通过桥接通道名称进行查找

但是,所有这些都需要调试和您自己的努力。

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

其他选择是收集事件并保留所有传输

通过 AMI 读取呼叫事件(感谢@arheops) 我管理如何在 CDR 中保存远程方 ID。

在这种情况下hangup我们可以在ConnectedLineNum字段中看到远程方 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,所以我在extensions_override_elastix.conf文件中[macro-hangupcall]宏的开头添加了这一行。

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

相关内容

  • 没有找到相关文章

最新更新