2015-01-15 128 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

相關問題