Re: CDR..

От: Vladimir A. Butenko <CGatePro_at_mx_ru>
Дата: Wed 09 Nov 2005 - 02:58:19 MSK

On Tue, 8 Nov 2005 15:23:22 +0300 (MSK)
  "Dmitry Valdov" <CGatePro@mx.ru> wrote:
> Hi!
>
> А почему в CDR нет длительности соединения?..
А потому что это SIP, а не PSTN. Вообще-то, в идеальном мире, сервер вообще не должен видеть концов: и media, и диалоги должны идти мимо него.

Если же они не идут мимо (например, вы, будучи человеком не любящим идеально, взяли да и приказали ему Relay Dialogs - это он Record-Route будет всегда вставлять), или серверу самому пришлось это сделать из-за неидельности мира (всякие NAT и MS signers), то все равно это еще не означает, что сервер должен что-то знать о всех установленных через него диалогах и звонках.

Поэтому, в общем случае:
а) о конце разговора сервер вообще может не узнать б) даже если он узнает о всех концах (релеит через себя все диалоги), то для него все запросы - в общем случае - независимы.

Поэтому это уже задача обработчика CDR хранить "state" - то есть сканировать лог на предмет 200-INVITE и запоминать его DialogID (который там для этого и записан). И при чтении BYE - считать время от 200-INVITE с тем же DialogID.

Кстати, тут же встаёт вопрос обработки тех звонков, для который BYE вообще нету. Ну, упал телефон у меня, а у него - firewall упал, и ни с одной стороны не пришли BYE, а Вы им - счёт за разговор длиною в месяц выставляете.

Последнее, кстати, решается при помощи Session-Expire который пока не поддерживается в CgatePro - но он и не во всех телефонах поддерживается - а в них важнее. Самое главное - чтобы он в Ваших платных gateways поддерживался. Если он есть, то ставится он на разумное время - 2 минуты например. И требуется, чтобы клиенты обменялись INVITE за это время. Если нет - то приравнивается к побегу, и call считается законченным. А в CDR такие Re-INVITE можно писать, чтобы всё это учесть.

Sincerely,
Vladimir Получено Tue Nov 08 23:56:21 2005

Этот архив был сгенерирован hypermail 2.1.8 : Fri 24 Apr 2015 - 16:14:24 MSK