forum.bitel.ru http://forum.bitel.ru/ |
|
Загрузка звонков без dataloader http://forum.bitel.ru/viewtopic.php?f=10&t=5169 |
Страница 1 из 1 |
Автор: | lsergei [ 22 фев 2011, 10:46 ] |
Заголовок сообщения: | Загрузка звонков без dataloader |
Добрый день, уважаемые специалисты! Подскажите, есть ли возможность загружать звонки в модуль Phone непосредственно работая с базой, тоесть наполняя таблицы data_log_x_*, а затем запуская какую-либо обработку? Заранее спасибо. P.S. Вопрос от того, что видим для себя большую проблему в загрузке звонков с по-часовой разбивкой. |
Автор: | Cromeshnic [ 22 фев 2011, 12:55 ] |
Заголовок сообщения: | Re: Загрузка звонков без dataloader |
Так вам всё равно придётся делать в базе разбивку по часам (поле hh - час). На самом деле в часовом zip-cdr файле могут быть звонки вообще за любой период - это не принципиально. Хоть за другой месяц и год. Каким месяцем/днём и часом они будут протарифицированны - зависит от того, в каком файле находятся. |
Автор: | lsergei [ 22 фев 2011, 13:14 ] |
Заголовок сообщения: | Re: Загрузка звонков без dataloader |
Cromeshnic писал(а): Так вам всё равно придётся делать в базе разбивку по часам (поле hh - час). Дык записать это в базу - не проблема, при разборе своей CDR-ки я знаю час(hh) и могу заполнить это поле. Cromeshnic писал(а): На самом деле в часовом zip-cdr файле могут быть звонки вообще за любой период - это не принципиально. Хоть за другой месяц и год. Каким месяцем/днём и часом они будут протарифицированны - зависит от того, в каком файле находятся. Я уже попробывал, и понял, что весь месяц можно загрузить в один zip-файл. Хочется понять реализуемо ли следующее: периодически появляется файл со звонками, их там может быть 10, а может быть 1000 и период появления файла тоже четко не известен, тоесть может раз в 5 минут, а может раз в сутки. Но как только файл появился, по этому событию я могу запустить свой бинарник, который, к примеру и положит звонки сразу в базу, без создания zip-архивов. Спасибо. |
Автор: | Cromeshnic [ 22 фев 2011, 14:14 ] |
Заголовок сообщения: | Re: Загрузка звонков без dataloader |
Конечно можно. Например по крону запускать скрипт, который пишет в базу. У нас так сделано: - периодически в отдельную директорию падают xml со звонками с voip-сервера - по крону запускается собственный скрипт, выгребающий все файлы из этой директории, бэкапящий их, конвертирующий в CDR-формат и складывающий cdr в zip для биллинга - по планировщику запускается загрузка этих новых файлов биллингом |
Автор: | Cromeshnic [ 22 фев 2011, 14:15 ] |
Заголовок сообщения: | Re: Загрузка звонков без dataloader |
Ещё такой нюанс: если часового zip-cdr файла нет, а данные в базе есть - всё нормально, при вызове загрузки/переобсчета сессий ничего не потеряется. А если есть пустой zip-файл, то данные в data_log_xxx за тот час затрутся при его загрузке. |
Автор: | lsergei [ 22 фев 2011, 14:59 ] |
Заголовок сообщения: | Re: Загрузка звонков без dataloader |
Спасибо большое за нюансы! Но основной вопрос остался, достаточно ли будет положить звонки в таблицу data_log*, будут ли они при этом нормально обсчитываться? |
Автор: | Cromeshnic [ 22 фев 2011, 15:04 ] |
Заголовок сообщения: | Re: Загрузка звонков без dataloader |
Да, достаточно. Таблица data_log - полная копия CDR-файлов. |
Автор: | lsergei [ 22 фев 2011, 15:29 ] |
Заголовок сообщения: | Re: Загрузка звонков без dataloader |
Спасибо, буду пробовать) |
Автор: | grifin [ 28 июл 2012, 05:09 ] |
Заголовок сообщения: | Re: Загрузка звонков без dataloader |
А если у меня АТС (Asterisk) сама умеет писать CDR в mysql базу, что будет если я ее научу сразу по мере появления звнка, класть его сразу в эту таблицу ? Будет корректно работать ? |
Автор: | grifin [ 10 сен 2012, 06:53 ] |
Заголовок сообщения: | Re: Загрузка звонков без dataloader |
Не получается красиво это запилить. Имя таблицы содержит дату, хотел повесить триггер на талицу, в которую пишет АТС, чтоб автоматом переносилось в биллинг, а хрен бы там. В триггерах не работает dynamic SQL. Т.е. нельзя использовать вычисляемое имя таблицы. Придется делать костыль в cron ![]() |
Автор: | grifin [ 15 сен 2012, 05:40 ] |
Заголовок сообщения: | Re: Загрузка звонков без dataloader |
Сделал. Логи теперь автоматически попадают в таблицы data_log_X_XXXXXXXX Если вручную запускать обработку логов - все работает. теперь вопрос, как включить автоматическую (по расписанию) обработку биллингом загруженных логов. Заранее спасибо. |
Автор: | focus [ 16 сен 2012, 17:50 ] |
Заголовок сообщения: | Re: Загрузка звонков без dataloader |
Как вариант посмотреть код, как в БГ запускается обработка логов. Сделать свой глобальный скрипит и запускать его через планировщик. |
Автор: | grifin [ 17 сен 2012, 00:49 ] |
Заголовок сообщения: | Re: Загрузка звонков без dataloader |
Я не силен в java, мне бы хотелось получить более точные инструкции. Кстати, как я понимаю, можно сделать все через базу. Подскажите в какой таблице хранится информация о периодах, которые загружены, в загрузке, в обработке, обработаны... ИЛи может есть другой путь ? |
Автор: | grifin [ 17 сен 2012, 03:48 ] |
Заголовок сообщения: | Re: Загрузка звонков без dataloader |
Короче сделал. Нашел таблицу, просто после формирования таблицы с первоначальными логами - вставляю задание в нее и оно тут же все обрабатывает. Короче полностью автоматизировал. Костыль только один пришлось делать, а так все красиво. Суть костыля в том, что логи зачем-то разработчики решили хранить в разных таблицах за каждый день. Поэтому имя таблицы заранее неизвестно, его приходится вычислять. Т.е. пользоваться динамическим SQL. А он в триггерах не работает. Поэтому сделано так: АТС пишет логи в свою базу в своем формате, потом в мускуле создан event который раз в 30 минут дергает процедуру, которая берет данные из лога АТС, преобразовывает, создает в базе билинга необходимые таблицы, заполяняет их и, потом вставляет запись в bgbilling.task_proccess, тем самым инициируя обработку данных биллингом. А вот если бы не было этого извращения с таблицами - можно было вообще триггер повесить на insert в базу АТС и тогда никакого крона не надо. Данные бы появлялись мгновенно. ![]() Еще, для красоты, можно бы писать еще и в таблицу source_data_ХХ, тогда можно будет в биллинге контролировать загруженности цветными квадратиками. Но особого смысла не вижу, и так все работает, без квадратиков. Да и не очень понятно что там за размер указан (размер чего ?) и что за второе поле - тоже непонятно. Ладно, не суть. основное сделано. |
Автор: | grifin [ 18 сен 2012, 02:45 ] |
Заголовок сообщения: | Re: Загрузка звонков без dataloader |
я бы хотел, для полноты картины услышать от разработчиков ответы на сл. Вопросы: 1. Могу ли я сделать chkconfig bgdataloader off раз я напрямую голи в БД засовываю. Или он к обработке тоже имеет отношение ? 2. Что писать в поля размер файла и дата файла в таблице source_data_ХХ если я вообще файлы не использую. PS. Если кто работает с Вымпелкомом - велкам к сотрудничеству для обмена опытом по интеграции. |
Автор: | grifin [ 01 окт 2012, 18:46 ] |
Заголовок сообщения: | Есть пробема... разработчики обратите внимание пожалуйста. |
Если в таблицу task_proccess писать таски на обработку статистики месяца, для которого не существует таблицы log_session то эта таблица НЕ СОЗДАЕТСЯ. Обсчет, при этом, происходит корректно, но таблица не создается. Я, конечно, могу сам ее создавать, но это ИМХО уже очень глубокое внедрение во внутреннюю структуру и логику. Да и правильнее реализовать это вам. |
Автор: | Phricker [ 01 окт 2012, 19:01 ] |
Заголовок сообщения: | Re: Есть пробема... разработчики обратите внимание пожалуйст |
grifin писал(а): Если в таблицу task_proccess писать таски на обработку статистики месяца, для которого не существует таблицы log_session то эта таблица НЕ СОЗДАЕТСЯ. Обсчет, при этом, происходит корректно, но таблица не создается. Я, конечно, могу сам ее создавать, но это ИМХО уже очень глубокое внедрение во внутреннюю структуру и логику. Да и правильнее реализовать это вам. Не сказал бы. Для чего создавать таблицу если в нее ничего не грузится? Т.е. например я когда то устанавливал модуль телефонии. попробовал пару загрузок. и забил на него на неопределенный срок. для чего биллингу постоянно создавать пустые таблицы? вот он их и создает если видит что идет загрузка но таблицы нет. Вы же вызываете загрузку не стандартными средствами. Вот условие и не срабатывает. Всего то лишь маленькое условие если таблицы нет - создать ее. Не вижу тут глубокого внедрения во внутреннюю структуру и логику. Хотя. Если вдруг поменяется структура таблиц - будет ж**а )) Но в этом случае тоже можно создавать таблицу тупо копированием структуры из таблицы за предыдущий месяц. |
Автор: | grifin [ 08 окт 2012, 10:30 ] |
Заголовок сообщения: | Re: Загрузка звонков без dataloader |
Реализовал создание таблицы. Заодно сделал добавление туда записей при загрузке логов. В поле "размер файла" подставляю левое значение больше 1000, а там где дата-время создания файла - тоже левое значение. Пока полет нормальный. |
Автор: | grifin [ 16 ноя 2012, 10:46 ] |
Заголовок сообщения: | Re: Загрузка звонков без dataloader |
У меня вопрос такой: В модуле TV останется возможность грузить CDRы напрямую в базу ? Очень хотелось бы для облегчения перехода на использование RADIUS чо бы поддерживался и старый механизм одновременно с RADIUSом |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |