Сегодня жизненно необходима интеграция CRM и телефонии. Если клиент слишком долго слушает автоматическое приветствие или вы не перезваниваете по оставленной им на сайте заявке — вы его потеряете.
Как мы, компания-интегратор informUnity, пришли к созданию массового продукта для интеграции «Битрикс24» и Asterisk под управлением FreePBX, и что из этого вышло — под катом.
Предыстория
К концу 2016 года у нас было практически готовое решение для контакт-центров на базе коробочного «Битрикс24» и Asterisk. Практически — потому что используемый для обработки WebRTC в браузере форк SIPML5 еще не был отлажен.
Мы уже планировали финальное тестирование и запуск тиражируемого продукта, когда в декабре появилась поддержка телефонии в REST API «Битрикс24». А вместе с ней коллегам понадобилось интегрировать Asterisk и «Битрикс24» с помощью новых REST-методов.
Тем временем потребность в такой интеграции как раз назрела. Связка через VoxImplant включала лишнее звено, требовала «танцев с бубном» в настройке и лишала «астерискеров» свободы. Так как часть логики обработки звонка вместе с SIP трафиком отдавалась во внешнюю систему.
Мы решили, что контакт-центры подождут. Мы выполняем конкретный заказ. По результатам которого готовим продукт по интеграции для всех желающих.
MVP
Оказалось, что у коллег используется целых три Asterisk:
- один с кастомными контекстами
- два подключенных к первому
Это затрудняло по сути несложную задачу:
- определить ответственного
- открыть карточку
- записать звонок в CRM
Действительно несложная, — скажете вы. Часа на четыре работы. Так и есть: если пишете для себя, то можно ограничиться только нужными вам сценариями. Но любой шаг в сторону добавляет очередные четыре часа. Однако, мы делали для всех. Значит наша цель — не легкий путь для разработчика. А легкий путь для пользователя.
За основу решения выбрали фреймворк FreePBX v.13. Он самый популярный среди аналогов на сегодняшний день. Активно развивается и включает все необходимое для нашего решения.
Основную часть мы оформили как модуль для FreePBX.
Плюсы тринадцатой версии FreePBX:
- современный интерфейс
- удобные оповещения при настройке модуля
- поддержка AJAX и
- простой процесс обновления модуля с изменением структуры таблиц
Самое важное для работы модуля —определить соответствующие контексты для интеграции. Ведь у каждого клиента своя схема обработки вызовов.
Сегодня основная работа идет с контекстами ext-did-001, ext-did-002 и macro-dial-one для входящих звонков и outrt-, macro-dialout-trunk — для исходящих.
За два месяца Asterisk и «Битрикс24» были интегрированы. CRM «Битрикс24» теперь следит всевидящим оком за входящими и исходящими звонками.
Мы получили большой опыт в ходе совместной работы. Многочисленные обсуждения разных сценариев не прошли зря. А некоторые багрепорты закрывались в течение дня. К концу марта у нас был продукт, который мы уже могли отдать в каталог приложений с пометкой “бета”.
Первые результаты
Создавая MVP, мы ориентировались на простую и прозрачную логику. Например, время начала и конца разговора привязано к каналу внешнего абонента (при входящем — первый открывшийся канал, при исходящем — канал, на котором находится вызываемый номер). В беклог MVP не вошла поддержка Ring Groups и FollowMe. Но это не повлияло на функциональность, так как они заменяются на Queues.
Результат не заставил себя долго ждать: с первых дней мы получаем 15–20 установок в день. Для нас это была проверка гипотезы. Первая бета-версия представляла из себя достаточно сырой MVP. Поэтому такой результат придал нам сил и уверенности. А вместе с уверенностью пришел и шквал вопросов на первую линию.
С заботой о пользователях
Большинство установок Asterisk отрезаны от мира и спокойно работают за NAT. Тем не менее, получать от сисадминов десятки вопросов о том, как настраивать Firewall для интеграции, было весьма удивительно.
«Проброс портов? Конечно слышали. А что пробрасывать? Куда? Зачем?».
Проблема оказалась не в квалификации пользователей. А в подаче информации. И поправками в инструкцию тут не отделаешься. Подобные вопросы практически прекратились после переработки интерфейса.
Считается, что сисадмину не важно, с каким интерфейсом работать. Эта точка зрения не выдержала проверки практикой. Неважно, кто пользователь — сисадмин или домохозяйка. Чем проще и понятней интерфейс, тем больше лояльности к приложению. При этом сделать интерфейс простым — невероятно сложно. Особенно с учётом регулярных изменений. В период бета-тестирования мы старались выпускать не меньше одного обновления в неделю.
Эволюция интерфейса модуля
Каждую неделю добавлялась новая функциональность, изменялась внутренняя логика. Продукт развивался невероятно быстро. Собранная за неделю аналитика становилась неактуальной с выходом новой версии. Иногда технические нововведения опережали изменения в интерфейсе. Тогда приходилось править или полностью пересматривать пользовательские сценарии. Это приводило к серьёзным изменениям интерфейса.
Высокая динамика разработки накладывает ограничения на проектирование интерфейсов. Мы поставили перед собой амбициозную задачу — сделать удобное приложение для связки «Битрикс24» с Asterisk. И мы справились — теперь «подружить» их сможет любой желающий.
Вместо послесловия
За полтора месяца бета-тестирования мы проверили множество гипотез и реализовали десятки сценариев. Это заслуга службы поддержки.
Мы сразу отказались от тикетов и электронной почты. Такая переписка не предполагает быстрой реакции. А рассмотрение одного простого вопроса может затянуться на несколько дней.
Нам очень помогли открытые линии в «Битрикс24». И мы, и клиенты пользуемся одним продуктом. Клиент всегда может найти нашу открытую линию в списке своих чатов и посмотреть всю историю переписки. Мы получаем задачи, внутренние коммуникации и общение с клиентом в одной экосистеме.
Благодаря такому формату клиенты получают ответ на обращение в среднем в течение трёх минут. А клиент доволен поддержкой и охотно делится не только проблемами, но и идеями по улучшению продукта.
С выходом stable-версии нам пришлось искусственно снижать динамику в пользу качества: ответственность перед коммерческими пользователями не дает экспериментировать в прежних масштабах.
Сборку и тестирование, а также установку и работу модуля в Docker-контейнерах, автоматизировали на базе GitLab CI (об этом планируем написать отдельно). Обновления стараемся выпускать раз в неделю, но все эксперименты вынесли в ветку beta. Кстати, приглашаем к сотрудничеству бета-тестеров.
На этом и сказке конец, но история нашего решения только начинается.
Сам продукт: ссылка.
Поделиться с друзьями