Warlib
06.04.2006, 17:49
В логе CDR станции Meridian 011C обнаружил несколько записей следующего вида:
RECType TERID ORIGID CLID
E Trunk A26 Trunk A01 ... 8312XXXXXX

вопрос че сие значит. Т.е. звонок пришел с номера 8312XXXXXX на транк 26 станции и сразу прошел трансфер на транк 01. Как определить на какой номер ушел зонок и как вообще такое может быть?

slon2
06.04.2006, 18:10
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.

Warlib
07.04.2006, 09:39
А как определить какая S запись перешла в X и E? Они ведь не последовательно идут.

PhoneMan
07.04.2006, 09:59
По TERID и/или ORIGID.

neoplan
07.04.2006, 10:16
2 Warlib
553-3001-350 Call Detail Recording

p.s. Документация не очень объемная.

Warlib
07.04.2006, 15:35
Посмотрел доку, но ответа не нашел. Привожу полный лог с построчными комментами. Поправьте, ели что не так. В 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 сек.

slon2
07.04.2006, 16:11
Собственно к делу относится следующее:
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 .
По моему так.

Warlib
07.04.2006, 16:30
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 вроде как не является продолжением послеовательности? Или я не понял что?

slon2
07.04.2006, 17:58
Я конечно могу и ошибиться, но на мой взгляд общий оригинатор явно указывает на один, продолжающийся звонок.
Поле 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 должны быть индексы для более быстрого поиска.

pvalera
10.04.2006, 18:31
То jellfish: Растешь прямо на глазах :-) Это приятно.

Мысль идет в правильном направлении.
Задаю два каверзных вопроса:
1. Откуда в 30 записи появился транк А007001 а поле OrigID?
2. Какое именно событие описано записью 30?

jellfish
10.04.2006, 19:38
2 pvalera

Да не не росту это код пол года назад написан. А почему там вместо Т стоит А фих его знает. Может автор не ту строку привел а может это хитрый трансфер такой :-) Я сам это уже потом после того как написал заметил :-)