вопрос о макросе за...
 

[Решено] вопрос о макросе записи разговоров

14 Записи
6 Пользователи
0 Reactions
9,139 Просмотры
(@alexkg1)
Active Member
Присоединился: 6 лет назад
Записи: 7
Создатель темы  

здравствуйте, спасибо за статью, настраиваю по вашему примеру. Не могу разобраться с макросом записи разговора. Буду признателен за подсказку. При звонке на внутренний номер, выходит ошибка, и звонок на вн. номер не работает

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})

видимо нужно чтото добавить в настройке, так как астериск не понимает макрос, не пойму где
в интернете не смог найти решение проблемы

 


   
ОтветитьЦитата
(@zerox)
Prominent Member Admin
Присоединился: 11 лет назад
Записи: 926
 

Регистр букв имеет значение. У вас написано [macro-recording] , а при обращении к макросу используете Macro.


   
ОтветитьЦитата
(@alexkg1)
Active Member
Присоединился: 6 лет назад
Записи: 7
Создатель темы  

спасибо я уже пробывал и так и так

может дело в модуле 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 

 

Это сообщение было изменено 6 лет назад 2 раз от alexkg1

   
ОтветитьЦитата
(@alexkg1)
Active Member
Присоединился: 6 лет назад
Записи: 7
Создатель темы  

перекомпилировал с модулем 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 вроде заработало спасибо

Это сообщение было изменено 6 лет назад от alexkg1

   
ОтветитьЦитата
(@vandalizm123)
Trusted Member
Присоединился: 7 лет назад
Записи: 47
 

Всем доброго дня. подскажите у меня есть макрос для записи телефонных разговоров

[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 и записи скидывались туда. Вообще делал ли что нить подобное?

 


   
ОтветитьЦитата
(@zerox)
Prominent Member Admin
Присоединился: 11 лет назад
Записи: 926
 

Вот пример того, что вам нужно. Это настраивал не я, но взял пример с готового сервера.

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

Разберитесь в примере и сделайте по аналогии.


   
ОтветитьЦитата
(@vandalizm123)
Trusted Member
Присоединился: 7 лет назад
Записи: 47
 

Спасибо


   
ОтветитьЦитата
(@francyz)
New Member
Присоединился: 5 лет назад
Записи: 2
 

Народ, ну подтолкните еще в правильном направлении.

Изменил первую строчку в экстеншене записи и сделал вот так:

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/, а в другой указанной папке ?

Это сообщение было изменено 5 лет назад 2 раз от Francyz

   
ОтветитьЦитата
(@francyz)
New Member
Присоединился: 5 лет назад
Записи: 2
 
От: @francyz

Народ, ну подтолкните еще в правильном направлении.

Изменил первую строчку в экстеншене записи и сделал вот так:

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


   
ОтветитьЦитата
(@artem)
New Member
Присоединился: 5 лет назад
Записи: 3
 

Добрый день!

Пожалуйста помогите! Проблема с записью разговоров.

Входящие звонки все записываются, а вот исходящие звонки не записываются. В чем моя ошибка, не могу понять.

Вот мой 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)


   
ОтветитьЦитата
(@zerox)
Prominent Member Admin
Присоединился: 11 лет назад
Записи: 926
 

На вид все правильно. Не вижу ошибки.


   
ОтветитьЦитата
(@artem)
New Member
Присоединился: 5 лет назад
Записи: 3
 

Добрый день!

Прошу вашей помощи.

Я отправлю вам 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

 

Это сообщение было изменено 5 лет назад от Artem

   
ОтветитьЦитата
 ajum
(@ajum)
New Member
Присоединился: 5 лет назад
Записи: 1
 

Приветствую всех!

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

 


   
ОтветитьЦитата
(@zerox)
Prominent Member Admin
Присоединился: 11 лет назад
Записи: 926
 

@ajum сделать то можно все, но я даже теоретически не представляю, как это реализовать. Связь между пингом и записью очень далекая.


   
ОтветитьЦитата
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar