В логе CDR станции Meridian 011C обнаружил несколько записей следующего вида:
RECType TERID ORIGID CLID
E Trunk A26 Trunk A01 ... 8312XXXXXX
вопрос че сие значит. Т.е. звонок пришел с номера 8312XXXXXX на транк 26 станции и сразу прошел трансфер на транк 01. Как определить на какой номер ушел зонок и как вообще такое может быть?
E - конечная запись, есть ещё и S - страртовая.
Each E (End) record is associated with a specific S (Start) record and possibly
a number of X (Transfer) records. The E record is generated when the call is
terminated. The E record shows the final disposition of the call. The time
stamps on corresponding S, X and E records can be used to calculate the
duration of a call.
А как определить какая S запись перешла в X и E? Они ведь не последовательно идут.
PhoneMan
07.04.2006, 09:59
По TERID и/или ORIGID.
2 Warlib
553-3001-350 Call Detail Recording
p.s. Документация не очень объемная.
Посмотрел доку, но ответа не нашел. Привожу полный лог с построчными комментами. Поправьте, ели что не так. В duration - продолжительность разговора в сек. null - если пусто.
RECTYPE RECNO ORIGID TERID TIMESTAMP DURATION CLID DIGITS
S 23 A007001 214 20.03.2006 17:02 36 86321902XX null
пришел звонок с 86321902XX на транк A007001 и ушел на 214. Видимо болтали 36 сек.
N 24 273 A007027 20.03.2006 17:02 2 null 834336940XX
273 абонент набрал 834336940XX и через транк A007027 вышел в город. Болтали 2 сек.
N 25 271 A007028 20.03.2006 17:00 196 null 1622XX
271 абонент набрал 1622XX и через транк A007028 вышел в город. Болтали 196 сек.
N 26 273 A007027 20.03.2006 17:03 66 null 834336940XX
273 абонент набрал 834336940XX и через освободившийся транк A007027 вышел в город. Болтали 66 сек.
E 27 A007001 250 20.03.2006 17:04 120 86321902XX null
Пришел входящий звонок с номера 86321902XX через транк A007001 и ушел на 250. Болтали 120 сек. Заметим, что тип записи E, и в RECNO=23 он использовался для приема входящего звонка и далее записей типа S не было (по RECNO все видно).
S 28 230 T007024 20.03.2006 17:05 8 null 890305813XX
Исходящий звонок с номера 230 на номер 890305813XX через T007024. 8 секунд болтали.
N 29 250 A007025 20.03.2006 17:04 10 null 7788XX
Исходящий с номера 250 на 7788XX через A007025. Болтали 10 сек.
E 30 A007001 A007024 20.03.2006 17:05 0 83127788XX null
Последняя запись, судя по типу E завершающая, но как видно по логу открывающей записи S не было. Что-же тогда это за операция такая была длившаяся 0 сек.
Собственно к делу относится следующее:
S 23 A007001 214 20.03.2006 17:02 36 86321902XX null
E 27 A007001 250 20.03.2006 17:04 120 86321902XX null
E 30 A007001 A007024 20.03.2006 17:05 0 83127788XX null
Как видно ORIGID общий.
Входящий звонок с 86321902XX на 214, затем трансфер на 250, и попытка трансфера на 83127788XX .
По моему так.
S 23 A007001 214 20.03.2006 17:02 36 86321902XX null
E 27 A007001 250 20.03.2006 17:04 120 86321902XX null
По этим двум очень даже похоже. Но RECNO=27 - запись типа E вроде как является завершающей в последовательности? Соответственно, RECNO=30 с попыткой трансфера на 83127788XX вроде как не является продолжением послеовательности? Или я не понял что?
Я конечно могу и ошибиться, но на мой взгляд общий оригинатор явно указывает на один, продолжающийся звонок.
Поле RECNO - это номер звонка в системе, который присваивается в последовательном порядке при каждой инициации нового соединения.
Запись Е указывает на завершение данного соединения, но необязательно на завершение родительскго соединения.
jellfish
08.04.2006, 09:11
Тут 2 трансфера вот 1-й
S 23 A007001 214 20.03.2006 17:02 36 86321902XX null
E 27 A007001 250 20.03.2006 17:04 120 86321902XX null
А вот 2-й
S 28 230 T007024 20.03.2006 17:05 8 null 890305813XX
E 30 A007001 A007024 20.03.2006 17:05 0 83127788XX null
Для того чтобы это распарсить у меня сделан такой механизм:
1) По приходу записи S дополнительно ничего не логируется вся обработка идет в E
2) При приходе записи Е. Выборка за последние 24 часа ближайшей по времени записи S с совпадающим ORIGID. Привязка записи с суммой идет к E.
Вот SQL выборки:
Select Top 1 @S_Time = [Time], @S_Outer_Number = Outer_Number, @S_Ph_Number = Ph_Number, @S_In_Stream_Type = In_Stream_Type, @S_In_Stream_Number = In_Stream_Number, @S_In_Stream_Code = In_Stream_Code, @S_Out_Stream_Type = Out_Stream_Type, @S_Out_Stream_Number = Out_Stream_Number, @S_Out_Stream_Code = Out_Stream_Code, @S_Dt = Dt
From Data
Where Dt Between DateAdd(Day, -1, @Dt) and @Dt
And Out_Stream_Type = @In_Stream_Type
And Out_Stream_Number = @In_Stream_Number
And Out_Stream_Code = @In_Stream_Code
And [Type] = 'S'
Order By Dt Desc
Причем таких выборок должно быть 3. По количеству комбинации совпадающих полей
S.ORIGID=E.ORIGID
S.TERID=E.ORIGID
S.TERID=E.TERID
Естественно по полям даты и полям ORIGID, TERID должны быть индексы для более быстрого поиска.
То jellfish: Растешь прямо на глазах :-) Это приятно.
Мысль идет в правильном направлении.
Задаю два каверзных вопроса:
1. Откуда в 30 записи появился транк А007001 а поле OrigID?
2. Какое именно событие описано записью 30?
jellfish
10.04.2006, 19:38
2 pvalera
Да не не росту это код пол года назад написан. А почему там вместо Т стоит А фих его знает. Может автор не ту строку привел а может это хитрый трансфер такой :-) Я сам это уже потом после того как написал заметил :-)