BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 19 апр 2024, 09:06

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 19 ] 
Автор Сообщение
 Заголовок сообщения: Загрузка звонков без dataloader
СообщениеДобавлено: 22 фев 2011, 10:46 
Не в сети

Зарегистрирован: 15 авг 2009, 22:25
Сообщения: 4
Откуда: Perm
Карма: 0
Добрый день, уважаемые специалисты!

Подскажите, есть ли возможность загружать звонки в модуль Phone непосредственно работая с базой, тоесть наполняя таблицы data_log_x_*, а затем запуская какую-либо обработку?

Заранее спасибо.

P.S. Вопрос от того, что видим для себя большую проблему в загрузке звонков с по-часовой разбивкой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка звонков без dataloader
СообщениеДобавлено: 22 фев 2011, 12:55 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Так вам всё равно придётся делать в базе разбивку по часам (поле hh - час).

На самом деле в часовом zip-cdr файле могут быть звонки вообще за любой период - это не принципиально. Хоть за другой месяц и год. Каким месяцем/днём и часом они будут протарифицированны - зависит от того, в каком файле находятся.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка звонков без dataloader
СообщениеДобавлено: 22 фев 2011, 13:14 
Не в сети

Зарегистрирован: 15 авг 2009, 22:25
Сообщения: 4
Откуда: Perm
Карма: 0
Cromeshnic писал(а):
Так вам всё равно придётся делать в базе разбивку по часам (поле hh - час).


Дык записать это в базу - не проблема, при разборе своей CDR-ки я знаю час(hh) и могу заполнить это поле.

Cromeshnic писал(а):
На самом деле в часовом zip-cdr файле могут быть звонки вообще за любой период - это не принципиально. Хоть за другой месяц и год. Каким месяцем/днём и часом они будут протарифицированны - зависит от того, в каком файле находятся.


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

Хочется понять реализуемо ли следующее: периодически появляется файл со звонками, их там может быть 10, а может быть 1000 и период появления файла тоже четко не известен, тоесть может раз в 5 минут, а может раз в сутки. Но как только файл появился, по этому событию я могу запустить свой бинарник, который, к примеру и положит звонки сразу в базу, без создания zip-архивов.

Спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка звонков без dataloader
СообщениеДобавлено: 22 фев 2011, 14:14 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Конечно можно. Например по крону запускать скрипт, который пишет в базу.

У нас так сделано:
- периодически в отдельную директорию падают xml со звонками с voip-сервера
- по крону запускается собственный скрипт, выгребающий все файлы из этой директории, бэкапящий их, конвертирующий в CDR-формат и складывающий cdr в zip для биллинга
- по планировщику запускается загрузка этих новых файлов биллингом


Последний раз редактировалось Cromeshnic 22 фев 2011, 14:16, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка звонков без dataloader
СообщениеДобавлено: 22 фев 2011, 14:15 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Ещё такой нюанс: если часового zip-cdr файла нет, а данные в базе есть - всё нормально, при вызове загрузки/переобсчета сессий ничего не потеряется. А если есть пустой zip-файл, то данные в data_log_xxx за тот час затрутся при его загрузке.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка звонков без dataloader
СообщениеДобавлено: 22 фев 2011, 14:59 
Не в сети

Зарегистрирован: 15 авг 2009, 22:25
Сообщения: 4
Откуда: Perm
Карма: 0
Спасибо большое за нюансы!
Но основной вопрос остался, достаточно ли будет положить звонки в таблицу data_log*, будут ли они при этом нормально обсчитываться?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка звонков без dataloader
СообщениеДобавлено: 22 фев 2011, 15:04 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Да, достаточно. Таблица data_log - полная копия CDR-файлов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка звонков без dataloader
СообщениеДобавлено: 22 фев 2011, 15:29 
Не в сети

Зарегистрирован: 15 авг 2009, 22:25
Сообщения: 4
Откуда: Perm
Карма: 0
Спасибо, буду пробовать)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка звонков без dataloader
СообщениеДобавлено: 28 июл 2012, 05:09 
Не в сети
Клиент

Зарегистрирован: 13 апр 2012, 21:24
Сообщения: 345
Карма: 0
А если у меня АТС (Asterisk) сама умеет писать CDR в mysql базу, что будет если я ее научу сразу по мере появления звнка, класть его сразу в эту таблицу ? Будет корректно работать ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка звонков без dataloader
СообщениеДобавлено: 10 сен 2012, 06:53 
Не в сети
Клиент

Зарегистрирован: 13 апр 2012, 21:24
Сообщения: 345
Карма: 0
Не получается красиво это запилить. Имя таблицы содержит дату, хотел повесить триггер на талицу, в которую пишет АТС, чтоб автоматом переносилось в биллинг, а хрен бы там. В триггерах не работает dynamic SQL. Т.е. нельзя использовать вычисляемое имя таблицы. Придется делать костыль в cron :(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка звонков без dataloader
СообщениеДобавлено: 15 сен 2012, 05:40 
Не в сети
Клиент

Зарегистрирован: 13 апр 2012, 21:24
Сообщения: 345
Карма: 0
Сделал. Логи теперь автоматически попадают в таблицы data_log_X_XXXXXXXX
Если вручную запускать обработку логов - все работает. теперь вопрос, как включить автоматическую (по расписанию) обработку биллингом загруженных логов.
Заранее спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка звонков без dataloader
СообщениеДобавлено: 16 сен 2012, 17:50 
Не в сети
Клиент

Зарегистрирован: 27 окт 2009, 16:17
Сообщения: 319
Откуда: Иркутск
Карма: 18
Как вариант посмотреть код, как в БГ запускается обработка логов. Сделать свой глобальный скрипит и запускать его через планировщик.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка звонков без dataloader
СообщениеДобавлено: 17 сен 2012, 00:49 
Не в сети
Клиент

Зарегистрирован: 13 апр 2012, 21:24
Сообщения: 345
Карма: 0
Я не силен в java, мне бы хотелось получить более точные инструкции.
Кстати, как я понимаю, можно сделать все через базу.
Подскажите в какой таблице хранится информация о периодах, которые загружены, в загрузке, в обработке, обработаны... ИЛи может есть другой путь ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка звонков без dataloader
СообщениеДобавлено: 17 сен 2012, 03:48 
Не в сети
Клиент

Зарегистрирован: 13 апр 2012, 21:24
Сообщения: 345
Карма: 0
Короче сделал. Нашел таблицу, просто после формирования таблицы с первоначальными логами - вставляю задание в нее и оно тут же все обрабатывает. Короче полностью автоматизировал. Костыль только один пришлось делать, а так все красиво.
Суть костыля в том, что логи зачем-то разработчики решили хранить в разных таблицах за каждый день. Поэтому имя таблицы заранее неизвестно, его приходится вычислять. Т.е. пользоваться динамическим SQL. А он в триггерах не работает. Поэтому сделано так:
АТС пишет логи в свою базу в своем формате, потом в мускуле создан event который раз в 30 минут дергает процедуру, которая берет данные из лога АТС, преобразовывает, создает в базе билинга необходимые таблицы, заполяняет их и, потом вставляет запись в bgbilling.task_proccess, тем самым инициируя обработку данных биллингом.
А вот если бы не было этого извращения с таблицами - можно было вообще триггер повесить на insert в базу АТС и тогда никакого крона не надо. Данные бы появлялись мгновенно. :)
Еще, для красоты, можно бы писать еще и в таблицу source_data_ХХ, тогда можно будет в биллинге контролировать загруженности цветными квадратиками. Но особого смысла не вижу, и так все работает, без квадратиков. Да и не очень понятно что там за размер указан (размер чего ?) и что за второе поле - тоже непонятно. Ладно, не суть. основное сделано.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка звонков без dataloader
СообщениеДобавлено: 18 сен 2012, 02:45 
Не в сети
Клиент

Зарегистрирован: 13 апр 2012, 21:24
Сообщения: 345
Карма: 0
я бы хотел, для полноты картины услышать от разработчиков ответы на сл. Вопросы:
1. Могу ли я сделать chkconfig bgdataloader off раз я напрямую голи в БД засовываю. Или он к обработке тоже имеет отношение ?
2. Что писать в поля размер файла и дата файла в таблице source_data_ХХ если я вообще файлы не использую.

PS. Если кто работает с Вымпелкомом - велкам к сотрудничеству для обмена опытом по интеграции.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 01 окт 2012, 18:46 
Не в сети
Клиент

Зарегистрирован: 13 апр 2012, 21:24
Сообщения: 345
Карма: 0
Если в таблицу task_proccess писать таски на обработку статистики месяца, для которого не существует таблицы log_session то эта таблица НЕ СОЗДАЕТСЯ. Обсчет, при этом, происходит корректно, но таблица не создается. Я, конечно, могу сам ее создавать, но это ИМХО уже очень глубокое внедрение во внутреннюю структуру и логику. Да и правильнее реализовать это вам.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 01 окт 2012, 19:01 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
grifin писал(а):
Если в таблицу task_proccess писать таски на обработку статистики месяца, для которого не существует таблицы log_session то эта таблица НЕ СОЗДАЕТСЯ. Обсчет, при этом, происходит корректно, но таблица не создается. Я, конечно, могу сам ее создавать, но это ИМХО уже очень глубокое внедрение во внутреннюю структуру и логику. Да и правильнее реализовать это вам.

Не сказал бы.
Для чего создавать таблицу если в нее ничего не грузится? Т.е. например я когда то устанавливал модуль телефонии. попробовал пару загрузок. и забил на него на неопределенный срок.
для чего биллингу постоянно создавать пустые таблицы? вот он их и создает если видит что идет загрузка но таблицы нет.
Вы же вызываете загрузку не стандартными средствами. Вот условие и не срабатывает.
Всего то лишь маленькое условие если таблицы нет - создать ее. Не вижу тут глубокого внедрения во внутреннюю структуру и логику.
Хотя. Если вдруг поменяется структура таблиц - будет ж**а )) Но в этом случае тоже можно создавать таблицу тупо копированием структуры из таблицы за предыдущий месяц.

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка звонков без dataloader
СообщениеДобавлено: 08 окт 2012, 10:30 
Не в сети
Клиент

Зарегистрирован: 13 апр 2012, 21:24
Сообщения: 345
Карма: 0
Реализовал создание таблицы. Заодно сделал добавление туда записей при загрузке логов. В поле "размер файла" подставляю левое значение больше 1000, а там где дата-время создания файла - тоже левое значение. Пока полет нормальный.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка звонков без dataloader
СообщениеДобавлено: 16 ноя 2012, 10:46 
Не в сети
Клиент

Зарегистрирован: 13 апр 2012, 21:24
Сообщения: 345
Карма: 0
У меня вопрос такой: В модуле TV останется возможность грузить CDRы напрямую в базу ? Очень хотелось бы для облегчения перехода на использование RADIUS чо бы поддерживался и старый механизм одновременно с RADIUSом


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.134s | 56 Queries | GZIP : On ]