(Solucionado)Variable en Asterisk no pasa

Forums: 

Estimados, alguien e puede echar una mano o iluminarme en un problema que tengo, resulta que para controles internos de auditorias de las llamadas realizadas por medio de los asterisk tenemos custumizado de cierta manera los planes de marcados el mismo que cito a continuacion,


exten => _X.,1,NoOp(RUT: ${RUT} EXTENSION: ${CALLERID(num)} VARIABLES: ${VAR1})
exten => _X.,n,Set(TELEFONO=${IF($[ ${EXTEN} = "999999999"]?${CALLERID(num)}:${EXTEN}})
exten => _X.,n,Set(MES=${STRFTIME(${EPOCH},,%Y%m)})
exten => _X.,n,Set(DIA=${STRFTIME(${EPOCH},,%d)})
exten => _X.,n,System(sh /usr/local/sbin/checkAgentTmkDir.sh ${MES} ${DIA})
exten => _X.,n,Set(CALLFILENAME=/var/spool/asterisk/monitor/tmk/${MES}/${DIA}/M-${TELEFONO}_${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)})
exten => _X.,n,MixMonitor(${CALLFILENAME}.wav)
exten => _X.,n,Dial(ZAP/g0/${EXTEN})
exten => _X.,n,Hangup

Como podra darse cuenta el mismo nos ayuda con un formato de grabacion M-6015010_20080801-100629.wav

Ahora el problema es que en un ultimo server le agregamos una una TE220B (para E1's ) y otra AEX2400 (Para bases celulares ) en el mismo server, por lo cual para no hacer el trabajo manualmente con las outbound routes decidimos usar las facilidades de FreePBX el mismo que si bien es cierto nos ayuda mucho, por otro lado nos limita, ahora al momento de tratar de incorporar el plan de marcado antes usado este no me pasa la variable de TELEFONO siendo el archivo final M-s_20080813-190134.wav cabe mencionar que este plan de marcado lo agrege en extensions.conf en el contexto [macro-record-enable] que es donde se hace el llamado al AGI recordingcheck


[macro-record-enable]
exten => s,1,NoOp(RUT: ${RUT} EXTENSION: ${CALLERID(num)} VARIABLES: ${VAR1})
exten => s,n,Set(TELEFONO=${IF($[ ${EXTEN} = "999999999"]?${CALLERID(num)}:${EXTEN}})
exten => s,n,Set(MES=${STRFTIME(${EPOCH},,%Y%m)})
exten => s,n,Set(DIA=${STRFTIME(${EPOCH},,%d)})
exten => s,n,System(sh /usr/local/sbin/checkAgentTmkDir.sh ${MES} ${DIA})
exten => s,n,Set(CALLFILENAME=/var/spool/asterisk/monitor/tmk/${MES}/${DIA}/M-${TELEFONO}_${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)})
exten => s,n,MixMonitor(${CALLFILENAME}.wav)

alguna idea por que la variale TELEFONO no se define ?

Solucion:

En extensions.conf

[macro-record-enable]
exten => s,1,NoOp(RUT: ${RUT} EXTENSION: ${CALLERID(num)} VARIABLES: ${VAR1})
exten => s,n,Set(TELEFONO=${IF($[ ${EXTEN} = "999999999"]?${CALLERID(num)}:${EXTEN}})
exten => s,n,Set(TELEFONO =${ARG3})
exten => s,n,Set(MES=${STRFTIME(${EPOCH},,%Y%m)})
exten => s,n,Set(DIA=${STRFTIME(${EPOCH},,%d)})
exten => s,n,System(sh /usr/local/sbin/checkAgentTmkDir.sh ${MES} ${DIA})
exten => s,n,Set(CALLFILENAME=/var/spool/asterisk/monitor/tmk/${MES}/${DIA}/M-${ARG3}_${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)})
exten => s,n,MixMonitor(${CALLFILENAME}.wav)

En extensions_additional.conf

Agrege en cara outbound route la variable ${EXTEN:1}

Ejp:

[outrt-001-SETEL OUT1]
include => outrt-001-SETEL OUT1-custom
exten => _0[457]XXXXXXX,1,Macro(user-callerid,SKIPTTL,)
exten => _0[457]XXXXXXX,n,Set(_NODEST=)
exten => _0[457]XXXXXXX,n,Macro(record-enable,${AMPUSER},OUT,${EXTEN:1},)
exten => _0[457]XXXXXXX,n,Macro(dialout-trunk,1,${EXTEN},,)
exten => _0[457]XXXXXXX,n,Macro(outisbusy,)

; end of [outrt-001-SETEL OUT1]

[outrt-002-SETEL OUT2]
include => outrt-002-SETEL OUT2-custom
exten => _ZXXXXXX,1,Macro(user-callerid,SKIPTTL,)
exten => _ZXXXXXX,n,Set(_NODEST=)
exten => _ZXXXXXX,n,Macro(record-enable,${AMPUSER},OUT,${EXTEN:1},)
exten => _ZXXXXXX,n,Macro(dialout-trunk,1,${EXTEN},,)
exten => _ZXXXXXX,n,Macro(outisbusy,)

; end of [outrt-002-SETEL OUT2]

[outrt-003-099 PORTA]
include => outrt-003-099 PORTA-custom
exten => _099[13-6]XXXXX,1,Macro(user-callerid,SKIPTTL,)
exten => _099[13-6]XXXXX,n,Set(_NODEST=)
exten => _099[13-6]XXXXX,n,Macro(record-enable,${AMPUSER},OUT,${EXTEN:1},)
exten => _099[13-6]XXXXX,n,Macro(dialout-trunk,2,${EXTEN},,)
exten => _099[13-6]XXXXX,n,Macro(outisbusy,)

; end of [outrt-003-099 PORTA]

[outrt-004-092 PORTA]
include => outrt-004-092 PORTA-custom
exten => _092[01-4]XXXXX,1,Macro(user-callerid,SKIPTTL,)
exten => _092[01-4]XXXXX,n,Set(_NODEST=)
exten => _092[01-4]XXXXX,n,Macro(record-enable,${AMPUSER},OUT,${EXTEN:1},)
exten => _092[01-4]XXXXX,n,Macro(dialout-trunk,2,${EXTEN},,)
exten => _092[01-4]XXXXX,n,Macro(outisbusy,)

; end of [outrt-004-092 PORTA]

[outrt-005-090 PORTA]
include => outrt-005-090 PORTA-custom
exten => _090[5-9]XXXXX,1,Macro(user-callerid,SKIPTTL,)
exten => _090[5-9]XXXXX,n,Set(_NODEST=)
exten => _090[5-9]XXXXX,n,Macro(record-enable,${AMPUSER},OUT,${EXTEN:1},)
exten => _090[5-9]XXXXX,n,Macro(dialout-trunk,2,${EXTEN},,)
exten => _090[5-9]XXXXX,n,Macro(outisbusy,)

; end of [outrt-005-090 PORTA]

[outrt-006-082 PORTA]
include => outrt-006-082 PORTA-custom
exten => _082[01-4]XXXXX,1,Macro(user-callerid,SKIPTTL,)
exten => _082[01-4]XXXXX,n,Set(_NODEST=)
exten => _082[01-4]XXXXX,n,Macro(record-enable,${AMPUSER},OUT,${EXTEN:1},)
exten => _082[01-4]XXXXX,n,Macro(dialout-trunk,2,${EXTEN},,)
exten => _082[01-4]XXXXX,n,Macro(outisbusy,)

; end of [outrt-006-082 PORTA]

[outrt-007-085 PORTA]
include => outrt-007-085 PORTA-custom
exten => _085XXXXXX,1,Macro(user-callerid,SKIPTTL,)
exten => _085XXXXXX,n,Set(_NODEST=)
exten => _085XXXXXX,n,Macro(record-enable,${AMPUSER},OUT,${EXTEN:1},)
exten => _085XXXXXX,n,Macro(dialout-trunk,2,${EXTEN},,)
exten => _085XXXXXX,n,Macro(outisbusy,)

; end of [outrt-007-085 PORTA]

[outrt-008-086 PORTA]
include => outrt-008-086 PORTA-custom
exten => _086XXXXXX,1,Macro(user-callerid,SKIPTTL,)
exten => _086XXXXXX,n,Set(_NODEST=)
exten => _086XXXXXX,n,Macro(record-enable,${AMPUSER},OUT,${EXTEN:1},)
exten => _086XXXXXX,n,Macro(dialout-trunk,2,${EXTEN},,)
exten => _086XXXXXX,n,Macro(outisbusy,)

; end of [outrt-008-086 PORTA]

[outrt-009-088 PORTA]
include => outrt-009-088 PORTA-custom
exten => _088XXXXXX,1,Macro(user-callerid,SKIPTTL,)
exten => _088XXXXXX,n,Set(_NODEST=)
exten => _088XXXXXX,n,Macro(record-enable,${AMPUSER},OUT,${EXTEN:1},)
exten => _088XXXXXX,n,Macro(dialout-trunk,2,${EXTEN},,)
exten => _088XXXXXX,n,Macro(outisbusy,)

; end of [outrt-009-088 PORTA]

[outrt-010-089 PORTA]
include => outrt-010-089 PORTA-custom
exten => _089[027-9]XXXXX,1,Macro(user-callerid,SKIPTTL,)
exten => _089[027-9]XXXXX,n,Set(_NODEST=)
exten => _089[027-9]XXXXX,n,Macro(record-enable,${AMPUSER},OUT,${EXTEN:1},)
exten => _089[027-9]XXXXX,n,Macro(dialout-trunk,2,${EXTEN},,)
exten => _089[027-9]XXXXX,n,Macro(outisbusy,)

; end of [outrt-010-089 PORTA]

[outrt-011-091 PORTA]
include => outrt-011-091 PORTA-custom
exten => _091XXXXXX,1,Macro(user-callerid,SKIPTTL,)
exten => _091XXXXXX,n,Set(_NODEST=)
exten => _091XXXXXX,n,Macro(record-enable,${AMPUSER},OUT,${EXTEN:1},)
exten => _091XXXXXX,n,Macro(dialout-trunk,2,${EXTEN},,)
exten => _091XXXXXX,n,Macro(outisbusy,)

; end of [outrt-011-091 PORTA]

[outrt-012-093 PORTA]
include => outrt-012-093 PORTA-custom
exten => _093XXXXXX,1,Macro(user-callerid,SKIPTTL,)
exten => _093XXXXXX,n,Set(_NODEST=)
exten => _093XXXXXX,n,Macro(record-enable,${AMPUSER},OUT,${EXTEN:1},)
exten => _093XXXXXX,n,Macro(dialout-trunk,2,${EXTEN},,)
exten => _093XXXXXX,n,Macro(outisbusy,)

; end of [outrt-012-093 PORTA]

[outrt-013-094 PORTA]
include => outrt-013-094 PORTA-custom
exten => _094XXXXXX,1,Macro(user-callerid,SKIPTTL,)
exten => _094XXXXXX,n,Set(_NODEST=)
exten => _094XXXXXX,n,Macro(record-enable,${AMPUSER},OUT,${EXTEN:1},)
exten => _094XXXXXX,n,Macro(dialout-trunk,2,${EXTEN},,)
exten => _094XXXXXX,n,Macro(outisbusy,)

; end of [outrt-013-094 PORTA]

[outrt-014-097 PORTA]
include => outrt-014-097 PORTA-custom
exten => _097XXXXXX,1,Macro(user-callerid,SKIPTTL,)
exten => _097XXXXXX,n,Set(_NODEST=)
exten => _097XXXXXX,n,Macro(record-enable,${AMPUSER},OUT,${EXTEN:1},)
exten => _097XXXXXX,n,Macro(dialout-trunk,2,${EXTEN},,)
exten => _097XXXXXX,n,Macro(outisbusy,)

; end of [outrt-014-097 PORTA]

[outrt-015-099 MOVI]
include => outrt-015-099 MOVI-custom
exten => _099[027-9]XXXXX,1,Macro(user-callerid,SKIPTTL,)
exten => _099[027-9]XXXXX,n,Set(_NODEST=)
exten => _099[027-9]XXXXX,n,Macro(record-enable,${AMPUSER},OUT,${EXTEN:1},)
exten => _099[027-9]XXXXX,n,Macro(dialout-trunk,3,${EXTEN},,)
exten => _099[027-9]XXXXX,n,Macro(outisbusy,)

; end of [outrt-015-099 MOVI]

[outrt-016-098 MOVI]
include => outrt-016-098 MOVI-custom
exten => _098XXXXXX,1,Macro(user-callerid,SKIPTTL,)
exten => _098XXXXXX,n,Set(_NODEST=)
exten => _098XXXXXX,n,Macro(record-enable,${AMPUSER},OUT,${EXTEN:1},)
exten => _098XXXXXX,n,Macro(dialout-trunk,3,${EXTEN},,)
exten => _098XXXXXX,n,Macro(outisbusy,)

; end of [outrt-016-098 MOVI]

[outrt-017-095 MOVI]
include => outrt-017-095 MOVI-custom
exten => _095XXXXXX,1,Macro(user-callerid,SKIPTTL,)
exten => _095XXXXXX,n,Set(_NODEST=)
exten => _095XXXXXX,n,Macro(record-enable,${AMPUSER},OUT,${EXTEN:1},)
exten => _095XXXXXX,n,Macro(dialout-trunk,3,${EXTEN},,)
exten => _095XXXXXX,n,Macro(outisbusy,)

; end of [outrt-017-095 MOVI]

[outrt-018-092 MOVI]
include => outrt-018-092 MOVI-custom
exten => _092[5-9]XXXXX,1,Macro(user-callerid,SKIPTTL,)
exten => _092[5-9]XXXXX,n,Set(_NODEST=)
exten => _092[5-9]XXXXX,n,Macro(record-enable,${AMPUSER},OUT,${EXTEN:1},)
exten => _092[5-9]XXXXX,n,Macro(dialout-trunk,3,${EXTEN},,)
exten => _092[5-9]XXXXX,n,Macro(outisbusy,)

; end of [outrt-018-092 MOVI]

[outrt-019-087 MOVI]
include => outrt-019-087 MOVI-custom
exten => _087[012]XXXXX,1,Macro(user-callerid,SKIPTTL,)
exten => _087[012]XXXXX,n,Set(_NODEST=)
exten => _087[012]XXXXX,n,Macro(record-enable,${AMPUSER},OUT,${EXTEN:1},)
exten => _087[012]XXXXX,n,Macro(dialout-trunk,3,${EXTEN},,)
exten => _087[012]XXXXX,n,Macro(outisbusy,)

; end of [outrt-019-087 MOVI]

[outrt-020-084 MOVI]
include => outrt-020-084 MOVI-custom
exten => _084XXXXXX,1,Macro(user-callerid,SKIPTTL,)
exten => _084XXXXXX,n,Set(_NODEST=)
exten => _084XXXXXX,n,Macro(record-enable,${AMPUSER},OUT,${EXTEN:1},)
exten => _084XXXXXX,n,Macro(dialout-trunk,3,${EXTEN},,)
exten => _084XXXXXX,n,Macro(outisbusy,)

; end of [outrt-020-084 MOVI]

Cabe mencionar que al modificar manualmente el extensions_additional.conf y hacer cambios en la interfaz web(freepbx) dichos cambios se pierden, asi que esta seria una solucion rapida mientras analizo una solucion final y permanente.

Se aceptan Comentarios

Puedes escribir tu

Imagen de neologan

Puedes escribir tu configuración en el archivo extensions_custom.conf que es el que freePBX deja para edición del usuario.
Cuando usas Macros no se pasan las variables que utilizas en los demás contextos, cada macro tiene sus propias variables y es mejor pasar como parámetro cualquier valor que necesites.

* ${ARG1}: The first argument passed to the macro
* ${ARG2}: The second argument passed to the macro (and so on)
* ${MACRO_CONTEXT}: The context of the extension that triggered this macro
* ${MACRO_EXTEN}: The extension that triggered this macro
* ${MACRO_OFFSET}: Set by a macro to influence the priority where execution will continue after exiting the macro
* ${MACRO_PRIORITY}: The priority in the extension where this macro was triggered

(http://www.voip-info.org/wiki-Asterisk+variables)

logan