AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

биллинг для офиса

Биллинг 8 сообщений -
#1

Нужно чтоб просто давал статистику сколько пришло, сколько ответили, если переводили то куда, среднее время разговора. В принципе достаточно CDR, но я не могу понять как ловить звонки которые переводили - помогите плиз кто чем может
#2

сформулируйте вопрос или топик удалю
_________________
«Choose a job you love, and you will never have to work a day in your life» — Confucius
#3

С помощью телепатии формулирую: требуется по CDR определить факт перевода звонка и стороны разговора.
_________________
OpenSUSE 11.2 / Asterisk-trunk / Celeron 1100 (512mb) / chan_lcr / Linksys / Aastra 9112i
http://igorg.ru
#4

Простите.
Вообщем правельно было сказано предыдущем оратором. По CDR могу определить входящие и исходящие, попадания в конкретные меню IVR, вообщем практически всё, но не могу отловить перевод звонков, подскажите как это сделать буду очень Вам благодарен
#5

Физически не могу проверить здесь, но примерно так я делал в других системах:
Если запись о переводе звонка ложится отдельным CDR то проверяем uniqueid или sessionid, они могут быть для всей истории одного вызова одинаковыми. Не обязательно - Но uniqueid или sessionid может при определенных обстоятельствах повториться, тогда в проверку нужно добавить транк, инициатора (такой ключ уменьшит вероятность повтора до минимума).
Если указанные идентификаторы все время разные в течении всей истории звонка, то можно ориентироваться по времени: время начала следующей части вызова будет совпадать со временем предыдущей, при этом нужно проверять чтобы один из src или destination предыдущей был в src или destination следующей части вызова.
Бывает когда в течении всего вызова DNID одинаковый - тот который был набран первым инициатором.

Еще отдельный вопрос по какому CDR A2B или Asterisk нужно определять?
#6

по Asterisk

А2В больно наворочен и мне он не нужен - хотелось бы по стандартным средствам

можно конечно написать какой нить скриптец в диалплане чтоб он как то это фиксировал
#7

Asterisk не складывает в CDR ничего, что бы помогло определить fwd.
В этом случае идея со скриптиком вызываемым в диалплане не плохой вариант.
В A2B вообще все плачевно. agi скрипт из трех частей форварда отобразил только 2 (время второй части включил во время третей), притом вторую часть форварда положил на инициатора форварда.
В моем случае перевод был на DID номер, так оно еще и нигде не показало DID звонок.

Так что, коллега, мне кажется идея со скриптом очень не плоха. Выкладывайте на форум если сделаете, мне кажется для многих этот вопрос актуален.
#8

Я думаю, вам поможет переменная TRANSFER_CONTEXT.
Вы в диалплане указываете новый контекст куда будет попадать переведенный звонок.

Например такая схема:

Код:
[external]
exten => _X.,1,n,Set(TRANSFER_CONTEXT=transferContext);
exten => _X.,n,Dial(SIP/${EXTEN}@outboundProvider,45,t);
exten => _X.,n,HangUp();

[transferContext]
exten => _X.,1,AGI(transfer.php,${CALLERID(number)},${EXTEN}):
exten => _X.,n,Goto(external,${EXTEN},1);


external это контекст для исходящего вызова