0

我是 Asterisk 的新手,因此我们将不胜感激任何帮助。

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

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

转移是这样的:

  1. A呼叫B(A与B交谈)
  2. B拿着A,打电话给C(B和C说话)
  3. B 将 A 转移给 C(A 与 C 交谈)

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

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

我正在阅读关于编辑一些配置文件,添加这种句子:

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

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

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

4

2 回答 2

0

Reading call events via AMI (thanks to @arheops) I manage how to save Remote Party ID in CDR.

In hangup event we can see Remote Party ID in ConnectedLineNum field.

For a transferred call like this one:

  • 401 calls 208
  • 208 calls 308 (401 on hold)
  • 208 transfers original call to 308 (401 talking with 308)

this is a hangup event sample for the final segment of the call.

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

Original caller is stored in ConnectedLineNum variable.

So I add this line to the hangup section:

exten => s,1,Set(CDR(connectedid)=${CONNECTEDLINE(number)})

I'm using Elastix 2.4.0, so I've added this line at the beggining of the [macro-hangupcall] macro in extensions_override_elastix.conf file.

In other Asterisk based distros it should be in another file.

于 2015-01-20T13:03:01.603 回答
0

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

然而,这一切都需要调试和你自己的努力。

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

其他选项是收集事件并记住所有转移

于 2015-01-15T11:45:30.313 回答