Freepbx自定义上下文出站路由

时间:2014-12-30 13:29:37

标签: linux pattern-matching asterisk sip pbx

我正在尝试配置freepbx以通过特定中继路由某些扩展。我已经看到了一些方法来实现这一点,目前正在尝试使用自定义上下文。

基本上我在同一个PBX上使用两个公司,并且来自具有公司1的上下文的扩展的呼叫需要通过company1中继线,并且来自具有公司2的上下文的扩展的呼叫需要通过company2中继线。

这是我到目前为止所做的:

[from-internal]
exten => h,1,Hangup()


[company1]
exten => 1234512345,1,Set(__FROM_DID=${EXTEN})
exten => 1234512345,n,Gosub(app-blacklist-check,s,1)
exten => 1234512345,n,ExecIf($[ "${CALLERID(name)}" = "" ] ?Set(CALLERID(name)=${CALLERID(num)}))
exten => 1234512345,n,Set(__CALLINGPRES_SV=${CALLERPRES()})
exten => 9498851902,n,Set(CALLERPRES()=allowed_not_screened)
exten => s,1,Dial(SIP/1500)

[company2]
exten => 1234567890,1,Set(__FROM_DID=${EXTEN})
exten => 1234567890,n,Gosub(app-blacklist-check,s,1)
exten => 1234567890,n,ExecIf($[ "${CALLERID(name)}" = "" ] ?Set(CALLERID(name)=${CALLERID(num)}))
exten => 1234567890,n,Set(__CALLINGPRES_SV=${CALLERPRES()})
exten => 1234567890,n,Set(CALLERPRES()=allowed_not_screened)
exten => s,1,Dial(SIP/1701)

这是从讨论多租户的网站上获取的。我需要修改它,以便任何扩展进入我指定的主干。我确信我可以为任何扩展程序设计模式匹配,但是我怎么能说转到这个主干为例。我似乎无法找到任何相关内容。

1 个答案:

答案 0 :(得分:0)

最后,在阅读了我可以掌握的每一份文档后,再去寻找解决方案。

我在extensions_custom.conf中使用了以下代码:

[company1]
include => from-internal
exten => _X.,1,Set(_COMPANY=company1)
include => macro-dialout-trunk-predial-hook

[company2]
include => from-internal
exten => _X.,1,Set(_COMPANY=company2)
include => macro-dialout-trunk-predial-hook

我在extensions.conf中使用了以下代码

[macro-dialout-trunk-predial-hook]
exten => s,1,Set(PREDIAL_HOOK_RET=)
exten => s,n,Set(DIAL_TRUNK=${IF($[ ${COMPANY} = company2]?2:${IF($[ ${COMPANY} = company1]?1:99)})})
exten => s,n,Set(OUTBOUND_GROUP=${IF($[ ${COMPANY} = company2]?2:${IF($[ ${COMPANY} = company1]?1:99)})})
exten => s,n,ExecIf($[${ISNULL(${COMPANY})}]?Hangup())
exten => s,n,MacroExit()

我确信这可以整理和改进,但就目前而言,我有我需要的解决方案。希望这会帮助其他人。