Страница 1 из 1

Самодельный CDR и грамотное определение участников вызовов.

Добавлено: 11 фев 2013, 02:00
sysardex
Приветствую!

Прошу помощи по вопросу грамотного определения участников вызовов при формировании собственного cdr в нескольких примерах.
Asterisk 1.8.19.0

1. Определение пира который перехватил вызов используя функцию из features.conf либо используя Pickup() на примере простенького диалплана

[incoming]
exten => какойто_номер,1,Answer()
exten => какойто_номер,n,Queue(test_queue)

exten => h,1,Noop(${BRIDGEPEER}) ; Решение выдирать информацию из bridgepeer но она не помогает в случае если вызов был трансфернут.

[pickip_exten]
exten => **,1,Pickup() ; На этом действие данного контекста заканчивается, он не будет продолжен и здесь не сработает h exten включая h exten того контекста куда этот контекст инклюдится.

Родной cdr в dst укажет номер того пира с которого перехватили звонок, хотя фактически разговаривал другой участник сети а именно перехвативший вызов.
Каким образом правильно понять кто перехватил вызов для примера просто звонка где позвонили - перехватили - завершили вызов.

2. Смысл тот-же но интересует информация обо всех пирах участвовавших в рамках одного "внешнего" входящего разговора со множеством attended трансферов. Где и на каком этапе можно понять кто и сколько участников было для того чтобы иметь возможность загнать в базу под видом
таблица а) uid, время, callerid (к примеру сотовый), общее время разговора.
таблица б) uid, участник1, его длительность, его аудиозапись разговора
таблица б) uid, участник2, его длительность, его аудиозапись разговора

Re: Самодельный CDR и грамотное определение участников вызов

Добавлено: 11 фев 2013, 10:19
zzuz
На каждый пункт ваших вопросов можно ответить - При каждом событии звонка пишите свой CDR в свою таблицу так , как Вам угодно.

Re: Самодельный CDR и грамотное определение участников вызов

Добавлено: 11 фев 2013, 10:23
noize
используйте CEL

Re: Самодельный CDR и грамотное определение участников вызов

Добавлено: 11 фев 2013, 17:09
sysardex
zzuz писал(а):На каждый пункт ваших вопросов можно ответить - При каждом событии звонка пишите свой CDR в свою таблицу так , как Вам угодно.
Как определять кто выполнил pickup() ?

Re: Самодельный CDR и грамотное определение участников вызов

Добавлено: 11 фев 2013, 17:15
ded
У меня другой вопрос: если входящие поступают в Queue(test_queue), то зачем pick-up?
Или очередь (со всеми её премудростями и точной механикой) или ring group, где будет уместен pick-up.

Re: Самодельный CDR и грамотное определение участников вызов

Добавлено: 11 фев 2013, 17:27
Samael28
http://samael28.blogspot.com/2010/10/blog-post.html
2ded. Иногда имеет смысл пикап из очереди.

Re: Самодельный CDR и грамотное определение участников вызов

Добавлено: 11 фев 2013, 17:31
sysardex
switch писал(а):CEL не панацея, да и слишком много избыточной информации дает. Я делаю CDR вручную, но с трансфером пока вопрос. Ведь есть два инициализатора трансфера - самим сервером и телефоном (SIP командами). Более того, есть разные типы трансфера - с уведомлением создает еще один канал. Как это логически в одну кучу объединять я пока не придумал.
Подумываю об AMI анализаторе, собирать все event'ы создания/завершения/бриджевания каналов по каким то общим критериям понимать связь между ними. Конечная реализация все равно пока не ясна.