我是Asterisk的新手,所以任何帮助将不胜感激。
我正在尝试将远程方 ID (CONNECTEDLINE) 保存在转接呼叫的 CDR 日志表中。在盲转中没有问题,因为我src
字段中将远程方 ID 作为呼叫者 ID。
在有人值守的转接中,我丢失了原始来电显示。
转移是这样的:
- A
- 呼叫 B(A 与 B 交谈) B
- 抱着 A,并呼叫 C(B 与 C 交谈)
- 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]
宏的开头添加了这一行。
在其他基于星号的发行版中,它应该在另一个文件中。