Разбор кейса с объединением двух АТС 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):
Аналогичным образом можно подключить три и даже четыре станции! Нужно понимать, что в случае соединения трех АТС каждая АТС должна иметь не один, а уже два провайдера. Схематично это изобразить можно так:
Инструкция по объединению нескольких АТС
Перейдите в раздел "Маршрутизация" -> "Провайдеры телефонии":
Создайте нового IAX провайдера:
Заполните параметры:
"Название провайдера" - произвольное.
"Хост или IP адрес" - IP адрес FreePBX.
"Логин" - "tmp".
"Пароль" - произвольный, сложный пароль.
Сохраните параметры.
После сохранения параметров, в адресной строке появится идентификатор провайдера. Скопируйте его в раздел "Логин":
Перейдите в раздел «Connectivity» - «Trunks» и добавьте новый trunk IAX2
Перейдите на вкладку "General". Укажите в качестве «Trunk Name» логин, используемый в MIKOPBX (из адресной строки браузера «IAX-TRUNK-1E8B1CFE»)
Перейдите на вкладку «Dialed Number Manipulation Rules» задайте шаблон для исходящих:
Перейдите на вкладку iax2 Settings. Заполните поле Trunk Name логин, используемый в MIKOPBX (из адресной строки браузера «IAX-TRUNK-1E8B1CFE»)
Заполните параметр "PEER Details":
type=friend
auth=plaintext
language=ru-ru
qualify=2000
transfer=mediaonly
disallow=all
;username=mikopbx
host=dynamic
trunk=yes
secret=123
allow=alaw&ulaw
Во вкладке «Incoming» заполните поле «Register String» в формате "LOGIN:PASSWORD@IP_FREE_PBX":
Опишите входящий маршрут (см. руководство "Входящие маршруты"). В данном случае, все вызовы будут направлены на внутренний номер 201:
При необходимости опишите отдельно на каждый DID свой номер назначения в отдельном маршруте:
Опишите исходящую маршрутизацию (см. руководство "Исходящие маршруты"):
Перейдите в раздел «Connectivity» - «Inbound Routes», опишите входящий маршрут:
Перейдите в раздел «Connectivity» - «Outbound Routes», опишите исходящий маршрут:
Инструкция по объединению нескольких АТС
В MikoPBX перейдите во вкладку "Маршрутизация" -> "Провайдеры телефонии":
Создайте нового SIP-провайдера. Для этого нажмите "Подключить SIP":
Заполните следующие параметры:
"Название провайдера" - произвольное
"Тип учетной записи" - Входящая регистрация
Скопируйте логин и пароль, они понадобятся позже.
В интерфейсе FreePBX перейдите в раздел "Connectivity" -> "Trunks":
Добавьте новый транк, типа "chan_pjsip".
Вставьте логин провайдера из MikoPBX в поле "Trunk Name":
Перейдите во вкладку "pjsip Settings" -> "Advanced":
В поле «From User» вставьте значение «Логин провайдера MikoPBX»
Установите «Trust RPID/PAI» в значение "yes"
Установите «Send RPID/PAI» в значение «Send Remote-Party-ID header»
Опишите шаблоны номеров на вкладке «Dialed Number Manipulation Rules»:
Сохраните изменения.
Далее Вам необходимо выбрать один из двух вариантов регистрации:
Устанавите пароль (сложный, произвольный). Он должен быть одинаковый как на MikoPBX, так на FreePBX.
В «расширенных настройках» MikoPBX, в «Дополнительных параметрах» укажите следующие опции:
[endpoint]
trust_id_inbound=yes
send_rpid=yes
Сохраните и примените изменения.
Опишите исходящий маршрут (Статья "Исходящая маршрутизация") в MikoPBX:
Опишите входящий маршрут (Статья "Входящая маршрутизация") в MikoPBX:
При необходимости опишите отдельно на каждый DID свой номер назначения в отдельном маршруте (Если пользователь FreePBX наберет номер 202, то будет направлен на номер 202):
Перейдите в раздел «Connectivity» - «Inbound Routes», опишите входящий маршрут в FreePBX:
Перейдите в раздел «Connectivity» - «Outbound Routes», опишите исходящий маршрут:
В некоторых случаях, абонентам одной АТС потребуется знать статусы абонентов другой станции.
К примеру при использовании BLF на телефонных аппаратах «Панель телефонии для 1С» Для настройки статусов потребуется:
Добавьте на первой АТС через раздел Кастомизация системных файлов в конец файла "extensions.conf" следующий текст:
[internal-hints]
exten => 301,hint,PJSIP/301
exten => 303,hint,PJSIP/303
exten => 302,hint,PJSIP/302
Описываются все внутренние номера, что описаны на FreePBX
Для каждой АТС добавьте через раздел Кастомизация системных файлов в конец файла "pjsip.conf":
[SIP-TRUNK-41C1B8B4-devicestate]
type=outbound-publish
server_uri=sip:[email protected]:5060
event=asterisk-devicestate
[SIP-TRUNK-41C1B8B4]
type=asterisk-publication
devicestate_publish=SIP-TRUNK-41C1B8B4-devicestate
device_state=yes
[SIP-TRUNK-41C1B8B4]
type=inbound-publication
event_asterisk-devicestate=SIP-TRUNK-41C1B8B4
Замените теги "SIP-TRUNK-41C1B8B4" на ID провайдера MikoPBX, "172.16.156.216" на адрес FreePBX на свои значения
Используйте модуль «Config Edit» для редактирования файлов
Добавьте к файлу «extensions_custom.conf»
Тут следует описать все внутренние номера MikoPBX:
[mikopbx-hints]
exten => 201,hint,PJSIP/201
exten => 202,hint,PJSIP/202
Добавьте к файлу «pjsip_custom.conf»
[SIP-TRUNK-41C1B8B4-devicestate]
type=outbound-publish
server_uri=sip:[email protected]:5060
event=asterisk-devicestate
outbound_auth=SIP-TRUNK-41C1B8B4
[SIP-TRUNK-41C1B8B4]
type=asterisk-publication
devicestate_publish=SIP-TRUNK-41C1B8B4-devicestate
device_state=yes
device_state_filter=^PJSIP/
[SIP-TRUNK-41C1B8B4]
type=inbound-publication
event_asterisk-devicestate=SIP-TRUNK-41C1B8B4
Замените теги "SIP-TRUNK-41C1B8B4" на ID провайдера MikoPBX, "172.16.156.216" на адрес FreePBX на свои значения
Опция outbound_auth=SIP-TRUNK-41C1B8B4 актуальна только для случая, когда FreePBX регистрируется на MikoPBX. Передачу статусов удалось настроить только для этого случая.
Инструкция по объединению двух АТС
Существует задача: в компании два отдела, один (Администрация) должен работать в рамках АТС Grandstream, другой (Отдел продаж) должен работать с MikoPBX и иметь возможность интеграции с 1C. В рамках данной статьи опишем пример объединения станций, следуя следующим правилам:
Администрация- имеет внутренний номерной план 1XX.
Отдел продаж - имеет внутренний номерной план 3XX.
К Grandstream подключена внешняя линия для звонков в город.
MikoPBX должна использовать внешнюю линию Grandstream для звонков в город.
Абоненты 1XX должны иметь возможность позвонить абонентам 3XX.
Абоненты 3XX должны иметь возможность позвонить абонентам 1XX.
Перейдите в раздел «Extensions / Trunk» -«VoIP Trunk», нажмите «Add SIP Trunk». Заполните все необходимые данные:
«Provider name» - укажите произвольное имя провайдера, к примеру MikoPBX
«Host Name» - укажите IP-адрес Вашей MikoPBX
«Transport» - укажем UDP
Установите флаг «Keep Original CID»
Нажмите кнопку «Save».
У Вас должен получится подобный список транков:
Добавим правило, которое позволит абонентам Grandstream (1XX) звонить на внутренние номера MikoPBX 2XX. Для этого:
Перейдите в раздел «Extensions / Trunk» - «Outbound Routes». Добавьте новый маршрут, укажите для него следующие параметры:
Установите «Trunk» в значение «SIP Trunks – MikoPBX»
«Calling Rule Name» в значение «MikoPBX» (произвольное, понятное вам значение)
«Pattern» в значение:
«Privilege Level» - в данном случае можно установить internal, на MikoPBX нет выхода на город / межгород
Добавим правило, которое позволит абонентам MikoPBX (2XX) звонить на внутренние номера Grandstream (1XX). Для этого:
Перейдите в раздел «Extensions / Trunk» - «Inbound Routes». Добавьте новый маршрут, укажите для него следующие параметры:
Выберите trunk «SIP Trunks – MikoPBX»
Добавьте маршрут с Pattern = _1XX
Установите «Allowed DID Destination» в значение «Extension»
Установите «Default detination» в значение «By DID»
Установите «Privilage Level» в значение «internal»
Добавим правило, которое позволит абонентам MikoPBX (2XX) звонить на внешние номера РФ
Перейдите в раздел «Extensions / Trunk» - «Inbound Routes». Добавьте новое правило входящей маршрутизации. Укажите следующие параметры:
Выберите trunk «SIP Trunks – MikoPBX»
Добавьте маршрут с Pattern = _[78]XXXXXXXXXX
Установите флаг «Dial trunk»
Установите «Allowed DID Destination» в значение «Extension»
Установите «Default detination» в значение «By DID»
Установите «Privilage Level» в значение «National»
Итоговый список входящих маршрутов «SIP Trunks – MikoPBX»:
Для того, чтобы на стороне MikoPBX корректно отображался CID в карточке Extension, следует прописать CallerID Number:
Перейдите в раздел «Extensions / Trunk» - «Extension». Заполните параметры на примере скриншота ниже.
Добавим возможность в IVR звонить на номера MikoPBX (_2XX). Для этого перейдите в раздел «Call Features» - «IVR», создадим / откроем на редактирование IVR:
Выполните следующие действия:
Установите «Dial Other Extensions» в значение Yes
Установите «Dial Trunk» в значение Yes
На вкладке «Key Pressing Events» настройте переадресацию на External number:
Перейдите в раздел «Маршрутизация» - «Провайдеры телефонии». Добавьте нового провайдера, со следующими параметрами:
«Название провайдера» - произвольное, понятное имя, к примеру Grandstream
«Тип учетной записи» - Аутентификация по IP адресу, без пароля
«Хост или IP адрес» - адрес АТС Grandstream
Сохраните изменения.
Добавим правило, которое позволит абонентам Grandstream (1XX) звонить на внутренние номера MikoPBX 2XX
Перейдите в раздел «Маршрутизация» - «Входящие маршруты»
Создайте новое правило со следующими параметрами:
Провайдер» - выберите «Grandstream»
«DID» - укажите шаблон «2XX»
«Телефонный номер» - «Направить на сотрудника (сопоставить по DID)»
«Время в секундах…» укажите значение 300
Сохраните изменения.
Добавим правило, которое позволит абонентам MikoPBX (2XX) звонить на внутренние номера Grandstream (1XX)
Перейдите в раздел «Маршрутизация» - «Исходящие маршруты»
Создайте новое правило, со следующими параметрами:
Номер начинается с «1».
Остальная часть номера состоит из «2».
Направить звонок через провайдера «Grandstream».
Перейдите в раздел «Маршрутизация» - «Исходящие маршруты»
Создайте новое правило, со следующими параметрами:
Номер начинается с (7|8).
Остальная часть номера состоит из 10.
Направить звонок через провайдера «Grandstream».
Перейдите в раздел «Телефония» - «Очереди вызовов».
Добавьте очередь с внутренним номером 90000099.
Направьте маршрут по умолчанию на очередь.
На этом настройка завершена!
_2XX
_90000099