SCROLL
Среднее время на прочтение: 1 мин.

Маршрутизация входящего вызова в другой транк. Перенаправление звонков между транками в FreePBX 14

Столкнулся недавно с задачей по маршрутизации звонков между несколькими FreePBX соединенными SIP-транками. Необходимо вызов пришедший из одного SIP-транка на определенный номерной план передать в другой SIP-транк.

Имеется три АТС на базе FreePBX (13, 14) — FreePBX «A» (номерной план 1ХХ), FreePBX «B» (номерной план 2ХХ), FreePBX «C» (номерной план 3ХХ). Которые соединены между собой SIP-транками следующим образом:

FreePBX «A» <—-SIP TRUNK «A»—-> FreePBX «B» <—-SIP TRUNK «B»—-> FreePBX «C»

Для наглядности рассмотрим к примеру ситуацию когда необходимо дозваниваться с FreePBX "A" (1ХХ) до абонентов находящихся в FreePBX "С" (3ХХ) и в обратном направлении.

Можно конечно решить задачу соединив отдельным SIP-транком  FreePBX "A" и FreePBX "С", но рассмотрим другой вариант, когда к примеру нет возможности соединить их на прямую, тогда в этом случае посредником для звонков будет выступать FreePBX «B», т.к. он имеет связь по SIP-транку с FreePBX "С" и FreePBX "A".

Заходим на FreePBX «B» в файл /etc/asterisk/extensions_custom.conf добавляем обработки:

/etc/asterisk/extensions_custom.conf
[from-pstn-custom]
; Перевод на FreePBX "C"
exten => _3XX,1,Goto(outbound-allroutes,${EXTEN},1)
; Перевод на FreePBX "A" 
exten => _1XX,1,Goto(outbound-allroutes,${EXTEN},1)
Как это работает — контекст внешних вызовов from-pstn-custom принимает звонок на 3XX или 1XX и передает его сразу в контекст outbound-allroutes, где далее будет определен необходимый исходящий маршрут для вызова.

Контекст outbound-allroutes содержит в себе все правила исходящей маршрутизации, посмотреть эту секцию можно в файле /etc/asterisk/extensions_additional.conf:

/etc/asterisk/extensions_additional.conf
[outbound-allroutes]
include => outbound-allroutes-custom
include => outrt-3 ; Russia
include => outrt-4 ; Ukraine
include => outrt-5 ; Belarus
include => outrt-6 ; FreePBX "A"
include => outrt-7 ; FreePBX "C"
exten => foo,1,Noop(bar)

;--== end of [outbound-allroutes] ==--;

Вместо контекста outbound-allroutes можно указать конкретные исходящие маршруты, для 3XX - outrt-6, а для 1ХХ - outrt-6. В случае указания outbound-allroutes, то поиск подходящего исходящего маршрута будет перебором по очереди.

 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ

Обсуждение

0 комментариев

Нет комментариев.