Сегодня, в эру высоких технологий и безупречного клиентского сервиса, всем хочется быть на уровне. Многие компании в независимости от ранга и размера постоянно стараются сделать общение с клиентом удобнее и приятнее. В нашем интерне-агентстве, руководителем, которого я и являюсь, одной из таких «приятностей» стало введение в эксплуатацию небольшой мини-АТС на базе Openvox и Asterisk, собранной своими руками. Но давайте по-порядку:
Проблема
Телефон — является одним из основных каналов связи с клиентами в нашей работе. За день поступает множество звонков, которые нужно обработать. От использования аналоговой линии мы отказались сразу, ввиду алчности и ненадежности местных провайдеров. Да и устарели нынче аналоговые технологии. Решение использовать GSM-связь было единогласным и непоколебимым. В первые несколько лет работы за прием звонков отвечал вот такой вот не убиваемый аппарат:
Изначально звонки принимал я и мой партнер по-очереди, находясь в разных углах одного офиса. Когда клиент звонил и прослушав несколько сигналов бездушного зуммера просил с кем-нибудь соединить, то с большой вероятностью он мог услышать свист ветра, который создавал сей финский девайс, пролетая из одного угла офиса в другой. «Многоканальность» была реализована за счет наличия в данном телефоне двух слотов для сим-карт. О записи разговоров речи не было, голосовое приветствие и меню отсутствовали, метод трансфера звонков от одного специалиста к другому был описан выше. Сплошные минусы, в общем, и самое главное, что звонивший к нам человек с первых минут мог подумать, что звонит очередную шарашкину контору из полутора фрилансеров. Что было достаточно обидно, ведь свою работу мы делали хорошо, с гарантиями и душой.
Вдоволь намучившись, одним прекрасным днем я сказал громкое «Хватит!» и не менее громкое «Нужно что-то предпринять!»
Задача
Необходимо сделать такую «штуку»,
- Как минимум 3 GSM линии;
- Головосое приветствие;
- Музыка вместо гудков;
- Удержание вызова;
- Трансфер вызова;
- Не менее трех независимых трубок, с возможностью расширения;
- Гибкую настройку переадресации вызова;
- Запись разговоров;
- АОН;
- Список контактов;
- Минимум проводов;
- Компактные размеры оборудования.
Подбор решения
Для решения задачи был выделен бюджет ни много ни мало 40 000 рублей Российской Федерации. Первым делом я выбрал самый тривиальный способ, а именно: обзвонил все компании в городе, которые могли установить и настроить мини-АТС. Компаний оказалось «великое множество», а именно одна (ох уж эти регионы), которая сказала, что если я умножу наш бюджет на 4, то получится сумма, которой будет достаточно, что бы они все наши «хотелки» сделали. На 4 умножать мне не хотелось, поэтому переходим к плану «Б» — облачная АТС. Благо, сейчас множество подобных сервисов с любым функционалом и на любой кошелек. Но смущает одно — полная зависимость связи от сервиса: нет интернета — нет связи, на сервисе тех. работы — нет связи, не вовремя заплатили абон. плату — нет связи. Да и сервис может в любой момент увеличить стоимость своих услуг или не вернуть данные (записи разговоров, к примеру). Такой вариант, так же меня не устроил. Оставался третий вариант — «костыльно-велосипедный». Что ж, геморроя больше, за то интересно. На нем и остановился.
Выбор и покупка оборудования и софта
Поскольку бюджет небольшой, да и любитель я всяких линуксов да опенсорсов. Поэтому с софтом определился сразу — Asterisk в качестве сервера телефонии. В качестве ОС использовал Ubuntu. С аппаратурой все не так просто, немного поразмыслив и переведя кучу бумаги, состряпал такую схему:
Основными элементами тут приходятся:
- сервер, на котором установлен Asterisk;
- GSM-шлюз;
- база беспроводных телефонных трубок;
- роутер, как связывающие звено;
- телефонные трубки.
Все работает следующим образом: На шлюз поступает звонок, он этот звонок принимает и отдает на сервер посредством витой пары и роутера. Сервер «берет трубку», играет приветствие, кидает звонок в режим ожидания и связывается с базой трубок. База выбирает нужную трубку и заставляет ее звонить. Когда менеджер принимает звонок, сервер соединяет клиента и менеджера.
Иду в ближайший интернет-магазин и кладу в корзину следующие товары:
- GSM Шлюз OpenVox VoxStack VS-GW1202-4G — 16 932 рублей;
- База и 1 трубка Yealink W52P — 4 828 рублей;
- Две дополнительные трубки Yealink W52H — 3 175 рублей.
Вычеркиваю три пункта из списка оборудования, оставшиеся два спокойно можно достать в любом компьютерном магазине нашего городка. Да и хороший повод немного прогуляться:
- В качестве сервера: Неттоп DNS Porto 0166749 [Intel i5-3337U, 2x1800 МГц, 4096 Мб, HDD 500 Гб] — 11 500 рублей;
- Бытовой роутер Zyxel Keenetic 4G II — 1 500 рублей.
Итого: 37921 рубль
Что ж, очень даже хорошо, еще и на мороженое осталось.
Прим. авт.: Дело было осенью 2014, поэтому цены несколько ниже, чем сейчас.
Получение и сборка оборудования
Прошли две недели мучительного ожидания и замыленный курьер вручил мне долгожданную посылку. Содержимое:
OpenVox VoxStack VS-GW1202-4G
Шлюз представляет собой небольшой блок (размером со стандартный DVD-привод) и плату, которая помещается внутрь. Данная модель шлюза поддерживает 4 сим-карты, но может быть расширена до восьми путем покупки еще одной платы, которая вставляется рядом. Шлюз подключается в локальную сеть обычной витой парой и в электрическую при помощи адаптера питания.
База и трубки Yealink W52P
Компактная беспроводная база и три трубки. Каждая трубка оборудована зарядной станцией, имеет цветной дисплей и крепление на пояс. Выглядит все достаточно аккуратно. База рассчитана максимум на 5 телефонов. В случае дальнейшего расширения просто докупается еще одна база. Сигнал мощный, хороший прием через кирпичную стену. На качество связи так же жаловаться не приходится.
Неттоп DNS Porto 0166749
Компактный компьютер выступает в качестве сервера. Размером девайс сопоставим с вышеупомянутым OpenVox. Характеристики достаточны для бесперебойной работы телефонии и хранения записей разговоров на несколько месяцев. И зовут его, к стати, Артем.
Собираем все воедино в соответствии утвержденной схемой и устанавливаем ОС Ubuntu:
Теперь все готово для перехода к самому интересному шагу: настройке нашего сервера.
Установка и настройка
Первоначально установим сам Asterisk и GUI к нему. Пошаговый мануал, как этого добиться:http://wiki.enchtex.info/howto/asterisk/asterisk-ubuntu-10.04. Почему не freePBX? На вкус и цвет все фломастеры разные, статья ориентирована на новичков, а мне показалось, что GUI от Digium проще в установке и эксплуатации, в прочем, это сугубо мое мнение.
Теперь нужно «подружить» OpenVox и Asterisk. Сделать это достаточно просто. Сначала войдем в веб-GUI Asterisk (по-умолчанию:localhost:8088), введем логин и пароль указанный при установке. Не долго думая идем по пути: Trunks -> VOIP Trunks -> New SIP/IAX Trunk и указываем следующие настройки:
Type: sip
Context Naming: Based on Username
Provider Name: openvox
Hostname: адрес openvox (по-умолчанию: 172.16.99.1)
Username: придумываем имя пользователя
Password: придумываем пароль
Далее следуем по адресу openvox (по-умолчанию: 172.16.99.1, дефолтный логин и пароль admin:admin) и видим панель управления. Кликаем SIP -> SIP endpoints -> Add New SIp Endpoint:
Name — придумаем имя
User Name — имя пользователя, которое придумали ранее
Password — пароль, который придумали ранее
Registration – This gateway registers with the endpoint
Идем в ADVANCED -> Asterisk CLI и пишем sip show registry, при удачном стечении обстоятельств увидим «1 SIP registrations», что означает, что все работает.
Теперь настроим правила для входящих и исходящих звонков в ROUTING -> Call Routing Rules -> New Call Routing Rule.
Исходящие:
Routing Name — имя роута (пусть будет «out-route»)
Call Comes in From — выбираем транк
Send Call Through — выбираем порт openvox'a
Для входящих вызовов все настраивается аналогично, единственный пункт который может вызвать затруднения — это параметр «Forward Number» для правил, тут нужно написать Extension на стороне asterisk на который будет идти звонок.
Продолжим настройку Asterisk GUI, создадим пользователей и правила для звонков, вот небольшой мануал, как это сделать:http://invoip.net/2011/11/vvedenie-v-asterisk-gui/
После того, как произведена начальная настройка Asterisk и Openvox нужно настроить базу трубок, она так же имеет веб-интерфейс, а настройка сводится к сопоставлению пользователей Asterisk и телефонных аппаратов. Теперь можно совершать и принимать звонки. Настало время сделать что-то поинтереснее.
Прикручиваем различного рода «свистелки»
Один из самых интересных файлов Asterisk — это «extensions.conf», в нем производится основная масса настроек. Через GUI создадим голосовое меню и сделаем перевод всех входящих вызовов на него, назовем его «voicemenu-custom-1». После этого можно задавать различные параметры того меню используя либо встроенный редактор GUI, либо открыв файл «extensions.conf» в любом текстовом редакторе.
Голосовое приветствие
Первоначально задумывалось, что клиент, позвонив к нам слышит голосовое приветствие, в котором сообщается куда он попал. Саму запись приветствия можно осуществить, как самостоятельно, так и обратившись в специализированную компанию, где профессиональный диктор запишет его своим голосом, наложит музыку и прочие звуковые эффекты. Вбиваем в гугл «запись голосового приветствия» и выбираем, то что понравилось. В среднем одна запись стоит от 1000 до 5000 рублей. Запись вы получите в формате mp3, который не очень охотно работает с Asterisk без плясок с бубном. Преобразуем файл в удобный для Asterisk формат:
Полученный файл, положим в папку «asterisk/sounds» и вернемся к редактированию меню. Первоначально нам нужно взять трубку и проиграть приветствие, после этого соединить с нужным пользователем:
В «Background» переедаем путь до файла приветствия (только имя файла, без расширения). В «Dial» передаем идентификатор пользователя Asterisk, время в секундах, которое нужно для того, что бы проиграть приветствие и два параметра «t» (разрешает ответившему пользователю перевести звонок) и «m» (проигрывать музыку ожидания). Об остальных параметрах «Dial» можно узнатьтут.
Запись разговора
После того, как заработало голосовое приветствие и редактирование «extensions.conf» не вызывает затруднений, прикрутим запись разговоров. Пусть все записи складываются в директории разбитые по годам, месяцам и дням, а в названии файла записи присутствует дата, время и номер звонившего. Звучит сложно? А делается просто:
Многоканальность и переадресация
В ovenvox я вставил три сим-карты, к двум из них привязаны номера, на которые можно совершить звонок, третья карточка — резервная. На уровне оператора настроил переадресацию с первой на вторую, со второй на третью с третьей обратно на первую. Таким образом получилось три полноценных линии для звонка. Хочу сделать акцент на том, что поток звонков в моей компании большой, но не настолько, что бы позвонило одновременно три человека, поэтому такая схема для меня приемлема. Если поток станет больше, можно увеличить количество сим-карт до 8 и настроить очередь звонков.
Теперь выстроим логику таким образом: звонит первый клиент, менеджер берет телефон №1, тут же происходит второй входящий звонок, должен зазвонить телефон №2, которым воспользуется второй менеджер. Третий клиент будет соединен с третьим менеджером. Что бы это реализовать можно использовать условие «GotoIf»:
Но что будет, если трубку никто не возьмет? Допустим, все ушли на обед или звонок поступил в выходной день. Выход банален: выбираем самого ответственного менеджера и записываем номер его мобильного телефона. Правим «extensions.conf» таким образом:
Теперь, если трубку никто не взял в течении 20 секунд, вызов будет переведен на указанный мобильный телефон. Со стороны клиента это будет выглядеть, как незначительно увеличенное время ожидания ответа. Можно пойти дальше и сделать переадресацию в нерабочее время без ожидания, но этот случай я рассматривать не буду.
Трансфер, АОН, список контактов
Все эти функции поддерживаются по-умолчанию и работают достаточно хорошо, что бы удовлетворить потребности моей компании, но если есть желание, их всегда можно улучшить. Например, список контактов можно подгружать в xml-файле из CRM-системы.
Завершение работ
Все собрав, настроив и проверив, я вдоволь насладился проделанной работой. Осталось все эти коробки и провода, аккуратно убрать куда-нибудь с глаз долой, например в большой железный ящик:
Позже выяснилось, что засовывать базу беспроводных трубок в жестяную коробку — не самая лучшая идея, поэтому через пару дней вынесли ее наружу и прилепили сбоку.
Выводы
С момента описанных событий прошло около 4 месяцев. За это время незначительные недоделки были устранены и все работает четко и без сбоев. Без учета времени доставки железок на все работу ушло около 5 дней времени. В итоге клиенты и менеджеры довольны, звонки пишутся, голосовые приветствия проигрываются, музыка в трубках звучит, уровень сервиса растет. Всем спасибо за внимание, надеюсь, что мое повествование было полезным и интересным.