Call-центр

Довольно долго мы откладывали реализацию графического конструктора для настройки маршрутизации вызовов. Лично я всегда считал, что наша платформа для разработчиков, которые будут знать, что такое JSON и править код проще, чем перетягивать кубики. Но, пользователи требуют кубики.

И вот они, кубики:

Друзі, більшість із Вас знає, що ми розробляємо та впроваджуємо систему з відкритим кодом для побудови хмарних контакт-центрів та АТС – webitel. Наш продукт захищений українським авторським правом, більша частина коду доступна на Github. У нас є потужна команда однодумців, яка процює над створенням якісної вітчізняною платформи для телефонізації будь-яких веб-рішень. Проте, наша робота паралізована, завдяки діям працівників львівського СБУ по надуманим звинуваченням: Ст. 359 ККУ – Незаконні придбання, збут або використання спеціальних технічних засобів отримання інформації.

Читайте повний текст звернення на сайті ain.ua.

Вчера мы закончили основные работы с перехода на новую версию webitel. Лично для меня, самым долгожданным был новый WebClient (Игорь, привет!). Описание других новшеств Вы сможете прочитать на этой странице: тыц!

Вся статистика webitel хранится в хранилище MongoDB в виде JSON файлов с детальным описанием всего маршрута звонка и переменных канала. Но, до сегодня было довольно сложно быстро построить отчет (либо график) по истории звонков. И мы начали поиск решения… Но, решение оказалось ближе, чем мы предполагали 🙂

Уже несколько последних месяцев для сбора и анализа логов я использую связку Elasticsearch+Logstash+Kibana, которая успешно справляется с поставленной задачей. Возникла идея, что если синхронизировать MongoDB с Elasticsearch и с помощью Kibana строить отчеты. Так и решили сделать!

Сегодня добавили новую фичу в библиотеку webitel для bpmonline – уведомления браузера. Для начала необходимо разрешить для сайта (на demo стенде уже можно опробовать):

allow

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

incoming call

А если звонок пропустили, тогда:

missed call

Работает в браузере Chrome, Opera и должно работать в FireFox (не проверял еще).

На этой неделе начали тестировать Webitel CTI – небольшая web-панель, которая позволит совершать звонки с любого веб-решения. Первая версия выйдет под bpmonline и вот что мы уже сейчас имеем:

С помощью набора JavaScript библиотек, мы подключаем нашу панель:

main

Сегодня состоялась внутренняя презентация нового поколения Webitel для работы с CRM системой bpmonline. Продукт был переписан с “0”, что и заняло достаточно много времени для его запуска. Серверная часть теперь только Linux и да, мы работаем с WebRTC (голос и видео). Используются современные адаптивные кодеки OPUS и VP8, что позволяет передавать голос в CD качестве.

Выглядит это так:
Знімок екрана 2014-04-03 о 17.37.57

На текущий момент аудио и видео (WebRTC) работает в следующих браузерах (проверял лично):

  • Chrome 33
  • Firefox 28
  • Opera 20

Попробовать и Вы можете! Для этого достаточно перейти по ссылке Demo стенда Webitel и сделать несколько звонков (Demo – логин и пароль).

Тестируем!

Для IP-телефонии критичны задержки пакетов в сети, хотя технология обладает некоей толерантностью (устойчивостью) к потерям отдельных пакетов. Так, потеря до 5 % пакетов не приводит к ухудшению разборчивости речи. Максимальное отклонение между последовательной передачей пакетов в сети Интернет не должны превышать 50 мс. Максимальный процент потерь при передачи пакетов в сети Интернет – не более 3%.

Причины задержек в передаче голосовых данных по сети IP в большой степени связаны с особенностями транспорта пакетов. Протокол TCP обеспечивает контроль доставки пакетов, однако достаточно медленный и потому не используется для передачи голоса. UDP быстро отправляет пакеты, однако восстановление потерянных данных не гарантируется, что приводит к потерянным частям разговора при восстановлении (обратном преобразовании) звука. Немалые проблемы приносит джиттер (отклонения в периоде поступления-приёмки пакетов), появляющийся при передаче через большое число узлов в нагруженной IP-сети. Недостаточно высокая пропускная способность сети (например при одновременной нагрузке несколькими пользователями), серьёзно влияет не только на задержки (то есть рост джиттера), но и приводит к большим потерям пакетов.

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

Проверить пропускную способность каналов можно с помощью простой утилиты iperf-2.0.5. Предположим, что мы хотим гарантировать 10 одновременных разговоров с использованием G.711 кодека. Рекомендуемое требование к каналу составляет 1 Мбит/с.

На сервере запускаем iperf с параметрами (ожидать на стандартном порте 5001 входящие UDP запросы):
iperf -u -s

На клиенте запускаем тестирование UDP c длиной 160 байт со скоростью 1 Мбит/с в течение 180 секунд на сервер 10.10.10.119:
iperf -u -c 10.10.10.119 -l 160 -b 1M -t 180

Получаем результат:

Канал пригоден для 10 одновременных соединений.

До официального релиза Webitel 1.3 осталось еще не много, а я уже сейчас хочу начать рассказывать о всех тех новых фишках, что мы в него добавили. Первая на очереди небольшая функция “Маршрут звонка”.

Нас часто спрашивали: а как узнать где уже был звонок? Либо: а можно оператору сразу в карточке показать, что абонент был в IVR, потом поговорил с другим оператором, потом его переключили опять на IVR, а с него он попал на другого оператора?

Теперь это все возможно! В карточке звонка оператора доступна новая вкладка “Маршрут”, а в разделе [Статистика] – кнопка, нажав на которую, Вы увидите историю прохождения звонка:

Roadmap

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

Как Вы думаете: насколько будет полезной эта функция?