Linux Freepbx自定义上下文出站路由

Linux Freepbx自定义上下文出站路由,linux,pattern-matching,asterisk,sip,pbx,Linux,Pattern Matching,Asterisk,Sip,Pbx,我正在尝试配置freepbx,以便通过特定的中继路由某些扩展。我已经看到了一些实现这一点的方法,目前正在尝试使用自定义上下文来实现这一点 基本上,我在同一个PBX上使用两个公司,来自公司1上下文的分机的呼叫需要通过公司1中继,来自公司2上下文的分机的呼叫需要通过公司2中继 以下是我到目前为止的情况: [from-internal] exten => h,1,Hangup() [company1] exten => 1234512345,1,Set(__FROM_DID=${EXT

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

基本上,我在同一个PBX上使用两个公司,来自公司1上下文的分机的呼叫需要通过公司1中继,来自公司2上下文的分机的呼叫需要通过公司2中继

以下是我到目前为止的情况:

[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)

这是从一个讨论多租户的网站上拍摄的。我需要修改它,以便任何扩展都可以转到我指定的主干。我确信我可以为任何扩展计算出模式匹配,但是我怎么能说转到这个主干呢。我似乎找不到这方面的任何信息。

在阅读了我能找到的每一份文档之后,我终于找到了解决方案

我在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()

我相信这是可以整理和改进的,但现在,我有我需要的解决方案。希望这能帮助其他人。

为什么在不需要/不期望的上下文中使用freepbx宏?你真的不明白你在说什么。除去包含的内容,它仍然可以工作same@arheops恕我直言,我不是专家,只是找到了一个可行的解决方案。如果你有更好的办法,我会洗耳恭听,但没有必要这样做。