Development of communication systems
January 2012 8

Бюджетный вариант виртуальной АТС с не бюджетными возможностями

From Sandbox
В этом топике я попробую рассказать про попытку организовать бюджетный `виртуальный телефонный офис`.


И так, изначально имеется:
  • пара десятков мелких офисов (арендаторы).
  • телефония приходящая им по сипу
  • пользовательские SIP телефоны и софтфоны.
  • желание некоторых клиентов вместо просто телефона на столе, иметь фичи: авто секретарь/расписание/голосовая почта/запись звонков и нежелание иметь настоящую PBX и администратора для этого дела.
  • наше желание сделать хорошо клиентам.
  • системный администратор который знает такие страшные слова как linux и asterisk.


попытка реализовать желания клиентов, вложившись только в сервер, под катом.



Погуглив, решено было копать в сторону asterisk или freeswitch.


Погуглив еще было обнаружено, что большое количество предложений 'виртуального офиса' для астериска это либо `пять пунктов одноуровнего IVR` либо астериск с FreePBX установленный в виртуальную машину ( почему то очень любят OpenVZ ). От FreePBX в виртуальной машине было решено пока отказаться — интерфейс ни сколько не для пользователя, и к каждому такому астериску надо прилагать администратора, да и рулить кучкой астерисков в виртуальных машинах не айс. Для FS есть интересная штука, которая вроде как может Multi-Tenant — blue.box, но на FS пока смотрим осторожно ( с астериском больше опыта работы ), поэтому тоже пока прошли мимо.


По запросу 'виртуальная атс' гугл отдает кучу ссылок, почти все из которых собственно предложения провайдеров, например, что то типа 'СВЕТЕЦ' который сейчас в octopus'e и ростелекоме — красиво, но у себя поставить не получится, либо дорого либо в принципе продают только услугу.


Еще немного поискав можно нагуглить VitualPBX, без особых изысков в гуе, зато на астериске к которому можно допилить, что то свое.


Судя по документации хотелки пользователей:
  • авто секретарь
  • расписание
  • голосовая почта
  • запись звонков


и наши:
  • asterisk + изоляция пользователей
  • управление из одного места
  • локальные звонки между офисами в одном здании


там реализованы + еще несколько десятков не всегда телефонных, но кому то может и полезных фичь.

Собственно его и будем настраивать



Смотрим актуальную версию на главной странице ( latest VMWare image ) и качаем её.

Сейчас это: VM Ware образ с номером 8645 9613 ( virtual-pbx.ru/ru-downloads.html ).

Проверяем обновления и если есть тоже скачиваем последний .tgz.

Для тех у кого была установлена предыдущая версия обновление будет выглядеть примерно так:

cd /tmp
wget http://virtual-pbx.ru/updates/vpbx/VirtualPBX-8645.tgz
tar -xzvf VirtualPBX-8645.tgz
cd VirtualPBX-8645
rpm -Fvh *.rpm


Сделаем предварительную настройку, по документации, после чего заходим в интерфейс администратора:




_https://server_ip/ai_

в списке групп выберем группу default и поправим нужные нам настройки, у нас это было:
  • Dialout asterisk context ( поменяли на vpbx-local )
  • Maximum Number of Schedule items in ext
  • + лимиты
  • разрешаем использование всех дополнительных фичь.





Примерный план того, что хочется сделать в качестве шаблона для каждого пользователя:


  • зарегистрировать номер у провайдера ( перенести с IP-телефона на asterisk )
  • завести телефонные номера ( подключаем IP-телефоны и cофтфоны к нашему virtual-pbx )
  • входящая / исходящая маршрутизация
  • сделать шаблон стандартного IVR с:
    — расписание
    — black list
    — авто секретарь
    — роутинг по отделам
    — голосовая почта


Приступаем



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

tail -5 /etc/asterisk/extensions.conf
[vpbx-local]
; общий номер для всех
exten => 0999,1,Goto(xvb-main,${EXTEN},1)
; local DID's
exten =>_00XX,1,Goto(xvb-main,${EXTEN},1)


во вкладке users добавляем пользователя (так как каждый пользователь есть комбинация номера телефона + кода доступа, мы для себя заводим всех пользователей на номере '0999' — (если на него позвонить система попросит ввести код доступа ) и каждому офису прописываем 4-х значный внутренний дид ):



нажимаем 'создать' и получаем примерно это:




далее переходим в `кабинет` пользователя:




меняем часовой пояс / язык / устанавливаем имя пользователя / его почту / и тд.

Настроим регистрацию на оборудовании провайдера:




тут пропишем:
  • ip-адрес провайдера
  • имя пользователя на оборудовании провайдера ( у нас это телефон )
  • пароль
  • поставим галочку принимать звонки
  • поставим 0 в колонке 'на внутренний номер'


теперь наш виртуальный офис 43 должен зарегистрироваться на оборудовании провайдера для получения входящих звонков, проверяем:


[root@n-test 5701]# asterisk -rx 'sip show registry'
Host                                    dnsmgr Username       Refresh State        Reg.Time                 
20-1325847688-14a91d6d49dc91d5c1a9967db N      xxxxxxxxxxxp       105 Registered   Sat, 07 Jan 2012 00:08:13
1-321ca7dfe1f5aeb15381dcb06a74368c:5060 N      2xxxxxxx            97 Registered   Sat, 07 Jan 2012 00:07:55
2 SIP registrations.
[root@n-test 5701]# 


Сделаем регистрацию оборудования клиента в нашем виртуальном офисе 403:




здесь мы создали профили для 2 пользовательских телефонов с номерами 101 и 102


так примерно выглядит подключение телефона Fanvil к нашему виртуальному офису ( в качестве номера 101 ):



далее также регистрируем софтфон на номере 102.

Создадим исходящий роутинг по умолчанию через провайдера SIP телефона:




то есть тут все номера, кроме 4-х значных начинающихся на 0, отправляем к провайдеру ( если в дальнейшем пользователь захочет отправлять звонки например через сипнет ему нужно просто сделать маршрут с более высоким весом )

Переходим к списку внутренних номеров:




И в частности к номеру 0:




мы установили тип внутреннего номера — 'Расписание' и создали простое расписание — с понедельника по субботу с 9 до 18 отправлять звонки на внутренний номер 1 ( тут у нас будет собственно сам IVR ) иначе на 600 ( голосовую почту )

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




это означает, что при поступлении звонков с номеров 1234567890 и 0987654321 система повесит трубку.

Создадим номер 600 — голосовую почту:




( вместо системного сообщения лучше загрузить звуковой файл со своим приветствием. Из коробки, из русских голосов, доступны TTS голос festival и TTS от google.translate )

Далее создаем номер 1, в котором попросим звонящего выбрать кого он хочет услышать:




и номера для бухгалтерии ( 1*1 )




и технического отдела ( 1*2 )




Всё вместе это выглядит примерно так:



Далее, чтобы не повторять всё тоже самое для каждого пользователя идем во вкладку 'Профиль пользователя' и делаем бекап настроек ( в xml формате ) после чего его можно загрузить для нового пользователя ( предварительно подправив номера и пароли ).


Собственно всё. Разворачиваем новому пользователю приготовленный шаблон и отдаем рулить своим куском АТС.

Итак у нас есть:



  • система установленная у нас и контролируемая нами


У пользователя есть:


  • расписание для всех входящих звонков.
  • черный список телефонных спамеров и хулиганов.
  • авто секретарь.
  • запись разговоров.
  • голосовая почта.
  • возможность позвонить с 101 на 102 или в город.
  • редирект звонков для номеров 101 и 102 на мобильные ( через SIP провайдера ).
  • управление своим виртуальным офисом с возможностью расширения вышеперечисленных возможностей.
  • подробные CDR для каждого звонка:




Сейчас всё это работает в тестовом режиме и смертельных багов пока не вылезло, про то, что хочется поправить чуть ниже.

Пару слов про неудобства:



  • Ставить на сервер с нуля из rpm несколько геморойно из за кучи зависимостей, поэтому проще копировать tar'ом прямо из vmare-имиджа.
  • В некоторые моменты возникает сильное желание записать таки свои голосовые сообщения ( из коробки идет TTS ) и поправить web интерфейс.

+27
89k 190
Comments 32
Top of the day