добавить в избранное подписаться на рассылку
MTSoftАналитические программы для абонентов сотовых сетейнаши партнёры:
Описание | Инструкция | Загрузить | Что нового | Купить | Обратная связь | Форум 

Как заказать детализацию (в том числе и бесплатно)?          

Анализ детализаций - подготовленные детализации и загрузка детализаций с помощью плагинов

Как показала практика, различных типов детализаций только на территории России существует больше сотни. Поэтому, кроме работы с уже заложенными в программу "Анализ детализаций" форматов была добавлена возможность загружать либо заранее подготовленные детализации, либо, практически, любые детализации с помощью плагинов.

Быстрая навигация Подготовленная детализация | Загрузка детализаций с помощью плагинов | Готовые плагины |

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



- Каждая строка детализации содержит информацию об одном вызове (звонок, SMS, GPRS).
- Данные в строке разделены символом "табуляция"
- Первая строка детализации содержит названия колонок.

Полный формат подготовленной детализации следующий:
Загрузить в виде текстового файла (готов к загрузке в Анализе детализаций)   Загрузить в виде Excel-файла


Что означает каждая колонка:
PhoneNum - Номер телефона сотрудника к которому относится информация о вызове (абон.плате)
Service - Наименование услуги. Как она будет отображаться в детализации
ServicePrep - Наименование услуги подготовленное для анализа.
Может принимать только такие значения:
CALL - Звонок
SMS - SMS или MMS - сообщение
INTERNET - GPRS-соединение (любой Интернет-трафик)
ABON_PLATA - Абонентская плата
OTHER_PLATA - Прочие (дополнительные) платежи
CallDateTime - Дата и время вызова.
Может быть представлена в любом из следующих форматов
(все, которые поддерживает Excel):
 dd-mm-yyyy hh:nn:ss  dd-mm-yyyy h:nn:ss 
 yyyy-mm-dd hh:nn:ss  yyyy-mm-dd h:nn:ss 
 dd-mm-yyyy hh:nn  dd-mm-yyyy h:nn 
 yyyy-mm-dd hh:nn  yyyy-mm-dd h:nn 
 dd-mm-yyyy yyyy-mm-dd
 yyyymmddhhnnss  - это формат, который использует программа
Разделители в дате и времени могут быть любыми.
Abonent - Вызываемый (или вызывающий) абонент. Как будет показано в детализации.
AbonentPrep - Вызываемый (или вызывающий) абонент. Используется при анализе.
Как правило, это последние 10 цифр номера телефона абонента.
Duration - Длительность звонка в секундах или объем трафика в байтах. Для СМС равен 1.
Direction - Направление звонка.
Может принимать только такие значения:
O - Исходящий (от слова Output)
I - Входящий (от слова Input)
ZonePC - Зона предприятия связи.
Т.е. название зоны (город, страна) где находился телефон в роуминге.
В анализе не используется. Будет показываться в детализации.
ZoneVTK - Зона внешней телефонной компании.
Т.е. название зоны (город, страна), при междугородном/международном вызове.
В анализе не используется. Будем показвываться в детализации.
local_MG_roum - Тип звонка: местный, междугородний/международный или роуминговый.
Используется в анализе и может принимать только такие значения:
LOCAL - Местный звонок
MG - Междугородний/международный звонок
ROUM - Звонок в роуминге
OTHER - Это не звонок (SMS, GPRS или что-то еще)
Cost - Стоимость вызова или сумма абонентской платы (прочего платежа)

Самое сложное - позади! :) Теперь о хорошем:
  • Колонки могут идти в любой последовательности, а не только в той, которая представлена выше.
  • Колонок может быть любое количество!
    Чем меньше - тем менее подробный и информативный анализ выдаст программа.
    Т.е., даже если в подготовленной детализации будет только одна колонка "Абонент" (Abonent), то программа сможет показать количество вызовов на каждого абонента и связать номера телефонов со справочниками. А имея на входе только колонки "Дата" и "Стоимость" (CallDateTime и Cost) можно получить отчеты показывающие распределение расходов по дням, дням недели и по времени суток!

    Но, все таки, желательно использовать как минимум эти колонки:
    | PhoneNum | CallDateTime | Abonent | Cost |
    для того, чтобы получить более или менее информативный результат.


Загрузка детализаций с помощью плагинов.
Для того, чтобы было проще разрабатывать новые плагины (в том числе и самостоятельно) было принято решение использовать скриптовые плагины базирующиеся на языке программирования Pascal.

Сразу перейдем к примеру плагина, которые загружает детализацию представленную выше, в разделе "Подготовленная детализация". Саму детализацию в текстовом формате можно загрузить по этой ссылке.
var
  CallRec : TCallRec;
  i  : integer;
  SL : TStringList;
  RE : TRegExp; // Это переменная для работы с регулярными выражениями
begin
  SL := TStringList.Create;
  RE := TRegExp.Create;
  try
    // Загружаем детализацию из файла, имя которого передается плагину в переменной DetailFileName
    SL.LoadFromFile (DetailFileName);
    // Создаем регулярное выражение для поиска и извлечения информации из строки с информацией о вызове
    RE.Expression := '^(.*?)\t(.*?)\t(.*?)\t(.*?)\t(.*?)\t(.*?)\t(.*?)\t(.*?)\t(.*?)\t(.*?)\t(.*?)\t(.*?)$';
    // Начинаем парсинг детализации не с первой, а со второй строки, т.к. мы заранее знаем,
    // что в первой строке содержатся заголовки столбцов
    for i := 1 to SL.Count-1 do
    begin
      // Если пользователь во время загрузи детализации нажал кнопку "Остановить"
      // то предопределенная переменная Processing (тип boolean) примет значение FALSE
      // Это надо отследить и прервать загрузку.
      if not Processing then Break;
      // Если регулярное выражение удалось применить к тексту (очередной строке в детализации) то...
      if RE.Exec (SL[i]) then
      begin
        // Очищаем переменную CallRec
        EmptyCallRec(CallRec);

        // Запонляем переменную CallRec данными. Описание переменных см. выше,
        // в разделе "Подготовленная детализация"
        CallRec.PhoneNum      := RE.Match[01];  // Номер телефона сотрудника
        CallRec.Service       := RE.Match[02];  // Название услуги, как оно будет показано в детализации
        CallRec.ServicePrep   := RE.Match[03];  // Подготовленное название услуги
        CallRec.CallDateTime  := RE.Match[04];  // Дата и время вызова
        CallRec.Abonent       := RE.Match[05];  // Номер абонента
        CallRec.AbonentPrep   := RE.Match[06];  // Номер абонента подготовленный для анализа
        CallRec.Duration      := StrToIntDef(RE.Match[07], 0); // Секунды или байты
        CallRec.Direction     := RE.Match[08];  // Направление вызова (входящий, исходящий)
        CallRec.ZonePC        := RE.Match[09];  // Зона предприятия связи (роуминг)
        CallRec.ZoneVTK       := RE.Match[10];  // Зона внешней телефонной компании (межгород)
        CallRec.local_MG_roum := RE.Match[11];  // Флаг типа звонка: местный, роуминговый или междугородний
        CallRec.Cost          := StrToFloatDef(RE.Match[12], 0); // Стоимость

        // Отправляем переменную CallRec процедуре, которая занимается загрузкой информации в базу данных
        // Одновременно, вторым параметром, передаем процент выполненной работы
        // (как соотношение номера текущей строки к общему количеству строк в файле детализации)
        LoadCallBack (CallRec, Trunc(i/SL.Count*100)+1);
      end;
    end;
   finally
     SL.Free;
     RE.Free;
   end;
   // Показываем совершенно необязательное окошко сообщающее об окончании загрузки.
   ShowMessage('Загрузка детализации успешно завершена!');
end.
Загрузить плагин в виде файла


Принцип работы плагина простой: он заполняет для каждого вызова переменную CallRec, которая имеет следующую структуру:
  TCallRec = packed record
    PhoneNum       : string;
    CallDateTime   : string;
    Abonent        : string;
    AbonentPrep    : string;
    Duration       : cardinal;
    Direction      : string;
    CallType       : string;
    Service        : string;
    ServicePrep    : string;
    SubService     : string;
    ZonePC         : string;
    ZoneVTK        : string;
    local_MG_roum  : string;
    Cost           : currency;
  end;
и передает ее процедуре LoadCallBack имеющую определение:
procedure LoadCallBack (const CallRec: TCallRec; LoadPercent: integer);

Готовые плагины
Мы прекрасно понимаем, что все вышеописанное - не самая простая задача и (особенно создание плагинов) требует навыков программирования, поэтому готовы проконсультировать и создать плагины для Ваших детализаций.

Пишите: da@mtsoft.ru
Звоните: (916)-605-0844 (МТС-Москва)

По мере создания новых плагинов для различных типов детализаций они будут добавляться в этот раздел.

Плагины готовые для использования
Название оператораВерсия
Сибирьтелеком2009-02-11 15-41-43






































Главная | MobileBalance | MTSDetail | Обратная связь | Обновления по почте | Форум | Статистика 
Разработано webwork.ru
хостинг от .masterhost Rambler's Top100 Rambler's Top100