Настройка входящих и исходящих вызовов в FreePBX


В продолжение статьи "Установка FreePBX Core в Ubuntu Linux 18.04" я сегодня продемонстрирую как настроить маршрутизацию входящих вызовов и реализуем исходящие вызовы через транк Zadarma, я буду реализовывать максимально простую маршрутизацию для SOHO-клиентов, без использования IVR и т.п.

Простейшая настройка FreePBX для реализации системы телефонии для SOHO

Итак, немного более детально что я хочу сделать:

  • Все входящие вызовы перенаправляются на несколько внутренних номеров (менеджеры) и если менеджер не берет трубку, то мы проигрываем сообщение дескать все ушли на фронт и оставьте зявку после гудка
  • Все исходящие вызовы уходят в многоканальный транк Zadarma
  • Так же необходима запись телефонных разговоров и статистика звонков входящих и исходящих

Как вы видите хотелки довольно простые и реализовать их может абсолютно любой и вам даже не придется прибегать к услугам системного администратора для модификации правил звонков, все максимально просто, а все работы выполняются через web-интерфейс, а единственной сложностью является настройка транка для входящих и исходящих звонков поэтому мы с нее сразу же и начнем.

Настройка исходящих и входящих звонков в FreePBX через Zadarma

Все настройки подключения вы можете найти на официальном сайте и в моем случае для исходящих звонков я получил следующие настройки:

type=friend
qualify=no
insecure=port,invite
host=sip.zadarma.com
fromuser=481441
secret=xxxPASSWORDxxx
fromdomain=sip.zadarma.com
dtmfmode=rfc2833
disallow=all
directmedia=no
defaultuser=481441
allow=alaw
t38_udptl=yes
t38_rtp=yes
context=from-trunk

Для входящих подключений соответственно:

481441:xxxPASSWORDxxx@sip.zadarma.com/481441

Переходим в web-интерфейс управления FreePBX и далее соответственно в меню Connectivity -> Trunks:

Настройка входящего и исходящего транка FreePBX

 

Выбираем пункт Add SIP (chan_sip):

Добавляем CHAN-SIP-TRUNK

В появившемся окне на вкладке General заполните поля:

  • Trunk Name - адекватное имя транка для внутренних нужд (будет использоваться для внутренних нужд)
  • Outbound CallerID - Отображаемое имя для исходящих звонков (ваш логин транка в Zadarma)
  • Maximum Channels - Максимальное число одновременно выполняющихся исходящих вызовов (так как линии многоканальные я бы рекомендовал ограничить число одновременных звонков в разумных пределах)

Вкладка General в настройках исходящих транков в FreePBX

Трансформации исходящих номеров нам не требуется и мы сразу переходим на вкладку sip Settings, где на вкладках Incomming и Outgouing настраиваем подключения согласно описанных выше конфигураций подключения, где для Outgouing для исходящих звонков (к имени добавьте окончание out или что-нибудь подобное чтобы подчеркнуть, что это исходящий транк):

Исходящие звонки через Zadarma в FreePBX

И соответственно для входящего:

Входящий транк задарма

Как вы видите на этот раз мы заполняем поле Register Sring. После того как вы настроили все описанные выше параметры, то нажмите на кнопку Submit и обязательно нажмите на кнопку Apply config (красная в правом верхнем углу). Не забывайте применять настройки для перезагрузки конфигурации Asterisk, так как FreePBX это лишь Web-интерфейс для Asterisk, то делать это придется довольно часто на этапе конфигурации правил звонков.

Не забывайте применять настройки

Если у вас есть доступ в консоль астериск, то вы можете выполнить команды sip show registry и  sip show peers для проверки того, что соединение с серверами Zadarma прошло успешно:

freepbx*CLI> sip show registry
Host                                    dnsmgr Username       Refresh State                Reg.Time                
sip.zadarma.com:5060                    Y      481441             105 Registered           Mon, 15 Apr 2019 16:38:30
1 SIP registrations.
freepbx*CLI> sip show peers
Name/username             Host                                    Dyn Forcerport Comedia    ACL Port     Status      Description                     
zadarma_481441_out/481441 185.45.152.174                              Yes        Yes            5060     Unmonitored                                 
1 sip peers [Monitored: 0 online, 0 offline Unmonitored: 1 online, 0 offline]

Если все прошло успешно, то переходим к настройке исходящей маршрутизации звонков.

Настройка исходящих звонков через VOIP-провайдера Zadarma

С настройкой исходящих вызовов через Zadarma все довольно просто и вам необходимо перейти в раздел Connectivity -> Outbound Routes, где соответственно нажать кнопку Add Outbound Route (как вы видите все пока достаточно логично и главное не сложно).

Настройка исходящей маршрутизации звонков через Zadarma в FreePBX

В нашем случае будет только один маршрут для всех исходящих звонков, но на практике такое встречается довольно редко и обычно используя регулярные выражения описывающие направления звонков строится полноценная маршрутизация на ряд провайдеров IP-телефонии и голосовые шлюзы с целью прежде всего минимизировать расходы на связь. Иногда, исходящие маршруты так же используются для объединения нескольких IP-АТС с целью совершения бесплатных звонков между филиалами компании.

Пример настройки нескольких маршрутов исходящих вызовов

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

Базовые настройки

Как вы видите на вкладке Route Settings я заполнил только два параметра:

  • Route Name - Имя схемы маршрутизации
  • Trunk Sequence for Matched Routes - Последовательность исходящих транков через которые будут совершаться звонки

Есть еще конечно очень много других интересных параметров, но они выходят за рамки нашего разбора простой SOHO-АТС. Вкладка Dial Patterns как раз и задает те самые регулярные выражения которым должен соответствовать набираемый сотрудником номер для того, чтобы он попал в заданные правила.

Простой паттерн Freepbx для сотовых номеров

Я создал простое правило (XXXXXXXXXXX) которое говорит о том, что все набираемые номера федерального формата (с префиксом 9) отправляются в исходящий шлюз Zadarma (использование префикса 9 не обязательное, но это стало обыденной практикой и безпрефиксный выход на линию в России скорее исключение из правил).

Здесь правда есть одна маленькая деталь, которая заключается в том, что Задарма ждет, что вы будете передавать ей номера в формате 7-913-956-84-70, а у нас обычно принято говорить номера в формате 8-999-465-84-71 и обычно так их и набирают. Можно конечно угрожать всеми возможными карами небесными и заставлять набирать через 7-ку, но так вы себе только карму испортите :) Лучше написать правила правила преобразования номера в требуемый формат, например так:

Заменить 8-ку на -7-ку в FreePBX

Как вы видите получается замечательный костыль и честно говоря писать правила в Web-интерфейсе удовольствие сомнительное и для более сложных манипуляций лучше использовать язык сценариев Asterisk.

Настраиваем маршрутизацию входящих звонков

Как я сказал выше, при входящем звонке на привязанный городской номер телефона необходимо осуществить одновременный вызов всех телефонов из группы "менеджеры" и кто первый взял трубку тот и молодец, а если никто таки трубку не взял, то воспроизводим голосовое сообщение дескать сорян, все ушли на фронт, но ты не переживай и надиктуй автоответчику чего собсно хотел то. Следовательно нам надо первым делом сделать запись слезных извинений и залить ее в FreePBX (все преобразования формата аудио-файла будут выполнены автоматически).

Перейдите в раздел Admin -> System Recordings и нажмите кнопку Add Recording.

Добавить голосовое сообщение в FreePBX

Вам надо будет при помощи Drag'n'Drop закинуть ваш текстовый файл и заполнить поле Name, естественно нажимаем подтверждаем добавление нажатием кнопки Submit. После добавления аудиозаписи нам потребуется создать группу менеджеров которые будут принимать звонки для чего переходим в раздел Applications -> Ring groups и конечно же создаем группу нажатием кнопки Add Ring Group.

Создание группы входящих вызовов

В настройках группы необходимо заполнить следующие поля:

Настройка группы звонка

Обратите внимание, что при условии что вся группа не ответила, мы отправляем клиента на голосовую почту определенного сотрудника (под это дело можно определить и фиктивную учетную запись).

Группа вызова недоступна

Для того чтобы проигрывалось наше сообщение, а не стандартное мы меняем настройки оповещения о недоступности пользователя или можно для этого создать отдельный IVR (для одного направления проще сделать перенаправление на голосовую почту, а сами сообщение отправлять групповую электронную почту менеджеров).

Нам теперь остается лишь настроить входящие звонки на виртуальный городской номер на группу менеджеров, что как вы наверное догадались настраивается в разделе Connectivity -> Inbound Routes, где аналогичным методом создаем правило входящей маршрутизации.

Настройка входящей маршрутизации звонков в FreePBX

Маршрутизация может осуществляться на основании номера вызывающего абонента или транка на который поступил вызов, но если ничего не указать (как в моем случае, то все звонки уйдут на группу вызова или IVR).

Перенаправление входящих звонков на IVR

На этом я думаю, что пока закончим и если будет интересно могу подробнее рассказать про запись разговоров и голосовое меню (IVR).