Asterisk 中如何将 Remote Party ID 保存到 CDR?
How to save Remote Party ID to CDR in Asterisk?
我是 Asterisk 的新手,非常感谢任何帮助。
我正在尝试将远程方 ID (CONNECTEDLINE) 保存在转接呼叫的 CDR 日志 table 中。在盲转中没有问题,因为我在 src
字段中将远程方 ID 作为来电显示。
在有人值守的转接中,我丢失了原来的来电显示。
转移过程是这样的:
- A打电话给B(A跟B说话)
- B抱着A,给C打电话(B跟C说话)
- B把A转给C(A跟C说话)
现在,在 CDR 中 table 我得到了两条记录。一个用于第一次调用(A<->B),另一个用于两次调用(B<->C 和 A<->C)。重点是在第二个 CDR 中,我丢失了对 A 的任何引用。
我想在第二个CDR 中保存Remote Party ID (A)。
我已经将自定义字段添加到 CDR table (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]
宏的开头添加了这一行。
在其他基于 Asterisk 的发行版中,它应该在另一个文件中。
我是 Asterisk 的新手,非常感谢任何帮助。
我正在尝试将远程方 ID (CONNECTEDLINE) 保存在转接呼叫的 CDR 日志 table 中。在盲转中没有问题,因为我在 src
字段中将远程方 ID 作为来电显示。
在有人值守的转接中,我丢失了原来的来电显示。
转移过程是这样的:
- A打电话给B(A跟B说话)
- B抱着A,给C打电话(B跟C说话)
- B把A转给C(A跟C说话)
现在,在 CDR 中 table 我得到了两条记录。一个用于第一次调用(A<->B),另一个用于两次调用(B<->C 和 A<->C)。重点是在第二个 CDR 中,我丢失了对 A 的任何引用。
我想在第二个CDR 中保存Remote Party ID (A)。
我已经将自定义字段添加到 CDR table (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]
宏的开头添加了这一行。
在其他基于 Asterisk 的发行版中,它应该在另一个文件中。