AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Не корректная работа макроса?

Asterisk IP PBX 8 сообщений -
#1

Добрый день. Был астериск 1.4, а стал 1.8. Ранее работал такой макрос при звонке на прямой номер:

exten => s,1,Set(TRANSFER_CONTEXT=transfer)
exten => s,n,Set(CALLERID(name)=${UNIQUEID})
exten => s,n,Set(MONITOR_FILENAME=abon_${STRFTIME(${EPOCH},,%Y_%m_%d_%H-%M-%S)}-${CDR(src)}-${ARG1})
exten => s,n,MixMonitor(/var/spool/asterisk/monitor/${MONITOR_FILENAME}.wav)
exten => s,n,Set(CDR(userfield)=${MONITOR_FILENAME})
exten => s,n,Hangup()

И в названии файла записи разговора появлялось что-то такое - abon_2013_09_03_11-29-25-9053001703-500. Статистика велась в postgresql.
Сейчас же у меня статистика ведется в mysql. А в имени файла исчез номер звонившего, получается вот так - abon_2013_09_03_11-29-25-здесь появляется uniqueid-500. Если убрать строку с установкой callerid, то получится abon_2013_09_03_11-29-25-500-500

Получается что в src пишется не то что надо. Или что? Не понимаю. Объясните, если есть объяснения
#2

А если ${CDR(src)} использовать ${CALLERID(num)}
#3

после строчки
exten => s,1,Set(TRANSFER_CONTEXT=transfer)
поставьте
exten => s,n,NoOp(== name == ${CALLERID(name)})
exten => s,n,NoOp(== num == ${CALLERID(num)})

и результат звонка сюда, посмотрим что показывает
#4

Executing [s@macro-AO] Set("SIP/500-0000019c", "TRANSFER_CONTEXT=transfer") in new stack
-- Executing [s@macro-AO] NoOp("SIP/500-0000019c", "==name==Sunagatova") in new stack
-- Executing [s@macro-AO] NoOp("SIP/500-0000019c", "==num==500") in new stack
-- Executing [s@macro-AO] Set("SIP/500-0000019c", "CALLERID(name)=1378197606.412") in new stack
-- Executing [s@macro-AO] Set("SIP/500-0000019c", "MONITOR_FILENAME=abon_2013_09_03_12-40-08-500-500") in new stack
-- Executing [s@macro-AO] MixMonitor("SIP/500-0000019c", "/var/spool/asterisk/monitor/abon_2013_09_03_12-40-08-500-500.wav") in new stack

Added after 23 seconds:

Link @ Tue Sep 03, 2013 09:25 писал(а):
А если ${CDR(src)} использовать ${CALLERID(num)}


Уже пробовала, результат тот же
#5

все понятно, затирается переменные при трансфере, сохраняйте их раньше, перед трансфером

вставьте эти строчки перед трансфером звонка
#6

Номер затирается сразу после включения макроса

== CDR updated on SIP/abon-000001ce
-- Executing [500@abonotdel] NoOp("SIP/abon-000001ce", "==num==8463323833") in new stack
-- Executing [500@abonotdel] Set("SIP/abon-000001ce", "NOMER=8463323833") in new stack
-- Executing [500@abonotdel] Dial("SIP/abon-000001ce", "SIP/500,20,tM(AO,500)") in new stack
== Using SIP RTP CoS mark 5
-- Called SIP/500
-- SIP/500-000001d0 is ringing
-- SIP/500-000001d0 answered SIP/abon-000001ce
-- Executing [s@macro-AO] NoOp("SIP/500-000001d0", "==num==500") in new stack
-- Executing [s@macro-AO] Set("SIP/500-000001d0", "TRANSFER_CONTEXT=transfer") in new stack
-- Executing [s@macro-AO] Set("SIP/500-000001d0", "CALLERID(name)=1378200716.464") in new stack
-- Executing [s@macro-AO] Set("SIP/500-000001d0", "MONITOR_FILENAME=abon_2013_09_03_13-31-58-500-500") in new stack
-- Executing [s@macro-AO] MixMonitor("SIP/500-000001d0", "/var/spool/asterisk/monitor/abon_2013_09_03_13-31-58-500-500.wav") in new stack
-- Executing [s@macro-AO] Set("SIP/500-000001d0", "CDR(userfield)=abon_2013_09_03_13-31-58-500-500") in new stack
== Begin MixMonitor Recording SIP/500-000001d0
-- Executing [s@macro-AO] Hangup("SIP/500-000001d0", "") in new stack

Added after 1 minutes:

Как заставить работать переменную. Set("SIP/abon-000001ce", "NOMER=8463323833") уже в контексте макроса?
#7

Попробуйте использовать не NOMER а __NOMER. А еще интересней - дайте в макро команду Dumpchan для анализа переменных которые у вас есть
_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
#8

Wapo @ Tue Sep 03, 2013 10:38 писал(а):
Попробуйте использовать не NOMER а __NOMER. А еще интересней - дайте в макро команду Dumpchan для анализа переменных которые у вас есть



__NOMER - ничего не изменилось.
А вот что выдал DumpChan




Dumping Info For Channel: SIP/500-0000020c:
================================================================================
Info:
Name= SIP/500-0000020c
Type= SIP
UniqueID= 1378202341.524
LinkedID= 1378202335.523
CallerIDNum= 500
CallerIDName= Sunagatova
ConnectedLineIDNum= 8463323810
ConnectedLineIDName=(N/A)
DNIDDigits= (N/A)
RDNIS= (N/A)
Parkinglot= default
Language= ru
State= Up (6)
Rings= 0
NativeFormat= 0x8 (alaw)
WriteFormat= 0x8 (alaw)
ReadFormat= 0x8 (alaw)
RawWriteFormat= 0x8 (alaw)
RawReadFormat= 0x8 (alaw)
WriteTranscode= No
ReadTranscode= No
1stFileDescriptor= 113
Framesin= 4
Framesout= 225
TimetoHangup= 0
ElapsedTime= 0h0m5s
DirectBridge=
IndirectBridge=
Context= macro-AO
Extension= s
Priority= 1
CallGroup=
PickupGroup=
Application= DumpChan
Data= (Empty)
Blocking_in= (Not Blocking)

Variables:
MACRO_DEPTH=1
ARG1=500
MACRO_PRIORITY=1
MACRO_CONTEXT=abonotdel
MACRO_EXTEN=500
DIALEDPEERNUMBER=500
SIPCALLID=2a2b548c2bd9c1423a2a9a5c48bf887c@192.168.1.116:5060

Added after 9 minutes:

Спасибо, Wapo. Все получилось. Устанавливаю переменную Set("SIP/abon-00000211", "_NOMER=8463323833").
И переменная появляется в макросе:
Dumping Info For Channel: SIP/500-00000212:

Variables:
MACRO_DEPTH=1
ARG1=500
MACRO_PRIORITY=1
MACRO_CONTEXT=abonotdel
MACRO_EXTEN=500
DIALEDPEERNUMBER=500
SIPCALLID=2fbae7c24a01f3442440e9e2343af780@192.168.1.116:5060
NOMER=8463323833

И делее использую по назначению