Исходящий маршрут пользовательского контекста Freepbx

Я пытаюсь настроить freepbx для маршрутизации определенных расширений через определенный транк. Я видел несколько способов сделать это и в настоящее время пытаюсь сделать это с помощью пользовательских контекстов.

В основном я использую две компании на одной и той же АТС, и звонки с добавочных номеров с контекстом компании 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)

Это было взято с сайта, обсуждающего мультитенанты. Мне нужно изменить это так, чтобы любое расширение шло к указанной мною магистрали. Я уверен, что смогу найти соответствие шаблону для любого расширения, но как я могу сказать, например, перейти к этой магистрали. Кажется, я ничего не могу найти по этому поводу.


person The Humble Rat    schedule 30.12.2014    source источник


Ответы (1)


Наконец, найдите решение для этого после прочтения каждой части документации, до которой я мог дотянуться.

Я использовал следующий код в 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()

Я уверен, что это можно исправить и улучшить, но на данный момент у меня есть нужное мне решение. Надеюсь, это поможет кому-то другому.

person The Humble Rat    schedule 31.12.2014
comment
Почему вы использовали макрос freepbx в контексте, который не нужен/не ожидается? Швы, вы действительно не понимаете, что вы делаете. Удалите это включение, оно все равно будет работать так же - person arheops; 31.12.2014
comment
@arheops, при всем уважении, я не эксперт и просто нашел работающее решение. Если у вас есть лучший способ, я весь слушаю, но унижение просто не нужно. - person The Humble Rat; 02.01.2015