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

MixMonitor, запись всех входящих

Добавлено: 07 июн 2013, 17:07
Alukardd
Здравствуйте.

Как правильно организовать запись всех входящих вызовов, что бы не писать MixMonitor к вызову каждого абонента отдельно?

Сейчас ситуация следующая (пинать за кривость конфига разрешается ;-) ):

Код: Выделить всё

[siptel_inbound]
exten => primary,1,Dial(LOCAL/ask@company&LOCAL/sai@company,,ti)
exten => тут_наш_номер,1,Dial(LOCAL/primary@siptel_inbound&LOCAL/other@siptel_inbound,,ti)
[company]
exten => _.,1,MixMonitor(${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}_${CALLERID(num)}_${EXTEN:0}.wav)
exten => _.,n,Dial(LOCAL/${EXTEN}@company_local,,Tt)
; Кажется сюда вообще без опции g после Dial дальше выполнение не идёт
exten => _.,n,StopMixMonitor()
[company_local]
exten => ask,1,Dial(SIP/ask,,Tt)
exten => 1001,1,Dial(SIP/ask,,Tt)
Так без лишнего выглядит цепочка входящего звонка.
Суть проблемы что файл с записью входящих вызовов при такой схеме весит 364байта и понятное дело пуст. Как я понимаю, проблема в том, что я открваю MixMonitor, но далее делаю Dial в другой extension в другом контексте, и по этой причине запись тут же останавливается.
Можно ли это решить, что бы не обрамлять Dial каждого конечно пользователя в MixMonitor функции? Это не сложно технически, т.к. пользователи в extension.conf добавляются скриптом автоматически, но не хочется что бы он так ужасно выглядел, если можно этопокрасивее разрулить.

Re: MixMonitor, запись всех входящих

Добавлено: 07 июн 2013, 18:14
zzuz

Код: Выделить всё

[company]
exten => _X.,1,Dial(LOCAL/${EXTEN}@company_local,,TtU(sub-record^${EXTEN}))

[sub-record]
exten => s,1,MixMonitor(${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}_${CALLERID(num)}_${ARG:0}.wav) ; тут вообще непонятен срез на экстеншене.
exten => s,n,Return()
; StopMixMonitor() не нужен, он сам завершиться , когда канал поймает исключение завершения звонка.

Пинаю. Конфиг просто отвратительный.

Re: MixMonitor, запись всех входящих

Добавлено: 08 июн 2013, 08:49
virus_net
zzuz прав :)
_. лучше не использовать, о чем астер скажет в консоли есть включить verbose и релоаднуть диалплан.
не понятно зачем ты стока раз вызываешь Dial. он должен вызываться непосредственно когда ты собрался диалить, а у тя диал в каждом контексте.
zzuz писал(а):

Код: Выделить всё

[company]
exten => _X.,1,Dial(LOCAL/${EXTEN}@company_local,30,TtU(sub-record^${EXTEN}))
Это через саб, а ещё можно через макро:

Код: Выделить всё

exten => _X.,1,Dial(LOCAL/${EXTEN}@company_local,,rtM(record))

Код: Выделить всё

[macro-record]
exten => s,1,Set(MCALLER=${CALLERID(num)})
exten => s,n,Set(MCALLED=${MACRO_EXTEN})
exten => s,n,Set(MDIRECTION=${IF($["${ARG1}" = ""]?IN:${ARG1})})
exten => s,n,NoOp(Call from ${MCALLER} to ${MCALLED} direction ${MDIRECTION})
exten => s,n,Set(FOLDER=/path/to/save/monitor/${MCALLED})
exten => s,n,Set(CALLFILENAME=${STRFTIME(${EPOCH},,%C%y-%m-%d_%H-%M-%S)}_CID${MCALLER}_CAID${MCALLED}_ID${UNIQUEID}_${MDIRECTION})
exten => s,n,MixMonitor(${FOLDER}/${CALLFILENAME}.wav)
exten => s,n,MacroExit()

Re: MixMonitor, запись всех входящих

Добавлено: 08 июн 2013, 14:44
zzuz
Отвыкайте от макросов , они как уже давно deprecated . Тем более в Dial , так как при разных опциях макросы ведут себя неоднозначно.

Re: MixMonitor, запись всех входящих

Добавлено: 08 июн 2013, 15:20
pan-user
дауж в 11 макросы выкинули, GoSub к сожалению не всегда замена...

Re: MixMonitor, запись всех входящих

Добавлено: 08 июн 2013, 15:26
Vlad1983
где это Sub не замена?

Re: MixMonitor, запись всех входящих

Добавлено: 08 июн 2013, 15:38
pan-user
Hangup от туда херово как то делается...

http://asterisk-support.ru/question/403 ... migration/

Re: MixMonitor, запись всех входящих

Добавлено: 08 июн 2013, 16:49
Aven
zzuz писал(а):Отвыкайте от макросов , они как уже давно deprecated . Тем более в Dial , так как при разных опциях макросы ведут себя неоднозначно.
С чего Вы взяли, что deprecated?
pan-user писал(а):дауж в 11 макросы выкинули, GoSub к сожалению не всегда замена...
Что за бред несете? Все на месте и прекрасно работает.

Re: MixMonitor, запись всех входящих

Добавлено: 09 июн 2013, 08:57
virus_net
zzuz писал(а): Тем более в Dial , так как при разных опциях макросы ведут себя неоднозначно.
но пока они ещё есть и для задачи топикстартера будет работать без каких либо приколов. я просто привел пример.
Aven писал(а):С чего Вы взяли, что deprecated?
это действительно так, читай тут.

Re: MixMonitor, запись всех входящих

Добавлено: 10 июн 2013, 10:16
Alukardd
zzuz писал(а):

Код: Выделить всё

[company]
exten => _X.,1,Dial(LOCAL/${EXTEN}@company_local,,TtU(sub-record^${EXTEN}))

[sub-record]
exten => s,1,MixMonitor(${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}_${CALLERID(num)}_${ARG:0}.wav) ; тут вообще непонятен срез на экстеншене.
exten => s,n,Return()
; StopMixMonitor() не нужен, он сам завершиться , когда канал поймает исключение завершения звонка.

Пинаю. Конфиг просто отвратительный.
Так, а что Вы изменили свои GoSub? Реально-то ни чего не поменялось, число Dial'ов такое же и осталось, MixMonitor как активировался на предпоследнем из них так и осталось...

А что касается маски _., так это потому, что у меня в первую очередь пользователи обзываются буквенно, а номера это просто синонимы к ним и в основном все операции идут именно с буквенными именами. Так что _., я использую что бы вызвать абонента можно было как по имени, так и по номеру и ни чего не сломалось в Dialplan'е при этом.