确定 Asterisk 中哪个用户发起了呼叫

确定 Asterisk 中哪个用户发起了呼叫

我的文件中有以下代码extensions.conf

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

现在我想更改此代码以根据拨打电话的用户/分机设置来电显示和号码。事实上,我的系统中有四 (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在验证之前将这些更改提交给我

任何帮助将不胜感激。

答案1

根据VoIP 信息维基您可以按分机指定 SIP 分机上的呼叫者 ID 信息,如下所示:

callerid="Tuomas Tammisalo" <1000>

更新: 您可以访问CDR 变量 通话已开始。“${CDR(src)}”会为您提供该通话的源分机号。

答案2

经过一番调查,我发现我可以从中获得我需要的信息${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]
...

希望对某人有帮助

相关内容