робот на телефоне как называется
Голосовые роботы для обзвона клиентов: что выбрать
Отбирая доклады на ежегодную конференцию о коммуникациях для бизнеса Intercom, подготовили небольшой обзор-сравнение сервисов для роботизированных обзвонов.
Сегодня любая компания использует несколько каналов для общения с клиентом — email, социальные сети, чат на сайте, телефон. Последний, согласно исследованию АКИТ, остается наиболее популярным видом связи в России, что подтвердили 90% респондентов. Как следствие, значительные затраты бизнеса приходятся на содержание колл-центров или выведение данной функции на аутсорс: в среднем одна минута разговора обходится компании в 8-10 рублей.
Автоматизировать можно как входящие, так и исходящие звонки. Про первые мы писали ранее, разберемся с исходящими коммуникациями. Теплые продажи и поддержка при возникновении проблем с товаром или услугой еще требуют участия живого оператора — с информационными звонками, сопровождением заказа и анкетированием легко справляются алгоритмы.
Современные решения позволяют автоматизировать обзвоны, повысив их качество и сократив издержки. Чаще всего бизнес обращается к технологии «умного» IVR (интерактивные голосовые ответы) с функционалом заранее записанных фраз или синтеза речи в режиме реального времени. Эта система способна совершать обзвоны и выполнять маршрутизацию звонков внутри колл-центра с использованием информации, вводимой или произносимой клиентом. Разработка своего сервиса может занять около года, что в денежном выражении равно 5-10 миллионам рублей. Для пилотного проекта эффективнее воспользоваться готовыми решениями, речь о которых пойдет ниже. Срез строился по следующим критериям: основные функции, используемые технологии, тарифы.
Описание: Управление любыми исходящими звонками компании через интерактивное голосовое меню (IVR).
Технологии: Есть синтез, сервис позволяет озвучивать текст мужским или женским голосом, и распознавание речи — технология позволяет задавать сложные сценарии обзвона, предполагающие несколько ответов на вопрос. Программист не нужен: особенностью сервиса является визуальный редактор, состоящий из блоков, передвигая которые, можно задать необходимую последовательность действий. Есть HTTP API и Voice Mail Detector.
Тарифы: Средняя стоимость звонка — 1,85 руб., минимальной суммы пополнения нет.
Аналогичные сервисы: нет.
На сегодняшний день рынок сервисов для автоматизации исходящих звонков предлагает три основных решения:
Голосовые рассылки, использующие аудиозапись голоса или синтез речи (обратная связь осуществляется через нажатие клавиш);
Голосовые рассылки, «понимающие» собеседника (использование технологий распознавания речи);
Умные конструкторы исходящих звонков, реализующие сложные сценарии навигации в соответствии с ответами собеседника.
Робот совершает тысячи параллельных звонков, что не может сравниться с показателями ни одного колл-центра. Согласно статистике Smartcalls, расходы на содержание колл-центра снижаются минимум на 25%. И, наконец, использование ботов полностью исключает человеческий фактор — обед, севший голос, забывчивость, ошибка при наборе номера более не повлияют на коммуникацию с клиентом.
Сухая статистика — хорошо, но кейсы лучше! Присоединяйтесь к конференции Intercom, посвященной коммуникациям для бизнеса: среди подтвержденных спикеров сотрудники Logitech, Virgin Connect, Voxbone, ВКонтакте, SkyEng. Программа конференции будет опубликована в первых числах сентября, мероприятие пройдет в центре Москвы 11 октября.
В Intel создали дешёвого игрушечного робота на базе смартфона
Как пишет VentureBeat, мощности современных смартфонов достаточно для выполнения простых действий — перемещения, распознавания объектов и огибания препятствий. В конструкции OpenBot смартфон присоединяется к корпусу, распечатанному на 3D-принтере. Робот оснащён четырьмя моторчиками, подлючёнными к плате. Плата, в свою очередь, соединена с Arduino Nano, которая обеспечивает связь со смартфоном при помощи USB.
Передние колёса OpenBot оснащены датчиками, которые позволяют регулировать скорость и направление движения робота. Благодаря приложению для Android роботом можно управлять с помощью Bluetooth-совместимых игровых контроллеров PS4, Xbox и Switch. Кнопки на контроллерах можно использовать для сбора данных и переключения между алгоритмами передвижения.
Таких алгоритмов в OpenBot два. Первый, который Мюллер и Колтун разработали и обучили самостоятельно, отвечает за перемещение по коридорам, а второй позволяет распознавать человека в прямой видимости робота и следовать за ним. Алгоритм следования за человеком работает при помощи Tensorflow Lite.
Мюллер и Колтун провели тесты, чтобы отследить, как меняется производительность робота с различными моделями смартфонов. Роботу, подключённому к самому бюджетному смартфону Nokia 2.2, удавалось обнаруживать человека и следовать за ним примерно в половине случаев. Все сравнительно новые смартфоны, включая Xiaomi Note 8, Huawei P30 Lite и Xiaomi Poco F1, позволяют отслеживать людей со скоростью 10 кадров в секунду или выше благодаря специальным ускорителям ИИ телефонов.
Разработчики надеются, что дешёвые роботы на базе смартфонов распространятся по всему миру.
Разработчики опубликовали на arXiv.org статью с описанием робота и выложили на GitHub модели для 3D-печати корпуса. Кроме того, они пообещали в скором времени опубликовать исходный код проекта, который пока находится на рассмотрении.
В 2018 году похожий проект представили компании Huawei и с Porsche, которые собрали прототип беспилотного автомобиля на базе смартфона. Робомашина также способна выявлять препятствия, объезжать их и выполнять простые команды человека.
Робот, который заменяет сотрудников колл-центра
Представляем Звонобота — робота-оператора, который поддерживает диалог и может продавать по телефону, проводить опросы и рассказывать о новых акциях. Он обзванивает 350.000 клиентов за час, и большинство думает, что говорит с человеком.
Звонобот — это робот для автоматизации звонков, который распознаёт и генерирует человеческую речь. Он заменяет менеджеров на разных задачах. Может проконсультировать, провести опрос и даже продать по телефону.
Робота легко интегрировать с системой заказчика, в таком случае он сможет использовать её данные в разговоре. Представьте, клиент спрашивает: «Ну что там с моим заказом?». Звонобот обращается к системе — смотрит, как зовут позвонившего и на какой стадии доставка. Отвечает: «Иван Васильевич, ваш заказ в сортировочном центре, ориентировочная дата доставки — 14 сентября». А когда заказ придёт в магазин, робот сам узнает об этом и уведомит клиента.
Используя сервис, заказчики экономят на колл-центре: один звонок робота в среднем обходится в 1 руб, тогда как звонок среднего менеджера с зарплатой 30 тыс. и производительностью 100 звонков в день — в 13,5. А по скорости Звонобота не догонит и армия сотрудников: он делает 6000 звонков в минуту.
У Звонобота свой сайт — zvonobot.ru. На нём пользователи регистрируются и запускают обзвон роботом. Рассылку а-ля «приходите к нам в магазин на 50% скидки» можно сделать за три минуты. Ниже — инструкция по созданию простой рассылки.
Рассылка создаётся в специальном окне. Пользователь загружает базу номеров и аудиосообщение, которое должен услышать клиент. Сообщение можно также прописать текстом — Звонобот озвучит его мужским или женским голосом на выбор.
Чтобы робот мог общаться с клиентом, нужно добавить голосовое меню — алгоритм, по которому Звонобот будет вести разговор. Робот может отвечать фразами, перевести звонок на менеджера, отправить смс клиенту либо отправить результат звонка заказчику по вебхуку.
По желанию можно задать дополнительные настройки: указать частоту звонков, запланировать рассылку заранее, настроить повторный прозвон тех, кто не взял трубку в первый раз, и другие.
Остаётся нажать «запустить рассылку», и Звонобот начнёт звонить контактам из загруженной базы.
Более сложный сценарий бесплатно поможет составить персональный менеджер — он отвечает за помощь с запуском рассылок и за интеграцию с другими сервисами.
У нас открытый API, поэтому робота можно интегрировать с любой сторонней системой. Это легко сделать через раздел «Эмулятор запросов». Сервис сам сгенерирует строчки кода, нужно только создать сценарий звонка в обычном формате, указать его параметры и нажать «сгенерировать запрос».
После интеграции Звонобот будет обмениваться информацией с системой, реагировать на события внутри неё и использовать данные системы в разговоре. Робот сможет решать сложные задачи, например:
Чаще всего Звонобота внедряют для холодных продаж, проведения опросов, рассказа об акциях, отправки уведомлений и приема заявок. Иногда робота используют креативно: компания-перевозчик Магистраль под видом соц. опроса узнала, сколько раз в неделю потенциальные клиенты перевозят грузы. В итоге за час выявила самых крупных заказчиков и отправила менеджеров работать с ними.
Примеры того, как применяют Звонобота наши клиенты:
В дальнейшем планируем развивать Звонобота в двух направлениях: внедрить элементы искусственного интеллекта и вывести сервис на новые рынки.
Элементы искусственного интеллекта. Робот научится вникать в смысл предложений. Не нужно будет скриптовать каждый ответ клиента — Звонобот сам выделит потребность и даст решение. Например, из фразы «объясните, где мои деньги» поймет, что банкомат не выдал наличку либо у клиента неожиданно списали средства с карты.
Выход в новые страны. Сейчас Звоноботом пользуются в 20 странах мира. Мы хотим большего: планируем полностью охватить Азию, Европу и часть ЮАР уже в этом году. Сегодня ресурсов хватает, чтобы развернуть работу в новой стране в течение дня по запросу клиента.
В начале пути Звонобот был сервисом для простых голосовых рассылок с командой из трех человек. За три года мы расширили штат до сотни сотрудников и превратили продукт в робота-оператора, который распознаёт речь собеседников, ведёт диалоги и подключается к сторонним системам.
С помощью Звонобота наши клиенты сделали 600 млн. звонков. Мы помогли внедрить робота в разные сферы бизнеса: он помог продать ортопедические изделия на 12 млн., избавил сеть аптек от невыкупа товаров и принес 1,7 млн. прибыли и уже два года собирает показания счетчиков на электроэнергию. Больше кейсов — на нашем на сайте.
Для знакомства с сервисом можно запустить первые звонки бесплатно — после регистрации на zvonobot.ru пользователи получают на счёт тестовый баланс, которого хватит на первые 20 звонков. Будем рады видеть вас в числе наших клиентов.
Осталось разработать бота, который отвечает на эти спам звонки, и пусть они друг с другом общаются.
Можем и такое! Звонобот — это про автоматизацию всех звонков, в том числе входящих обращений 🙂
У америкосов чувак написал такой сервис. Только он не на чатботов был настроен а на людей. Тролил их по-полной.
У меня была ситуация, когда я с таким роботом разговаривала несколько минут, пока не поняла, что происходит 🌝😀😳
такой сервис обречён на успех
Сайт не открывается в браузере, но просит подписаться на пуш-спам.
Какая из ссылок у вас не открылась и с какого устройства? Расскажите, решим проблему.
Все ссылки из статьи ведут на https://zvonobot.ru/, должно было открыться вот так:
Ссылка https://zvonobot.ru/ Chrome на Windows 10. Крутится голубой кружок, потом выскакивает предложение подписаться на пуш-спам. После закрытия этого предложения крестиком опять крутится голубой кружок. Больше ничего кроме голубого кружка за 1-2 минуты не загружается.
Проверил с Chrome на Windows 10: сначала голубой кружок на экране загрузки, после открылся сайт. Возможно, у нас с вами что-то отличается в настройках, поэтому сайт открылся криво — zvonobot.ru должен быстро грузиться и не встречать пользователей пушем.
Попробуйте зайти позже или с другого браузера. Если всё равно не откроется, напишите в личку — попробуем решить. Спасибо, что рассказали о проблеме, в любом случае передам техническим специалистам)
Не, я уже больше клацать не буду по вашему сайту. Обратитесь к профессиональным тестировщикам.
Скорее всего, так ваш сайт встречает тех, кто заходит на него в первый раз. А у вас открывается быстро т.к. вы на нем не первый раз заходите. Очистка кук скорее всего ничего не даст, потому что сайт может в первый раз обращаться к защищенному хранилищу или к графической подсистеме и рисовать картинку которое позднее кэширует или еще что. Во всяком случае это проблема скорее всего непростая и решать ее должны профессионалы.
Дополнительно могу подсказать только то, что инициатор пуш-спама находится в скрипте: https://zvonobotru.push.world/embed.js ред.
Большое спасибо, что рассказали о проблеме. Уже с ней разбираемся
Nice blog and absolutely outstanding. You can do something much better but I still say this perfect. Also, check Formatter to remove unwanted data from the memory card using SD Card Formatter tools for Windows. Visit it and enjoy it.
Легко распознаются роботы по паузам длиннее обычных. Им требуется сначала разпознать речь, а это у звонобота сторонний сервис (яднекс или гугл уж не помню), а потом подгрузить нужную фразу. На этом этапе уже начинаю подозревать. Дальше-больше. На вопрос робота-псевдоменеджера:» А в каком городе вы находитесь?» отвечаю вопросом на вопрос:»Ой я забыл как вас зовут, напомните». Тут-то робот и палится. Он говорит:»Извините, я не расслышал ваш город». Разве нормальный человек так отвечает? Дарю эту фишку.
Робот умеет отвечать на неожиданные вопросы, нужно только правильно настроить скрипт. Мы часто делаем для клиентов разветвленные алгоритмы со множеством вариантов, чтобы Звонобот всегда знал, что ответить клиенту. Например, на «ой, я забыл, как вас зовут, напомните» робот сможет дать подобный ответ: «Меня зовут Мария. Так в каком городе вы находитесь?»
Вы можете предугадать все внезапные вопросы? И сразу запрограммировать все ответы? Не смешите меня. «А откуда у вас мой номер телефона?», «А можете попозже позвонить?», «А мне вот вчера тоже от вас звонили это не вы были. «. И еще 300 встречных вопросов занудному менеджеру. И даже банальное «Чё?» ставит в тупик робота. Нормальный человек повторит вопрос, в робот ляпнет «Я не расслышал ваш город» и сядет в лужу. ред.
РОБОТ на базе: android, arduino, bluetooth. Рефлексный. Часть 2
Оглавление
Статья 1. РОБОТ на базе: android, arduino, bluetooth. Начало
Статья 2. РОБОТ на базе: android, arduino, bluetooth. Рефлексный. Часть 2.
Предполагается, что человек читающий статью уже имеет представление о:
-Базовых понятиях электроники
-Предыдущей статье
Постановка задачи
Создать робота который выполняет следующий функционал:
-Имеет удаленное управление при помощи смартфона (передвижение вперед, назад, налево, направо)
-Передает на смартфон данные о расстоянии до объекта находящегося перед ним(на базе ультра звукового датчика)
-Имеет режим автономного управления: непрерывно перемещается по помещению, при встрече препятствий меняет направление своего движения, тем самым объезжая препятствие.
Немного теории
Наш мир является сложнейшей системой, в которой взаимодействуют между собой огромное количество объектов, подчиненных определенным законам физики, поэтому создание робота функционирующего в рамках этой системы, является очень трудоемкой задачей. Для упрощения процесса создания первого робота воспользуемся понятием абстрагирования среды(в которую помещен робот) и действий робота. В дальнейших статьях будем усложнять среду и соответственно действия робота.
Абстрагирование среды
Среда где будет обитать наш первый робот будет представлять собой двухмерный мир и обладать следующими характеристиками:
1) Полностью наблюдаемая, т.е. датчики робота предоставляют доступ к полной информации о состоянии среды в каждый момент времени. Полностью наблюдаемые варианты среды являются удобными, поскольку роботу не требуется поддерживать какое-либо внутреннее состояние для того, чтобы быть в курсе всего происходящего в этом мире.
2) Детерминированная. Если следующее состояние среды полностью определяется текущим состоянием и действием, выполненным роботом, то такая среда называется детерминированной; в противном случае она является стохастической.
3) Эпизодическая. В эпизодической проблемной среде опыт робота состоит из неразрывных эпизодов. Каждый эпизод включает в себя восприятие среды роботом, а затем выполнение одного действия. При этом крайне важно то, что следующий эпизод не зависит от действий, предпринятых в предыдущих эпизодах. В эпизодических вариантах среды выбор действия в каждом эпизоде зависит только от самого эпизода.
4) Статическая. Если среда может измениться в ходе того, как робот выбирает очередное действие, то такая среда называется динамической для данного робота; в противном случае она является статической.
5) Непрерывная — Различие между дискретными и непрерывными вариантами среды может относиться к состоянию среды, способу учета времени, а также восприятием и действиям агента. В нашем случае считается что состояние среды меняется непрерывно. К примеру игра в шахматы является дискретной, так как имеет конечное количество различных состояний.
6) Одноагентная это среда в которой находится один объект(робот), и другие объекты на него не влияют и не конкурируют с ним.
Абстрагирование действий робота
1) Движение – робот может передвигаться в двух направлениях(взад, вперед) и разворачиваться на месте(налево, направо)
2) Датчики робота (ультразвуковой сенсор), позволяет определить расстояние до объекта. Расстояние может быть определено от 0,02 метра до 4 метров.
Таким образом, определим, что создаваемый в этой статье робот является простым рефлексным роботом. Подобные роботы выбирают действия на основе текущего акта восприятия, игнорируя всю остальную историю актов восприятия.
Краткая информация по используемым деталям и модулям
Драйвер двигателей HG7881. Для управления двигателями робота необходимо устройство, которое бы преобразовывало управляющие сигналы малой мощности в токи, достаточные для управления моторами. Такое устройство называют драйвером двигателей.
HG7881 – это двухканальный драйвер двигателей, питание возможно от источника 2,5 – 12 В. Описание выходов драйвера:
Таблица 1
Вывод | Описание |
B-IA | Двигатель B Вход A (IA) |
B-IB | Двигатель B Вход B (IB) |
GND | Земля (Минус) |
VCC | Рабочее напряжение 2.5-12V (Плюс) |
A-IA | Двигатель A Вход A (IA) |
A-IB | Двигатель A Вход B (IB) |
Для того чтобы заставить двигатели работать нужным нам образом на выводы (B-IA, B-IB, A-IA, A-IB) необходимо подавать логические сигналы (HIGH,LOW). Таблица истинности двигателей:
Таблица 2
IA | IB | Состояние двигателя |
L | L | Off |
H | L | Forward |
L | H | Reverse |
H | H | Off |
Ультразвуковой сенсор измерения расстояния HC-SR04. Определяет расстояние до объекта, измеряя время отражения звуковой волны от объекта.
Сенсор излучает короткий ультразвуковой импульс (в момент времени 0), который отражается от объекта и принимается сенсором. Расстояние рассчитывается исходя из времени до получения эха и скорости звука в воздухе.
На вывод (Trig) подаётся импульс длительностью 10 мкс, ультразвуковой модуль излучает 8 пачек ультразвукового сигнала с частотой 40кГц и обнаруживает их эхо. Измеренное расстояние до объекта пропорционально ширине эха (Echo) и может быть рассчитано по формуле:
Ширина импульса/58 = расстояние в см.
Сборка робота и подключение всех модулей
Собираем платформу (рис.2).
Рисунок 2
Подключаем двигатели к драйверу (рис. 3). По два двигателя на один разъем драйвера, т.е. двигатели левой стороны платформы к разъему “Motor B”, двигатели правой стороны — “Motor A”. Управление платформой будет произведено аналогично гусеничной. При движении вперед и назад все двигатели работают синхронно в одном направлении, при повороте направо двигатели правой стороны платформы останавливаются, а левой двигаются синхронно, при повороте налево двигатели левой стороны останавливаются, а правой двигаются синхронно.
Рисунок 3
Прикручиваем верхнюю часть платформы. Соединяем драйвер двигателей, ардуино, аккумуляторы, БТ модуль и ультразвуковой сенсор к макетной плате (рис.4)
Рисунок 4
Схема подключения представлена на (рис.5). Питание ардуино, ультразвукового сенсора и драйвера двигателей (следовательно и самих двигателей) обеспечивают 4 подключенных последовательно аккумулятора (1,2 В., 2700 мА/ч), на БТ модуль питание подается от выхода ардуино 3,3 В.
Рисунок 5
Робот собран, необходимо его заставить выполнять команды, отправленные с андроида.
Скетч для Arduino ШАГ 1 – Удаленное управление роботом
Объявляем переменные: R_A_IA, R_A_IB – определяют номера выводов управляющих двигателем А (двигатели правой стороны), L_B_IA, L_B_IB — выводы управляющие двигателем B(двигатели левой стороны. Инициируем последовательное соединение и задаем скорость передачи данных в бит/c (бод) – 38400. Устанавливаем режим работы выводов управляющих двигателями – OUTPUT (выходы). Подаем на все выходы значение HIGH, что означает — двигатели отключены(таблица 2).
Определяем функции: go_forward(), go_back(), go_right(), go_left(), stop_robot(), которые запускают двигатели в прямом или обратном направлении вращения, тем самым приводя робота в движение – вперед, назад, направо, налево, стоп, соответственно.
В основном цикле программы происходит считывание и обработка данных полученных в последовательный порт от БТ модуля. В зависимости от полученной команды выполняется та или иная функция и по последовательному порту передается текст об ее выполнении.
Android приложение ШАГ 1 – Удаленное управление роботом
Вот так будет выглядеть основное activity:
Текстовое поле «txtrobot», будет отображать всю необходимую нам информацию. Кнопки b0, b1, b2, b3, b4 будут отправлять команды в arduino (0, 1, 2, 3, 4)
Переходим в src/../MainActivity.java здесь и будет располагаться наш основной код.
В предыдущей статье на шаге 4, был представлен код позволяющий передавать и принимать данные по БТ. За основу возьмем этот код.
В состояния активити onPause() и onResume() добавим условие проверки существования БТ у андроида и определения включен ли он. В предыдущей статье это условие отсутствовало в связи, с чем при запуске приложения, если был отключен БТ, оно завершалось с ошибкой и только после этого предлагало включить БТ.
Объявим переменные для хранения кнопок:
Напишем обработчики нажатия этих кнопок, для отправки команд:
Полный код приложения:
Данное приложение, позволяет управлять роботом при помощи андроида, отправляя команды по БТ на ардуино, и принимая текстовые ответы от него. Первая часть поставленной задачи выполнена.
Скетч для Arduino ШАГ 2 – Режим автономного управления роботом
Для работы с ультразвуковым сенсором, воспользуемся готовой библиотекой
ultrasonic-HC-SR04.zip
Распаковываем файлы и помещаем в каталог где расположен скетч
Подключаем библиотеку
Конструктор Ultrasonic принимает два параметра — номера выводов к которым подключены Trig и Echo, соответственно:
Получаем данные о расстоянии до объекта в сантиметрах:
Передаем данные на последовательный порт, для последующей передачи их через БТ модуль.
Символы «*» и «#» означают начало и конец передаваемого блока информации о расстоянии до объекта. Это необходимо для того чтобы четко отделять необходимые данные друг от друга, так как при их передачи часть теряется либо приходит с запозданием.
Полный скетч для загрузки в ардуино:
Android приложение ШАГ 2 – Режим автономного управления роботом
Таким образом, основное activity примет вид:
Объявим переменную b5:
И флаг позволяющий определить включен режим автоуправления или нет:
Создадим обработчик ее нажатия:
А также внесем изменения в обработчик кнопки «b0»(Стоп)
Осталось создать алгоритм позволяющий роботу самостоятельно перемещаться по помещению и объезжать препятствия.
Обработаем полученные данные о расстоянии до объекта отправленные ардуино. Если расстояние до объекта менее 50 см. то поворачиваем направо в противном случае едим прямо:
Ниже приведен полный код Activity:
Созданное приложение для андроида в связке с представленным скетчем ардуино, позволяет, как удаленно самостоятельно управлять роботом, так и включать режим автономного управление, при котором робот передвигается в прямом направлении и если требуется, объезжает препятствия.
Результатом проделанной работы является простейший рефлексный робот. Дальнейшее применение более сложных алгоритмов на базе приведенных шаблонных приложений и скетчей позволит создавать роботов основанных на модели, на цели, на полезности, обучающихся роботов и др.
К следующей статье я сделал заказ всего одного модуля:
Наименование | Ссылка | Цена y.e | Цена руб | Кол-во | Сумма |
Wifi модуль | dx.com/p/hi-link-hlk-rm04-serial-port-ethernet-wi-fi-adapter-module-blue-black-214540#.UutHKD1_sd0 | 14,99 | 524,65 | 1 | 524,65 |
ИТОГ: 524,65
В комментариях к предыдущей статье, хабра пользователь commanderxo порекомендовал не изобретать велосипед, а воспользоваться стандартным протоколом Firmata (протокол для обмена данными между ардуино и сервером). К сожалению работоспособной библиотеки, для андроида в связке с БТ, я не нашел. Написать свою библиотеку у меня не хватает времени и сил, поэтому в данной статье я продолжаю изобретать велосипед. Если кто из Хабра пользователей обладает информацией о такой библиотеке просьба поделиться.