macro desvio

270 views
Skip to first unread message

DANNDP

unread,
Jul 5, 2009, 1:03:50 AM7/5/09
to asterisk-es
Amigos, necesito su ayuda con lo siguiente: Tengo una macro un tanto
complicada, la misma usa AstDB, y funciona perfecto para extensiones
SIP e IAX, no asi con los telefonos analogos conectados a los puertos
FXS y tampoco me funciona para extensiones que recuben la llamada
desde la pstn....aqui van los detalles:

[macro-extendesvio]
exten => s,1,Set(temp=${DB(DESVIO/${MACRO_EXTEN})})
exten => s,2,GotoIf($["${temp}" = ""]?5:3)
exten => s,3,Dial(Local/${temp}@interno/n,30,T)
exten => s,4,Hangup()
exten => s,5,Dial(${ARG1},30,Ttr)
exten => s,6,Voicemail(u${MACRO_EXTEN}@default)
exten => s,7,Hangup()
exten => s,106,Voicemail(b${MACRO_EXTEN}@default)
exten => s,n,Hangup()

Para que funcione correctamente le agregué esto:

; crear el desvio
exten => _*21X.,1,Set(DB(DESVIO/${CALLERID(num)})=${EXTEN:3})
exten => _*21X.,2,Playback(call-forward)
exten => _*21X.,3,Playback(activated)
exten => _*21X.,4,Hangup

; cancelar el desvio
exten => *22,1,DBdel(DESVIO/${CALLERID(num)})
exten => *22,2,Playback(call-forward)
exten => *22,3,Playback(de-activated)
exten => *22,4,Hangup

El problema es que funciona PERFECTO si el desvio lo hago desde
cualquier dispositivo SIP o IAX, pero si lo hago con cualquier analogo
simplemente no hace nada....aqui les muestro lo que pasa cuando opero
con el telefono analogo:

Aqui activo el desvio:

publiclasica*CLI>
-- Executing [*21904124398561@from-internal:1] Set("DAHDI/3-1", "DB
(DESVIO/4003)=904124398561") in new stack
-- Executing [*21904124398561@from-internal:2] Playback("DAHDI/
3-1", "call-forward") in new stack
-- <DAHDI/3-1> Playing 'call-forward' (language 'es')
-- Executing [*21904124398561@from-internal:3] Playback("DAHDI/
3-1", "activated") in new stack
-- <DAHDI/3-1> Playing 'activated' (language 'es')
-- Executing [*21904124398561@from-internal:4] Hangup("DAHDI/3-1",
"") in new stack
== Spawn extension (from-internal, *21904124398561, 4) exited non-
zero on 'DAHDI/3-1'
-- Hungup 'DAHDI/3-1'

Ahora llamo a ese telefono y observen lo que me muestra el CLI

publiclasica*CLI>
-- Executing [700@interno:1] Macro("SIP/201-b7810e48",
"extendesvio|dahdi/3") in new stack
-- Executing [s@macro-extendesvio:1] Set("SIP/201-b7810e48",
"temp=") in new stack
-- Executing [s@macro-extendesvio:2] GotoIf("SIP/201-b7810e48", "1?
5:3") in new stack
-- Goto (macro-extendesvio,s,5)
-- Executing [s@macro-extendesvio:5] Dial("SIP/201-b7810e48",
"dahdi/3|30|Ttr") in new stack
-- Called 3I>
-- DAHDI/3-1 is ringing
-- DAHDI/3-1 is ringing

Al parecer no se almacenó NADA en la variable temp....que creen que
esté sucediendo? lo mas extrano es si lo hago con extensiones
digitales funciona perfecto (bueno casi perfecto, porque el contexto
que tengo para llamadas entrantes [from-pstn] lo tengo redireccionado
a una extension SIP que tiene activado el desvio y no lo ejecuta
cuando la llamada viene de la pstn, pero si lo ejecuta si la llamada
es de un interno) que les parece

Gracias Adelantadas por la ayuda amigos

Danny Dias
Vzla

Andrea Sannucci

unread,
Jul 5, 2009, 5:19:37 AM7/5/09
to aster...@googlegroups.com
Creo que el problema es el callerid del telefono analogico.
Asterisk setea el desvio de llamada tomando como referencia el callerid de la extension que esta activando el desvio. Si te fijas en el caso del telefono analogico toma como numero de extension el 4003. Pero cuando llamas esa extension el 4003 no aparece por ningun lado.
Revisa bien la configuracion de los puertos FXS.

Una vez activado el desvio para una extension analogica controla tambien como se ha guardado el valor es la base de datos de asterisk. Desde la consola:

database show


Raúl Alexis Betancor Santana

unread,
Jul 5, 2009, 5:25:20 AM7/5/09
to aster...@googlegroups.com
On Sunday 05 July 2009 06:03:50 DANNDP wrote:
> Amigos, necesito su ayuda con lo siguiente: Tengo una macro un tanto
> complicada, la misma usa AstDB, y funciona perfecto para extensiones
> SIP e IAX, no asi con los telefonos analogos conectados a los puertos
> FXS y tampoco me funciona para extensiones que recuben la llamada
> desde la pstn....aqui van los detalles:
>
> [macro-extendesvio]
> exten => s,1,Set(temp=${DB(DESVIO/${MACRO_EXTEN})})
> exten => s,2,GotoIf($["${temp}" = ""]?5:3)
> exten => s,3,Dial(Local/${temp}@interno/n,30,T)
> exten => s,4,Hangup()
> exten => s,5,Dial(${ARG1},30,Ttr)
> exten => s,6,Voicemail(u${MACRO_EXTEN}@default)
> exten => s,7,Hangup()
> exten => s,106,Voicemail(b${MACRO_EXTEN}@default)
> exten => s,n,Hangup()
>
> Para que funcione correctamente le agregué esto:
>
> ; crear el desvio
> exten => _*21X.,1,Set(DB(DESVIO/${CALLERID(num)})=${EXTEN:3})

El error está aquí, ahora tracea mentalmente la macro para que averigües por
qué ...,
Consejo, replantea esta macro de una forma más genérica, tal como está es
bastate "chapuza" y replanteate también como y cuando la llamas.

--
Raúl Alexis Betancor Santana
Dimensión Virtual

DANNDP

unread,
Jul 6, 2009, 1:56:24 AM7/6/09
to asterisk-es
Gracias por los comentarios....les cuento que mi error si era en la
configuracion de los puertos FXS...le tenia configurado una extension
distinta al que llamaba a la macro....

Mi problema es principalmente para llamadas entrantes, aqui les tengo
mi contexto from-pstn:

[from-pstn]
exten => s,1,Answer()
exten => s,2,Macro(extendesvio,${EXT201})

La macro la pueden ver en el email de apertura de este tema, lo que
veo es que la extension que llama a esta Macro es la "s" y pues no
surge ningun efecto en mi macro extendesvio, debido a que temp no
guarda nada....quisiera poder resolver este tema porque aun no le doy
la vuelta

Saludos y muchas Gracias

Danny Dias
Vzla

Raúl Alexis Betancor Santana

unread,
Jul 6, 2009, 2:17:26 AM7/6/09
to aster...@googlegroups.com
On Monday 06 July 2009 06:56:24 DANNDP wrote:
> Gracias por los comentarios....les cuento que mi error si era en la
> configuracion de los puertos FXS...le tenia configurado una extension
> distinta al que llamaba a la macro....
>
> Mi problema es principalmente para llamadas entrantes, aqui les tengo
> mi contexto from-pstn:
>
> [from-pstn]
> exten => s,1,Answer()
> exten => s,2,Macro(extendesvio,${EXT201})

Este tratamiento de las llamadas está abocado a los problemas.

> La macro la pueden ver en el email de apertura de este tema, lo que
> veo es que la extension que llama a esta Macro es la "s" y pues no
> surge ningun efecto en mi macro extendesvio, debido a que temp no
> guarda nada....quisiera poder resolver este tema porque aun no le doy
> la vuelta

Aquí tienes un ejemplo de macro más genérica para tratar las llamadas que
entran a una extensión, estudialo y saca conclusiones:

[macro-incoming-call-to-extension]
exten = s,1,NoOp(${CALLERID(all)})
exten = s,n,Ringing
exten = s,n,Set(ALERT_EXTERNAL=TRUE)
;CFB Call Forwarding Busy
;CFNR Call Forwarding No Reply
;CFU Call Forwarding Unconditional
exten = s,n,Set(EXTENSION=${CUT(ARG1,/,2)})
exten = s,n,GotoIf(${EXISTS(${DB(CFU/${EXTENSION})})}?${ARG5},
${DB(CFU/${EXTENSION})},1) ;Get CFU key
exten = s,n,GotoIf(${EXISTS(${DB(DND/${EXTENSION})})}?s-BUSY,1) ;Get DND key
exten = s,n,Dial(${ARG1},${ARG2},${MOHCLASS}tw)
exten = s,n,Goto(s-${DIALSTATUS},1)
exten = s-ANSWER,1,Hangup
exten = s-NOANSWER,1,GotoIf(${EXISTS(${DB(CFNR/${EXTENSION})})}?${ARG5},
${DB(CFNR/${EXTENSION})},1) ;Get CFNR key
exten = s-NOANSWER,n,Macro(voicemailbox,${ARG3},${ARG4})
exten = s-BUSY,1,GotoIf(${EXISTS(${DB(CFB/${EXTENSION})})}?${ARG5},
${DB(CFB/${EXTENSION})},1) ;Get CFB key
exten = s-BUSY,n,Macro(voicemailbox,${ARG3},${ARG4})
exten = _s-.,1,Macro(voicemailbox,${ARG3},${ARG4})

Reply all
Reply to author
Forward
0 new messages