Яндекс.Метрика

Asterisk Эксперт

Asterisk Эксперт с 31 мая по 1 июня

Количество
свободных мест

8 Записаться

Курс по Asterisk

Интенсив-курс по Asterisk с 26 мая по 30 мая

Количество
свободных мест

3 Записаться

Курсы по Mikrotik MTCWE

Курсы по Mikrotik MTCWE с 20 октября по 23 октября

Количество
свободных мест

6 Записаться
OpenSource для VoIP
35
Доклад
Игорь Гончаровский
OpenSource для VoIP

OpenSource для VoIP

 

Введение

 

     Вчера я уже рассказывал, кто я такой. Я из Омска, у нас там же находится компания, все разработчики тоже в Омске. Мы не работаем на удалёнке: так удобнее и пока эффективнее для небольшой команды. Компания изначально началась с меня, когда попадались разные задачи по Asterisk. Со временем их стало больше, понадобилась доработка, поддержка — появился второй сотрудник, третий. Сейчас мы выросли, кажется, до 20 человек, из них 12 — разработчики. Они постоянно что-то делают: либо мы пишем то, что сами считаем нужным (и получается продукт), либо выполняем просьбы заказчиков (тоже получается продукт).

     Иногда оказывается, что продукт можно разбить на несколько частей. Возникает вопрос: что с ними делать? И всё чаще мы решаем выделить какие-то части в open source и отдать их сообществу. Вообще, способов “отдачи” сообществу много. Самый простой — вот такие выступления на конференциях, где мы делимся информацией. Раньше я писал что-то на форумах, когда сам разобрался, а другие ещё нет. Потом у меня был (ныне почти заброшенный) блог, куда выкладывал материалы, чтобы не повторяться. То же самое и с библиотеками: если не хочется многократно писать одно и то же, делаем библиотеку. Если в ней нет уникальной бизнес-логики заказчика, особых математических алгоритмов или обработки данных (всё то, что для нас ноу-хау), мы можем открыть библиотеку сообществу.

 

     Иногда вклад в Opensource появляется, когда нужно что-то починить. Редко нам приходится делать принципиально новый функционал в чужих проектах. Обычно мы замечаем, что сломано, чиним и обязательно отдаём обратно. Порой на патч уходит 10 минут, а на оформление пул-реквеста — пару часов, но мы идём на это, потому что так проще поддерживать продукт дальше. Иногда же бывают “стыдные” быстрые решения “на коленке”, которые вроде бы можно отдать, но не хочется выкладывать в таком виде. Чуть дальше, возможно, обсудим и это.


 

Зачем мы это делаем?

 

     Сначала у меня было два пункта, потом список разросся. Во-первых, нам важно показать, чем мы занимаемся, поделиться проектами не только через логотипы клиентов на сайте, а давая специализированному сообществу готовые наработки, API и библиотеки. Во-вторых, хотим получить обратную связь: нужно ли это вообще, что доработать, что мы делаем не так. В-третьих, это служит подтверждением нашей квалификации и формирует портфолио. Некоторые компании не хотят ничего выкладывать, потому что боятся, что их разработчиков “уведут”. Но если создавать людям комфортные условия труда, то, на мой взгляд, этого не стоит опасаться.

По сути, у нас два направления отдачи в open source:

  • Собственные продукты и сервисы, которые мы делаем.
  • Сторонние проекты, которые мы используем.

     Иногда вклад минимальный, буквально пара строчек, но даже это говорит о том, что мы разобрались и нас приняли как контрибьюторов. Среди наших продуктов — сервис FMTN (на базе BiLine), дайлер для исходящих обзвонов, антибот, WFM-система и платформа для голосовых ботов. Там же есть и речевая аналитика, правда она пока на начальном уровне.


 

FMTN

 

     Как-то нас познакомили с услугой FMTN в BiLine. Мы сделали сервис, помогающий компаниям. Конфигурация собрана на FreeSWITCH. Выложили её в open source и сразу же в том же году выступили на конференции. Через год кто-то уже рассказал о своём варианте. Не знаю, связано ли это, но факт остаётся фактом. Мы продолжаем делиться конфигурациями, и когда новые клиенты спрашивают технические подробности, мы даём ссылку. Это удобнее, чем объяснять всё каждый раз заново.

 


 

Дайлер (Dialer)

 

     Это наш самый старый продукт, но открытого кода по нему почти нет. Он сделан на базе внутренней библиотеки для работы с протоколом, которая плотно “вшита” в наш движок. Выкладывать всё, что есть, без переработки невозможно. Если возникнет интерес, мы можем этим заняться. Также мы специально не делали “из коробки” интеграции со всеми CRM, потому что их слишком много. Но недавно один клиент попросил интеграцию с amoCRM, и параллельно ещё один проект потребовал этого же. В итоге мы создали асинхронную библиотеку на Python 3.8 для работы с API amoCRM. Там учтены особенности токенов, ограничений по количеству запросов и прочие тонкости для высоконагруженных решений.


 

IQ-Антибот

 

     Это более новый продукт. Как-то увидели антибот от Taktel, решили, что можем написать свой. Собрали, презентовали, и буквально через год “Ситимобил” рассказывал о своём решении, ссылаясь на наш опыт. Они внедрили кое-что по-своему, мы изучили их доклад и учли их наработки. Недавно, когда я уже заявил тему этого доклада, возникла новая задача по внедрению антибота у клиента с нетипичной схемой подключения, из-за чего пришлось сделать ещё два патча к Asterisk для корректной работы опции Outbound Proxy в PJSIP.


 

Речевая аналитика

 

     Мы сделали небольшой сервис, который в связке с Тинькофф позволяет транскрибировать разговоры без сложной аналитики, чисто “речь в текст” на потоке. Там же добавили интеграцию со Speech Analytics. Сделали всё это на FastAPI. Теперь можно запускать сервис буквально за пару команд, и он сразу начнёт отдавать данные в разные системы распознавания речи. Подобные статьи есть у VoxLink, но наша реализация — это полноценный сервис, который, надеемся, кому-то пригодится.


 

SpeakIt

 

     Это платформа для голосовых ботов, управляющая Asterisk через ARI и работающая с синтезом/распознаванием речи в реальном времени. Там всё идёт в потоке, минимальные задержки между сказанным словом и ответом системы. Мы показывали SpeakIt во время ковида на вебинаре, собрали фидбэк, что-то доработали.


 

Workforce Management (WFM)

 

     Сейчас активно делаем WFM-систему, которая не только показывает отчёты, но и умеет строить расписания, прогнозировать нагрузку. Внутренние алгоритмы мы не открываем, но делаем API для взаимодействия с PBX и другими колл-центровыми решениями. Сейчас используем коммерческую версию Qrator/QueueStats, которая даёт нужные данные, но будем делать интеграции с ViciDial, FreePBX и другими системами.


 

Новая интеграция с amoCRM

 

     Здесь интересный случай: компания VoxLink сама выступила с идеей — сделать новый модуль интеграции Asterisk с amoCRM и выложить его в open source. Дело в том, что стандартный модуль от amoCRM давно устарел, ломается при каждом их обновлении, а поддержку “по ошибке” приписали VoxLink. Мы решили написать всё заново. Параллельно выложили серверную часть на Python 3.8 (используем наш же модуль работы с amoCRM) и сделали новый виджет с нуля. Хотим было закончить к конференции, но ещё надо доупаковать в Docker, выложить образы, чтобы можно было без сложностей всё запустить. Надеемся, что в октябре закончим, согласуем с amoCRM и попросим их снять старый модуль с публикации, чтобы люди пользовались уже исправленным решением.


 

Asterisk (chan_unistim)

 

     Ещё один пример. Когда-то я участвовал в проекте, где клиент переходил с Nortel на Asterisk. Надо было доработать канал Unistim, и так получилось, что с версии 1.8 я стал его “мейнтейнером”, пусть и неофициальным. Пара багрепортов в год — вот и вся нагрузка. Но важно понимать, что контрибьют в Asterisk — это не только новый код, но и помощь другим людям: консультации, как оформить багрепорт, как работать с Gerrit. Если у кого-то есть патч, но нет времени разбираться с Gerrit, я могу сам всё залить и провести через ревью.


 

FreePBX

 

     Для FreePBX мы пропатчили OSS Endpoint Manager, чтобы он устанавливался на FreePBX 16. Сразу выложили патчи на GitHub. Из-за этого один из разработчиков прислал Pull Request с переводом на русский язык. Теперь у нас полноценная русификация. В Kazoo мы тоже вносили пару небольших исправлений, связанных с API американских операторов, и писали Provisioning, сборщик CDR в ClickHouse. Подобных “точечных” доработок у нас много.

 


 

ViciDial

 

     В этом году мы перевели административную часть интерфейса ViciDial на русский язык и собираемся связаться с Matty Florel, чтобы включить перевод в официальный репозиторий. Это хороший способ наладить контакт с разработчиками ViciDial и, возможно, обсудить наш антибот или WFM-систему для их пользователей.


 

Что не отдали в open source (пока)

 

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

     Кроме того, вместе с партнёрами мы сделали новый интерфейс для ViciDial, который общается с ним по API и подгружает нужные данные, но выглядит современно и ориентирован на задачу оператора (с встроенной базой знаний). В исходном ViciDial интерфейс громоздкий, а тут всё аккуратно упрощено. Внутри есть и полноценный RESTful API. Если пользователям ViciDial это интересно, мы готовы поделиться.


 

Будущее

 

     Планируем и дальше работать в том же ключе. Хочется упаковать наши решения в Docker и выкладывать их с базовой бесплатной лицензией: чтобы любой желающий мог скачать готовый образ антибота, дайлера или голосового движка и быстро посмотреть, подходит ли ему решение. Мы же будем оказывать платные услуги по поддержке и доработке.

В итоге хотелось бы обсудить с сообществом, как лучше рассказывать о наших разработках и собирать обратную связь. Приходите, задавайте вопросы — и к нам, и в наш Telegram-канал. Будем рады общению и угощениям. 

Таймкоды
Показать еще..
Свернуть..
Ежегодная конференция по Asterisk 2025!

Билеты уже в продаже!

Остались вопросы?

Я - Першин Артём, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

Наши
клиенты

Посмотреть все
Спасибо !
Мы свяжемся с Вами в ближайшее время
Проверка номера

Проверка номера

Быстро узнать мобильного или городского оператора. Впишите номер

Мы проверили номер

+7 846 254 51 02

МТС (с 2016)

Повторить