Re: TRANSFER_CONTEXT и DAHDI (Возврат звонков)
Добавлено: 20 апр 2016, 09:43
Нашел ответ на вопрос, как отловить переведенные через flash звонки. Суть в использовании GROUP() и анализе количества активных каналов в этой группе.
Аттендант трансфер тогда работает так: 101 звонит 102, попадает в контекст from_dahdi.
102 отвечает на вызов - отрабатывает макрос dialfromdahdi.
102 (или 101) давит на flash и вызывает 103, этот вызов в контексте from_dahdi, что приводит к увеличению GROUP_COUNT(102) и вызов переходит в контекст transfer, что и требовалось
Пример диалплана (возможны ошибки, т.к. не копировал из рабочего конфига, а писал прямо здесь)
Аттендант трансфер тогда работает так: 101 звонит 102, попадает в контекст from_dahdi.
102 отвечает на вызов - отрабатывает макрос dialfromdahdi.
102 (или 101) давит на flash и вызывает 103, этот вызов в контексте from_dahdi, что приводит к увеличению GROUP_COUNT(102) и вызов переходит в контекст transfer, что и требовалось
Пример диалплана (возможны ошибки, т.к. не копировал из рабочего конфига, а писал прямо здесь)
Код: Выделить всё
[from_dahdi]
exten => _XXX, 1, Noop(сюда попадают вызовы с dahdi )
same => n, Set(GROUP()=${CALLERID(num)}) ;посчитали активный канал для вызывающего
same => n, GotoIf($[${GROUP_COUNT(${CALLERID(num)})}>1];transfer)
same => n, Dial(DAHDI/g0/${EXTEN},,tTM(dialfromdahdi,${EXTEN}))
same => n(transfer), Goto(transfer,s,1)
[transfer]
...
[macro-dialfromdahdi]
Set(GROUP()=${ARG1}) ;посчитали активный канал для ответившего