features.conf applicationmap

Для начинающих.
Всем начинающим - сюда.

Модераторы: Admins, Модераторы

Ответить
CheGev
Сообщения: 10
Зарегистрирован: 08 фев 2011, 11:29

features.conf applicationmap

Сообщение CheGev » 27 мар 2018, 10:19

Есть задача: По требованию записывать call и отправлять на почту инициирующему запись.

Сейчас реализована следующая рабочая схема:
features.conf

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

[applicationmap]
appmonitorstart => *9,both,Macro,recording
appmonitorstop => *8,both,Macro,recording
extensions.conf

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

[globals]
Set(__DYNAMIC_FEATURES=appmonitorstart#appmonitorstop)

[macro-recording]
;exten => s,1,GoToIf($["${RECORDING}" = "1"]?mp3:2)
;exten => s,n(2),GoToIf($["${RECORDING}" = "2"]?wav:no)

exten => s,1,GotoIf($["${XAD}" = "0" | "${XAD}" = ""]?startrec:stoprec)
exten => s,n(startrec),Playback(beep)
exten => s,n,Set(XAD=1)
exten => s,n,Set(fname=${UNIQUEID}-${STRFTIME(${EPOCH},,%Y-%m-%d-%H_%M)}-${ARG1}-${CALLERID(number)});
exten => s,n,Set(monopt=nice -n 19 /usr/bin/lame -b 32  --silent "${DIR_RECORDS}${fname}.wav"  "${DIR_RECORDS}${fname}.mp3" && mpack -s "record-${fname}" -a /var/calls/${fname}.mp3 емайл@комуНада.ру && rm -f "${DIR_RECORDS}${fname}.wav$
exten => s,n,Set(CDR(filename)=${fname}.mp3);
exten => s,n,Set(CDR(realdst)=${ARG2});
exten => s,n,Set(CDR(remoteip)=${CHANNEL(recvip)});
exten => s,n,MixMonitor(${DIR_RECORDS}${fname}.wav,b,${monopt});
exten => s,n,MacroExit
exten => s,n(stoprec),StopMixMonitor
exten => s,n,Set(XAD=0)
exten => s,n,NoOp(stopMixmonitor)
exten => s,n,MacroExit
В логах след картина:

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

- Executing [s@macro-recording:1] GotoIf("SIP/508-0005156a", "1?startrec:stoprec") in new stack
    -- Goto (macro-recording,s,2)
    -- Executing [s@macro-recording:2] Playback("SIP/508-0005156a", "beep") in new stack
    -- <SIP/508-0005156a> Playing 'beep.alaw' &#40;language 'ru'&#41;
      -- Executing &#91;s@macro-recording&#58;3&#93; Set&#40;"SIP/508-0005156a", "XAD=1"&#41; in new stack
    -- Executing &#91;s@macro-recording&#58;4&#93; Set&#40;"SIP/508-0005156a", "fname=1522141826.552685-2018-03-27-12_10-SIP/507-508"&#41; in new stack
    -- Executing &#91;s@macro-recording&#58;5&#93; Set&#40;"SIP/508-0005156a", "monopt=nice -n 19 /usr/bin/lame -b 32  --silent "/var/calls/1522141826.552685-2018-03-27-12_10-SIP/507-508.wav"  "/var/calls/1522141826.552685-2018-03-27-12_10-SIP/507-508.mp3" && mpack -s "record-1522141826.552685-2018-03-27-12_10-SIP/507-508" -a /var/calls/1522141826.552685-2018-03-27-12_10-SIP/507-508.mp3 static@email.ru && rm -f "/var/calls/1522141826.552685-2018-03-27-12_10-SIP/507-508.wav" && chmod o+r "/var/calls/1522141826.552685-2018-03-27-12_10-SIP/507-508.mp3""&#41; in new stack
    -- Executing &#91;s@macro-recording&#58;6&#93; Set&#40;"SIP/508-0005156a", "CDR&#40;filename&#41;=1522141826.552685-2018-03-27-12_10-SIP/507-508.mp3"&#41; in new stack
    -- Executing &#91;s@macro-recording&#58;7&#93; Set&#40;"SIP/508-0005156a", "CDR&#40;realdst&#41;="&#41; in new stack
    -- Executing &#91;s@macro-recording&#58;8&#93; Set&#40;"SIP/508-0005156a", "CDR&#40;remoteip&#41;=192.168.1.170"&#41; in new stack
    -- Executing &#91;s@macro-recording&#58;9&#93; MixMonitor&#40;"SIP/508-0005156a", "/var/calls/1522141826.552685-2018-03-27-12_10-SIP/507-508.wav,b,nice -n 19 /usr/bin/lame -b 32  --silent "/var/calls/1522141826.552685-2018-03-27-12_10-SIP/507-508.wav"  "/var/calls/1522141826.552685-2018-03-27-12_10-SIP/507-508.mp3" && mpack -s "record-1522141826.552685-2018-03-27-12_10-SIP/507-508" -a /var/calls/1522141826.552685-2018-03-27-12_10-SIP/507-508.mp3 static@email.ru && rm -f "/var/calls/1522141826.552685-2018-03-27-12_10-SIP/507-508.wav" && chmod o+r "/var/calls/1522141826.552685-2018-03-27-12_10-SIP/507-508.mp3""&#41; in new stack
  == Begin MixMonitor Recording SIP/508-0005156a
    -- Executing &#91;s@macro-recording&#58;10&#93; MacroExit&#40;"SIP/508-0005156a", ""&#41; in new stack
Но вот собственно и вопрос, как выявить инициирующего, кто нажал на *9, для последующей выявления его емайла(даже уже есть мысль реализовать через сопоставление в определенном файле). Инициирующй может быть как callee, так и caller.

awsswa
Сообщения: 1724
Зарегистрирован: 28 апр 2012, 10:19
Откуда: Russia, Пермь

Сообщение awsswa » 27 мар 2018, 11:14

по CallerID - а точнее по длине
платный суппорт по мере возможностей

CheGev
Сообщения: 10
Зарегистрирован: 08 фев 2011, 11:29

Сообщение CheGev » 27 мар 2018, 11:58

CallerID не подойдет, т.к. действие может инициировать и вызываемый абонент ${EXTEN}

awsswa
Сообщения: 1724
Зарегистрирован: 28 апр 2012, 10:19
Откуда: Russia, Пермь

Сообщение awsswa » 27 мар 2018, 12:54

И в чем проблема - у ваших операторов что длина номера равно сотовому номеру ?
платный суппорт по мере возможностей

CheGev
Сообщения: 10
Зарегистрирован: 08 фев 2011, 11:29

Сообщение CheGev » 27 мар 2018, 13:27

Т.е. предлагаете искать сопоставление по callerId и exten?
А если макрос вызовется при разговоре двух операторов?

Аватара пользователя
Wapo
Сообщения: 1390
Зарегистрирован: 08 май 2009, 09:47
Откуда: СПб.
Контактная информация:

Сообщение Wapo » 27 мар 2018, 13:38

Вам никто не мешает убрать __DYNAMIC_FEATURES= из глобальной установки и использовать лишь для конкретных каналов-вариантов
P4 3.0 + 1Gb CentOS 5.8 Aster 11.25.1
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.

CheGev
Сообщения: 10
Зарегистрирован: 08 фев 2011, 11:29

Сообщение CheGev » 28 мар 2018, 09:50

Ок, близок уже к истине. Напоролся на грабли:
В выше указанный мой макрос, не передаётся значение ${EXTEN} оно равно s. Каким образом его передать, с учетом того, что макрос вызывается именно с features.conf?

awsswa
Сообщения: 1724
Зарегистрирован: 28 апр 2012, 10:19
Откуда: Russia, Пермь

Сообщение awsswa » 28 мар 2018, 11:15

DumpChan сделайте внутри макроса - и найдите номер
платный суппорт по мере возможностей

CheGev
Сообщения: 10
Зарегистрирован: 08 фев 2011, 11:29

Сообщение CheGev » 28 мар 2018, 12:55

УХ. Срасибо огромное, то, что нужно.
Зацепился за переменную ${DYNAMIC_WHO_ACTIVATED}.

Ответить