Разбор кейса с объединением двух АТС MikoPBX
В нашем случае-примере компания call-центра имеет два офиса: в Москве и в Санкт-Петербурге. В каждом офисе используется отдельная станция MikoPBX:
АТС Москва - 192.168.0.202 - все внутренние номера сотрудников назначены по шаблону 2ХХ (пример - 201, 202, 203, ...)
АТС Петербург - 192.168.0.201 - все внутренние номера сотрудников назначены по шаблону 3ХХ (пример - 301, 302, 303, ...)
Необходимо объединить эти две АТС, реализовать единый внутренний план номеров: сотрудники из офиса в Москве должны иметь возможность по короткому номеру набрать сотрудников из офиса Санкт-Петербурга и наоборот.
Схематично маршрутизация вызовов представлена на рисунке ниже.
Для каждой АТС необходимо добавить учетную запись провайдера. Для её создания необходимо перейти в Маршрутизация → Провайдеры телефонии.
Создайте провайдеров и заполните параметры подключения следующим образом:
В «Расширенные настройки» -> «Переопределение SIP заголовка «From»» - установите флаг «Отключить использование поля fromuser». Сделать это нужно для двух провайдеров.
В «Расширенные настройки» -> «Дополнительные параметры» следует прописать:
[endpoint]
set_var=IGNORE_TIME=1
Эта опция отключит функционал «Нерабочее время» для всех входящих через этого провайдера.
Необходимо перейти в "Маршрутизация" → "Исходящие маршруты". Опишите исходящие маршруты как на скриншоте ниже:
Добавим для каждой АТС одинаковое приложение диалплана, которое будет переадресовывать звонки на внутренние номера . В разделе "Модули" -> "Приложения диалпланов" добавим новое приложение со следующими параметрами:
"Название" - произвольное название
"Номер для вызова приложения" - произвольный уникальный номер
"Тип кода" - Диалплан Asterisk
Перейдите во вкладку "Программный код", добавьте код для обработки звонков:
1, GoTo(internal,${FROM_DID},1)
n, Hangup()
Создайте входящий маршрут для каждой АТС. Для этого перейдите в раздел "Маршрутизация" -> "Входящие маршруты", добавьте новое правила со следующими параметрами:
В целях безопасности, переадресация на «Внешние» номера телефонов запрещена!
Для того, чтобы снять данной ограничение, добавьте через раздел "Система" -> "Кастомизация системных файлов" в конец файла "extensions.conf" следующий код:
[internal-transfer](+)
exten => _2XX,1,Set(__ISTRANSFER=transfer_)
same => n,Goto(outgoing,${EXTEN},1)
Это разрешит переадресацию на 2XX номера.
На второй АТС, чтобы разрешить переадресацию на 3XX номера добавьте через раздел "Система" -> "Кастомизация системных файлов" в конец файла "extensions.conf" следующий код:
[internal-transfer](+)
exten => _3XX,1,Set(__ISTRANSFER=transfer_)
same => n,Goto(outgoing,${EXTEN},1)
Это разрешит переадресацию на 3XX номера.
В некоторых случаях, абонентам одной АТС потребуется знать статусы абонентов другой станции. К примеру при использовании:
BLF на телефонных аппаратах
«Панель телефонии для 1С»
Для настройки статусов потребуется:
Добавьте на первой АТС через раздел Кастомизация системных файлов в конец файла extensions.conf следующий код:
[internal-hints]
exten => 301,hint,PJSIP/301
exten => 303,hint,PJSIP/303
exten => 302,hint,PJSIP/302
Для каждой АТС добавьте через раздел Кастомизация системных файлов в конец файла pjsip.conf:
[<ID-Провайдера-Текщуей-АТС>-devicestate]
type=outbound-publish
server_uri=sip:<ID-Провайдера-Текщуей-АТС>@<ID-Провайдера-Другой-АТС>:<SIP-Порт-Другой-АТС>
event=asterisk-devicestate
[<ID-Провайдера-Текщуей-АТС>]
type=asterisk-publication
devicestate_publish=<ID-Провайдера-Текщуей-АТС>-devicestate
device_state=yes
[<ID-Провайдера-Текщуей-АТС>]
type=inbound-publication
event_asterisk-devicestate=<ID-Провайдера-Текщуей-АТС>
Замените теги <ID-Провайдера-Текщуей-АТС>, <ID-Провайдера-Другой-АТС>, <SIP-Порт-Другой-АТС> на свои значения
Добавьте на второй АТС через раздел Кастомизация системных файлов в конец файла extensions.conf следующий код:
[internal-hints]
exten => 201,hint,PJSIP/201
exten => 203,hint,PJSIP/203
exten => 202,hint,PJSIP/202
В идеале, на каждой АТС должен быть свой диапазон номеров SIP и они не должны пересекаться, однако на практике, возможно и наложение. В этом случае можно столкнуться с проблемой звонка с одной АТС на другую: вызов может обрываться.
Проблему можно обойти. Для этого на каждой АТС следует добавить через раздел "Система" -> "Кастомизация системных файлов" в конец файла extensions.conf следующий код:
[ID_PROVIDER-outgoing-custom]
; При исходящем в caller ID добавляем префикс "_" (нижнее подчеркивание)
exten => _X!,1,Set(CALLERID(num)=_${CALLERID(num)})
same => n,return
[ID_PROVIDER-incoming-custom]
; При входящем удаляем префикс, для корректного отображения callerid
exten => _[0-9*#+]!,1,Set(CALLERID(num)=${CALLERID(num)=:1})
same => n,return
ID_PROVIDER - это идентификатор провайдера текущей АТС, посмотреть его можно в адресной строке браузера:
В некоторых случаях необходимо разрешить подключенной АТС совершать звонки через подключенных провайдеров.
На АТС, где настроен провайдер для исходящих, следует добавить через раздел "Система" -> "Кастомизация системных файлов" в конец файла extensions.conf следующий код:
[ID_PROVIDER-incoming-custom]
; Входящие от Питера на номера МСК
exten => _[78]XXXXXXXXXX,1,Dial(Local/${FROM_DID}@outgoing,,${TRANSFER_OPTIONS}Kg)
same => n,return()
ID_PROVIDER - это идентификатор провайдера, через которого подключена удаленная АТС, посмотреть его можно в адресной строке браузера.
Таким образом мы соединили две АТС! Подтверждением успешного подключения двух станций служит зеленый индикатор напротив учетной записи провайдера:
Для АТС Москва(192.168.0.202):
Для АТС Петербург(192.168.0.201):
Аналогичным образом можно подключить три и даже четыре станции! Нужно понимать, что в случае соединения трех АТС каждая АТС должна иметь не один, а уже два провайдера. Схематично это изобразить можно так: