здравствуйте, спасибо за статью, настраиваю по вашему примеру. Не могу разобраться с макросом записи разговора. Буду признателен за подсказку. При звонке на внутренний номер, выходит ошибка, и звонок на вн. номер не работает
WARNING[2182][C-00000009]: pbx.c:2906 pbx_extension_helper: No application 'Macro' for extension
конфиг
Макрос записи разговоров
[macro-recording]
exten => s,1,Set(fname=${UNIQUEID}-${STRFTIME(${EPOCH},,%Y-%m-%d-%H_%M)}-${ARG1}-${ARG2});
exten => s,n,Set(monopt=nice -n 19 /usr/local/bin/lame -b 32 --silent "${DIR_RECORDS}${fname}.wav" "${DIR_RECORDS}${fname}.mp3" && rm -f "${DIR_RECORDS}${fname}.wav" && chmod o+r "${DIR_RECORDS}${fname}.mp3");
exten => s,n,Set(CDR(filename)=${fname}.mp3);
exten => s,n,Set(CDR(realdst)=${ARG2});
exten => s,n,MixMonitor(${DIR_RECORDS}${fname}.wav,b,${monopt});
exten => s,n(no),Verbose(Exit record);
[call-out]
;исходящие звонки
exten => _XXX,1,Macro(recording,${CALLERID(num)},${EXTEN})
exten => _XXX,n,Dial(SIP/${EXTEN})
видимо нужно чтото добавить в настройке, так как астериск не понимает макрос, не пойму где
в интернете не смог найти решение проблемы
Регистр букв имеет значение. У вас написано [macro-recording] , а при обращении к макросу используете Macro.
спасибо я уже пробывал и так и так
может дело в модуле app_macro или он тут не причем?
localhost*CLI> module show like app_macro
Module Description Use Count Status Support Level
0 modules loaded
localhost*CLI>
установил 16 релиз ,не вижу app_macro.so, либо макрос еще нужно добавить в конфигурации
либо при компиляции в menu select указать модуль в Module Embedding
перекомпилировал с модулем app_macro
[Nov 8 02:18:23] WARNING[14037][C-00000001]: app_macro.c:274 _macro_exec: Macro() is deprecated and will be removed from a future version of Asterisk.
[Nov 8 02:18:23] WARNING[14037][C-00000001]: app_macro.c:275 _macro_exec: Dialplan should be updated to use Gosub instead.
файлы создаются но не прослушиваются, наверное надо искать другое решение записи
update вроде заработало спасибо
Всем доброго дня. подскажите у меня есть макрос для записи телефонных разговоров
[macro-recording]
exten => s,1,Set(fname=${STRFTIME(${EPOCH},,%Y-%m-%d-%H_%M)}__${ARG1}__call_${ARG2});
exten => s,n,Set(monopt=nice -n 19 /usr/local/bin/lame -b 32 --silent "${DIR_RECORDS}${fname}.wav" "${DIR_RECORDS}${fname}.mp3" && rm -f "${DIR_RECORDS}${fname}.wav" && chmod o+r "${DIR_RECORDS}${fname}.mp3");
exten => s,n,Set(CDR(filename)=${fname}.mp3);
exten => s,n,Set(CDR(realdst)=${ARG2});
exten => s,n,MixMonitor(${DIR_RECORDS}${fname}.wav,b,${monopt});
exten => s,n(no),Verbose(Exit record);
Вопрос таков сейчас все разговоры складируются в одну папку. Можно ли сделать так что при записи были в разных папка по дате?
например сегодня 20.06.2019 в этот день записи скидываются сюда. А на следующий день создавалась папка уже 21.06.2019 и записи скидывались туда. Вообще делал ли что нить подобное?
Вот пример того, что вам нужно. Это настраивал не я, но взял пример с готового сервера.
exten => 214,1,SET(FILENAME=in_${STRFTIME(${EPOCH},,%H_%M_%S)}_${CALLERID(num)})
exten => 214,n,SET(MONITOR_FILENAME=${STRFTIME(${EPOCH},,%Y)}/${STRFTIME(${EPOCH},,%Y-%m)}/${STRFTIME(${EPOCH},,%Y-%m-%d)}/${FILENAME})
exten => 214,n,Set(monopt=nice -n 19 /usr/bin/lame -b 32 --silent "${RECPATH}/${MONITOR_FILENAME}.wav" "${RECPATH}/${MONITOR_FILENAME}.mp3" && rm -f "${RECPATH}/${MONITOR_FILENAME}.wav" && chmod o+r "${RECPATH}/${MONITOR_FILENAME}.mp3")
exten => 214,n,Set(CDR(filename)=${FILENAME}.mp3);
exten => 214,n,Mixmonitor(${MONITOR_FILENAME}.wav,b,${monopt})
exten => 214,n,GotoIfTime(*,*,*,*?menu1,214,1)
exten => 214,n,Set(home="/home/proton/menu")
exten => 214,n,Answer()
exten => 214,n,WaitExten(3)
exten => 214,n,Playback(${home}/nerab)
exten => 214,n,Hangup()
На выходе получается вот такая структура директорий:
/mnt/calls/2019/2019-06/2019-06-01/in_13_27_31_79041236685.mp3
Разберитесь в примере и сделайте по аналогии.
Спасибо
Народ, ну подтолкните еще в правильном направлении.
Изменил первую строчку в экстеншене записи и сделал вот так:
exten => s,1,Set(fname=${STRFTIME(${EPOCH},,%Y/%m/%d)}/${UNIQUEID}-${STRFTIME(${EPOCH},,%Y-%m-%d-%H_%M)}-${ARG1}-${ARG2});
Это позволяет теперь писать в заданную по дефолту директорию по папкам /2019/07/17 к примеру. Все проверено. Папка создалась, записи кидаются в нее, НО не идет отображение на веб-форме.
Я зашел в конфиг и выбрал 4-ый пункт в разделе формата хранения:
## Если 4, то файлы записей должны распределяться по папкам Asterisk-ом в соответствии с датой «/home/calls/2015/12/01».
‘storage_format’ => 4,
НО как я понял это работает только если записи кидаются в дефолтную папку «/home/calls/», но у меня она другая, поэтому прослушать записи на форме не возможно.
Как можно подкорректировать конфиг форму, чтобы он смотрел не в /home/calls/, а в другой указанной папке ?
Народ, ну подтолкните еще в правильном направлении.
Изменил первую строчку в экстеншене записи и сделал вот так:
exten => s,1,Set(fname=${STRFTIME(${EPOCH},,%Y/%m/%d)}/${UNIQUEID}-${STRFTIME(${EPOCH},,%Y-%m-%d-%H_%M)}-${ARG1}-${ARG2});
Это позволяет теперь писать в заданную по дефолту директорию по папкам /2019/07/17 к примеру. Все проверено. Папка создалась, записи кидаются в нее, НО не идет отображение на веб-форме.
Я зашел в конфиг и выбрал 4-ый пункт в разделе формата хранения:
## Если 4, то файлы записей должны распределяться по папкам Asterisk-ом в соответствии с датой «/home/calls/2015/12/01».
‘storage_format’ => 4,НО как я понял это работает только если записи кидаются в дефолтную папку «/home/calls/», но у меня она другая, поэтому прослушать записи на форме не возможно.
Как можно подкорректировать конфиг форму, чтобы он смотрел не в /home/calls/, а в другой указанной папке ?
Вопрос, закрыт. Невнимательно читал описание.
Если кому нужна рабочая версия с записями разговоров по папкам, то меняете 1-ую строчку на указанную мною выше, а в настройках вебформы в разделе ‘storage_format’ выбираете 5
Добрый день!
Пожалуйста помогите! Проблема с записью разговоров.
Входящие звонки все записываются, а вот исходящие звонки не записываются. В чем моя ошибка, не могу понять.
Вот мой extensions.conf
[general]
static=yes
writeprotect=no
[globals]
DIR_RECORDS=/mnt/calls/
[default]
[handup-sip]
exten => _X!,1,HangUp()
[recording]
exten => s,1,Set(fname=in_${STRFTIME(${EPOCH},,%H_%M_%S)}-${ARG1}-${ARG2})
exten => s,n,Set(fname=${STRFTIME(${EPOCH},,%Y)}/${STRFTIME(${EPOCH},,%Y-%m)}/${STRFTIME(${EPOCH},,%Y-%m-%d)}/${fname})
exten => s,n,Set(monopt=nice -n 19 /usr/local/bin/lame -b 32 --silent "${DIR_RECORDS}${fname}.wav" "${DIR_RECORDS}${fname}.mp3" && rm -f "${DIR_RECORDS}${fname}.wav" && chmod o+r "${DIR_RECORDS}${fname}.mp3")
exten => s,n,Set(CDR(filename)=${fname}.mp3)
exten => s,n,Set(CDR(realdst)=${ARG2})
exten => s,n,MixMonitor(${DIR_RECORDS}${fname}.wav,b,${monopt})
exten => s,n(no),Verbose(Exit record)
exten => s,n,Return()
[call-out]
exten => _XXX,1,GoSub(recording,s,1,(${CALLERID(num)},${EXTEN}))
exten => _XXX,n,Dial(SIP/${EXTEN})
exten => _XXX.,1,GoSub(recording,s,1,(${CALLERID(num)},${EXTEN}))
exten => _XXX.,n,Dial(SIP/${EXTEN}@287012)
include => handup-sip
[call-in]
exten => 287012,1,Goto(ivr-main,s,1)
[ivr-main]
exten => s,1,Answer()
exten => s,2,Background(/etc/asterisk/ivr/ivr-main)
exten => s,3,WaitExten(3)
exten => t,1,GoSub(recording,s,1,(${CALLERID(num)},${EXTEN}))
exten => t,n,Dial(SIP/112)
На вид все правильно. Не вижу ошибки.
Добрый день!
Прошу вашей помощи.
Я отправлю вам sip.conf
Пожалуйста посмотрите где ошибка.
Получаться что запись ведется только в одну сторону. На входящие звонки на asterisk.
Когда совершается звонок из asterisk на внешний номер т.е. исходящие звонки, в папке записи разговоров создается mp3 файл, но он пустой и весит 864 Кбит.
ЗА ранее благодарю.
sip.conf
[general]
externaddr=??.???.???.???:????
language=ru
context=default
allowoverlap=no
udpbindaddr=0.0.0.0
tcpenable=no
tcpbindaddr=0.0.0.0
transport=udp
srvlookup=yes
allowguest=no
limitonpeers=yes
[authentication]
[directors-phones](!)
type=friend
context=call-out
secret=123
host=dynamic
nat=no
qualify=yes
canreinvite=no
callgroup=1
pickupgroup=1
call-limit=1
dtmfmode=auto
disallow=all
allow=alaw
allow=ulaw
allow=g729
allow=g723
allow=g722
[100](directors-phones)
callerid="Number 100" <100>
[101](directors-phones)
callerid="Number 101" <101>
[102](directors-phones)
callerid="Number 102" <102>
[103](directors-phones)
callerid="Number 103" <103>
[dispetcher-phones](!)
type=friend
context=call-out
secret=101112
host=dynamic
nat=no
qualify=yes
canreinvite=no
callgroup=4
pickupgroup=4
call-limit=1
dtmfmode=auto
disallow=all
allow=alaw
allow=ulaw
allow=g729
allow=g723
allow=g722
[112](dispetcher-phones)
callerid="Number 112" <112>
[113](dispetcher-phones)
callerid="Number 113" <113>
[114](dispetcher-phones)
callerid="Number 114" <114>
[115](dispetcher-phones)
callerid="Number 115" <115>
[287012]
host=sip.zadarma.com
insecure=invite,port
type=friend
fromdomain=sip.zadarma.com
disallow=all
allow=alaw
dtmfmode=auto
secret=?????????????
defaultuser=287012
trunkname=287012
fromuser=287012
callbackextension=287012
context=call-in
qualify=400
directmedia=no
nat=force_rport,comedia
Приветствую всех!
Можно ли сделать так, чтобы запись осуществлялась только при наличии пинга до какого-нибудь IP?
@ajum сделать то можно все, но я даже теоретически не представляю, как это реализовать. Связь между пингом и записью очень далекая.