_________________
«Choose a job you love, and you will never have to work a day in your life» — Confucius
_________________
OpenSUSE 11.2 / Asterisk-trunk / Celeron 1100 (512mb) / chan_lcr / Linksys / Aastra 9112i
http://igorg.ru
Вообщем правельно было сказано предыдущем оратором. По CDR могу определить входящие и исходящие, попадания в конкретные меню IVR, вообщем практически всё, но не могу отловить перевод звонков, подскажите как это сделать буду очень Вам благодарен
Если запись о переводе звонка ложится отдельным CDR то проверяем uniqueid или sessionid, они могут быть для всей истории одного вызова одинаковыми. Не обязательно - Но uniqueid или sessionid может при определенных обстоятельствах повториться, тогда в проверку нужно добавить транк, инициатора (такой ключ уменьшит вероятность повтора до минимума).
Если указанные идентификаторы все время разные в течении всей истории звонка, то можно ориентироваться по времени: время начала следующей части вызова будет совпадать со временем предыдущей, при этом нужно проверять чтобы один из src или destination предыдущей был в src или destination следующей части вызова.
Бывает когда в течении всего вызова DNID одинаковый - тот который был набран первым инициатором.
Еще отдельный вопрос по какому CDR A2B или Asterisk нужно определять?
А2В больно наворочен и мне он не нужен - хотелось бы по стандартным средствам
можно конечно написать какой нить скриптец в диалплане чтоб он как то это фиксировал
В этом случае идея со скриптиком вызываемым в диалплане не плохой вариант.
В A2B вообще все плачевно. agi скрипт из трех частей форварда отобразил только 2 (время второй части включил во время третей), притом вторую часть форварда положил на инициатора форварда.
В моем случае перевод был на DID номер, так оно еще и нигде не показало DID звонок.
Так что, коллега, мне кажется идея со скриптом очень не плоха. Выкладывайте на форум если сделаете, мне кажется для многих этот вопрос актуален.
Вы в диалплане указываете новый контекст куда будет попадать переведенный звонок.
Например такая схема:
| Код: |
| [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 это контекст для исходящего вызова