Asterisk

在 Asterisk 中確定哪個使用者發起呼叫

  • June 6, 2013

我的extensions.conf文件中有以下程式碼:

[local]
exten => _NXXNXXXXXX,1,Set(CALLERID(name)=${OUTGOING_NAME})
exten => _NXXNXXXXXX,n,Set(CALLERID(num)=${OUTGOING_NUMBER})

現在我想更改此程式碼以根據正在撥打電話的使用者/分機設置 CallerID 和號碼。事實上,我有四 (4) 個使用者/分機,sip.conf其中只有一個(我用於業務的那個)應該發送不同的來電顯示/號碼。

一切都在同一個上下文中(為簡單起見),因為所有線路都需要能夠接聽來電。唯一的區別是當line1需要撥打電話時,它必鬚髮送不同的呼叫者 ID/號碼並使用不同的提供商。

這是我到目前為止所擁有的:

[local]
exten => _NXXNXXXXXX,1,Set(line=${SIP_HEADER(From)})
exten => _NXXNXXXXXX,n,Verbose(line variable is <${line}>)
exten => _NXXNXXXXXX,n,Set(CALLERID(name)=${IF($[ ${line} = line1 ]?${COMPANY_NAME}:${FAMILY_NAME})})
exten => _NXXNXXXXXX,n,Set(CALLERID(num)=${IF($[ ${line} = line1 ]?${COMPANY_NUMBER}:${FAMILY_NUMBER})})
exten => _NXXNXXXXXX,n,Dial(${IF($[ ${line} = line1]?SIP/${EXTEN}@${COMPANY_PROVIDER}:SIP/${EXTEN}@${FAMILY_PROVIDER})})

我真的不知道這是否正確,我害怕extensions.conf在驗證之前將這些更改送出給我。

任何幫助將不勝感激。

經過一番調查,我發現我可以從${CALLERID(num)}.

所以,這就是我所做的:

[local]
exten => _NXXNXXXXXX,1,Set(line=${CALLERID(num)})
same => n,Verbose(line variable is <${line}>)
same => n,GotoIf($["${line}" = "line1"]?business-out,${EXTEN},1:family-out,${EXTEN},1)

[business-out]
...

[family-out]
...

希望對某人有所幫助

根據VoIP Info Wiki,您可以在每個分機的基礎上指定 SIP 分機的 callerid 資訊,如下所示:

callerid="Tuomas Tammisalo" <1000>

更新: 您可以 在通話開始時訪問CDR 變數。"${CDR(src)}" 將為您提供呼叫的源副檔名。

引用自:https://serverfault.com/questions/449464