Asterisk
在 Asterisk 中確定哪個使用者發起呼叫
我的
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)}" 將為您提供呼叫的源副檔名。