История


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

Биржа телефонных операторов, работающих самостоятельно из дома.
Альтернатива традиционным колл-центрам, позволяющая избавить сотрудников от холодных звонков, быстро проинформировать или опросить существующих клиентов и выяснить потребность потенциальных.

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

Поэтому мне кажется правильным, чтобы идея не затухла, выложить все наработки в открытый доступ. Что и делаю.





Оправдание существованию (рациональ)


Людям, далёким от этой индустрии, как и мне самому, сходу тяжело оценить объёмы рынка. Существует отчёт об исследование рынка от РБК, но этот отчёт можно приобрести за 45 тыс. руб., поэтому пришлось ограничится поиском по интернету, и вот что он дал:
— существует огромный рынок колл-центров, но (почти) у всех у них операторы физически находятся на территории колл-центров
— в России числится 88 тысяч операторов колл центров. В год в России колл-центры совершают 450 миллионов звонков. В США и Европе эти показатели на порядок выше

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

Неоднократно сталкивался с тем, что колл-центры отказываются брать проекты прозвона меньше, чем на 50 тыс. рублей. А это довольно солидная сумма в сравнении с, например, месячным рекламным бюджетом Яндекс.Директа, если брать малый бизнес. А какой будет отдача — предсказать очень тяжело. Если с Яндексом можно всё гибко регулировать, то у традиционных колл-центров рычагов контроля и управления довольно мало. Тут можно оплатить 100 рублей (или получить их в качестве бонуса при регистрации) и сразу же посмотреть, как идут звонки.

Преимущества


Для хозяев сервиса:
Высокотехнологичное решение, позволяющее предоставлять большой объём услуг с небольшими затратами.
Отсутствие необходимости в большом количестве сотрудников в штате.
Создаёт рабочие места. Принцип биржи — посредничество.

Для заказчика сервиса:
Просто. Загружаете список контактов и информационный текст. Ваше задание сразу же видят все свободные операторы и начинают звонить.
Быстро. Успешный звонок оператора немедленно переводится на вашего сотрудника, которому остаётся только выставить счёт.
Качественно. Операторы заинтересованы в качестве и количестве звонков, в отличии от офисных коллег. Вы не платите тем, кто ушёл пить чай.
Экономично. Вы платите только за звонки. Ни за офис, ни абонентскую плату за телефонные линии, ни столичные зарплаты операторам колл-центров.

Для телефонного оператора:
Работа на телефоне. Где, когда и сколько выбираете вы сами. Для работы нужны только интернет и гарнитура.
Быстро. Включили компьютер и вы уже на работе.
Удобно. Работайте столько, сколько захотите и когда захотите.
Выгодно. Получаете деньги за каждый звонок.

Целевая аудитория


1. Малый и средний бизнес, желающий избавить сотрудников от холодных звонков, быстро проинформировать или опросить существующих клиентов и выяснить потребность потенциальных.
2. Студенты, матери в декрете, инвалиди по состоянию здоровья и просто люди со свободным временем.

Что уже сделано и работает


Работающая настройка FreeSWITCH в связке с Zadarma/Telphin.
Событийно-ориентированный веб-сервер на Ruby, обслуживающий сайт вместе с интерфейсами заказчика и оператора.
Флеш-клиент для соврешения телефонным оператором SIP вызовов прямо из своего интерфейса.
Опробована связь как с мобильными номерами, так и с городскими, в том числе на оборудовании Linksys/Cisco PAP2T.
«Приглашения» на сайт вместо открытой регистрации. Выдавать приглашения, увы, можно только через консоль, интерфейса администратора нет.
Симпатичный адаптивный сайт с интерфейсами оператора и заказчика, обеспечивающими требования MVP.
Интерфейс оператора позволяет выполнять все действия без мыши, с помощью сочетаний клавиш, например 'h' чтобы повесить трубку, и 't' чтобы перевести звонок на менеджера заказчика обзвона.
Перевод звонка на сторону менеджера прозвона с возможностью во время перевода оператору сообщить голосом менеджеру, куда был совершён звонок и описать уровень заинтересованности клиента.

Интерфейс оператора


Страница оператора выглядит примерно так, тут на одной картинке слева направо:
— начальная страница, на которой видно текстовый сценарий (в более широком варианте сценарий — справа, а кнопки и поля для заполнения — слева);
— страница, показываемая во время разговора, позволяет записать содержание разговора текстом и добавить новый контакт, если позвонили не ответственному лицу;
— страница, показываемая после разговора, позволяет дозаполнить поля, а также выставить статус звонку



Интерфейс заказчика


Предоставляет заказчикам возможность залить электронную таблицу определённого формата, включающую телефонные номера, имена и т.п., задать сценарий разговора, и следить за результатами обзвона в виде таблички.

Очевидные недостатки


При запуске сервиса необходим хотя бы один штатный телефонный оператор. В противном случае некому будет удовлетворять потребности первых заказчиков.
Если у самого заказчика нет профессионального редактора сценария разговора, то звонок может пойти куда-то в сторону и не достигнуть цели.
Нету интерфейса администратора.
Флеш-плагин для SIP-вызова довольно глючен, и вдобавок не работает на OS X. Ещё он подвержен чудо-багу, когда вылезает окошко флеш-настроек для разрешения доступа к микрофону, но этого окошка не видно, хотя этот баг можно обойти, зайдя через меню браузера в настройки флеш плагина.

Внутренняя реализация


Для тех, кому лениво читать код, вкратце расскажу.

В сердце системы связи — программная АТС FreeSWITCH.
Веб-сайт выполнен на Ruby, но без Rails, а на моём любимом голом Sinatra, да ещё с DataMapper'ом.
FreeSWITCH стоит в режиме Inbound Event Socket и управляется Ruby скриптом (calls), тоже событийно-ориентированным, без применения каких-либо Librevox или Adhearsion.
Инкрементальные миграции базы данных запускаются скриптом migrate, а сами миграции находятся в директории migrations.
База данных — PostgreSQL, на девелоперской машине — SQLite3.
Для обмена данными между веб-сайтом, а именно интерфейсом телефонного оператора и скриптом, управляющим разговорами служит Redis.
Страница построена с помощью Bootstrap.
Используется JQuery.
Для клавиатурной навигации по веб-интерфейсу используется Mousetrap.

Исправления и улучшения, которые я планировал


— учёт времени звонков
— тестовое покрытие веб-приложения
— тест оператора на профессиональную пригодности (тестовый звонок с роботом, запись разговора, анализ оффлайн)
— тестовый план, на котором операторы смогут учиться (с роботами), а модераторы оценивать и направлять их
— интерфейс модератора
— интерфейс администратора
— ставить блок на прозваниваемый контакт, чтобы два оператора не могли звонить туда одновременно
— безопасность: убрать лишнее из freeswitch.mxml, переделать флеш-звонилку
— запретить операторам звонить введённым ими же контактам (чтобы не звонили на кудыкину гору за счёт сервиса)
— запретить ввод одного и того же контакта дважды, сообщать модератору
— ограничивать максимальную продолжительность звонка, сообщать модератору о регулярных превышениях по какому-то плану или оператору
— интерфейс менеджера заказчика, чтобы он сразу мог видеть, откуда пришёл звонок и какие данные ввёл изначально звонивший оператор
— получение звонка на страницу менеджера заказчика, чтобы избежать звонков на городские номера
— аттрибуция используемых иконок и js библиотек
— интерактивная обучалка интерфейсу

Более далекоидущее:
— запись звонков (8кбит/с ~= 1ГБ/мес)
— вызов менеджера заказчика на SIP номер (сокращаем затраты заказчика)
— предлагать оператору ротацию проектов раз в час
— обратный вызов на городской оператору, в случае невозможности пользоваться звонком с сайта
— вызов на SIP-клиент оператору
— WebRTC вместо флеш клиента

Исходный код


Исходники на Github

В комплекте к этому делу у меня есть набор рецептов для babushka (нечто более человеческое из семьи Chef, Puppet и Ansible) и простой скрипт, читающий конфигурацию серверов, позволяющая настроить десяток из них одной командой. В пару к babushka я, естественно, назвал его ded. Выложу на тот же аккаунт, как только причешу. Работает только с Debian/Fedora/CentOS, в то время как мне в последнее время всё как-то больше нравится иметь на серверах Archlinux.

Что дальше?


Я не жду какой-либо реакции на идею или предложений.
Но мне нравится эта штука, и я был бы рад, если бы она заработала. Но точно не смогу это сделать в одиночку.