[AsteriskBrasil] Macro dentro de URA

Gilberto Nunes Ferreira gilbertonunes em yahoo.com.br
Terça Março 11 15:25:25 BRT 2008


Olá lista

Tenho uma macro dentro de um URA, que é acionada via Goto.
Isto é, a URA desvia a ligação para um Goto, após selecionada a opção.
Dentro da instrução do Goto, existe a chamada para duas Macro.
Ocorre que Asterisk executa a Macro e logo em seguida retorna para o Goto, e executa automatcamente a outra Macro.
Como fazer para que o Asterisk finalize a chamada sem retornar para a instrução dentro do Goto e não executar a segunda Macro?
Obrigado.

Segue o Dial Plan:

[ura]
exten => s, 1, Wait,1
exten => s, n, Answer()
exten => s, n, Ringing
exten => s, n, Wait,1
exten => s, n, Ringing()
;exten => s, n, Ringing()
exten => s, n, Noop()
exten => s, n, Set(LANGUAGE()=pt_BR)
exten => s, n, Set(CALLFILENAME=/var/spool/asterisk/monitor/entrada/)
exten => s, n, Set(DYNAMIC_FEATURES = hangup#pickupexten#atxfer#blidxfer)
;exten => s, n, MixMonitor(wav,${CALLFILENAME}/${STRFTIME(${EPOCH},,%d%m%Y-%H:%M:%S)}-${EXTEN},m|av(0)V(0))
exten => s, n, Wait,1
exten => s, n, Set(TIMEOUT(digit)=3) ; Set Digit Timeout to 5sec
exten => s, n, Set(TIMEOUT(response)=4) ; Set Response Timeout to 10sec
exten => s, n, Background(bemvindobit2)
exten => 1, 1, Set(LANGUAGE()=pt_BR)
exten => 1, 2, Playback(aposbipe)
exten => 1, 3, Playback(beep)
exten => 1, 4, Goto(consulta,_*XXXXXX,1)
exten => 2, 1, Set(LANGUAGE()=pt_BR)
exten => 2, 2, Queue(loja|tT|||150)
exten => 3, 1, Set(LANGUAGE()=pt_BR)
exten => 3, 2, Queue(assistencia|tT|||150)
exten => i, 1, Playback(invalid)
exten => i, 2, Wait,1
exten => i, 3, Goto(s,8)
exten => t, 1, Wait,1
exten => t, 2, Queue(telefonista|tT|||150)
exten => s, n, HangUp()


[consulta]
exten => _*XXXXXX, 1, Answer()
exten => _*XXXXXX, 2, WaitExten()
exten => _*XXXXXX, 3, Set(LANGUAGE()=pt_BR)
exten => _*XXXXXX, 4, Set(OS=/etc/asterisk/OS)
exten => _*XXXXXX, 5, System(/bin/mkdir ${OS}/${EXTEN:1})
exten => _*XXXXXX, 6, System(psql -U postgres -h XXX.YYY.Z.WW -d ZYW -c "SELECT * FROM t_os_situacao where ord_cod=${EXTEN:1} order by sit_ini asc" > ${OS}/
${EXTEN:1}/os_${EXTEN:1})
exten => _*XXXXXX, 7, System(cat ${OS}/${EXTEN:1}/os_${EXTEN:1} | grep "|" | cut -d"|" -f3 | grep -v sta_cod | tail -n -1 > ${OS}/${EXTEN:1}/sit_final_${EXT
EN:1})

;;;                  Set(foo=${SHELL(echo \"bar\")})\n");
exten => _*XXXXXX, 8, Set(SITUACAO=${SHELL(cat "${OS}/${EXTEN:1}/sit_final_${EXTEN:1}")})

;;;;; GotoIf($["${CALLERIDNUM}" = "303"]?3)
; Executa uma macro para OS na Bancada
exten => _*XXXXXX, 9, Gotoif($[${SITUACAO} = 101]?11)
; Executa uma macro para OS Concluida
exten => _*XXXXXX, 10, Gotoif($[${SITUACAO} = 2]?13)
; Executa uma macro para OS Concluida
exten => _*XXXXXX, 11, Gotoif($[${SITUACAO} = 104]?13)


; Vai para macro bancada
exten => _*XXXXXX, 12, Macro(bancada,${EXTEN:1})
; Vai para macro OS Concluida
exten => _*XXXXXX, 13, Macro(concluido,${EXTEN:1})

Perceba que logo aí em cima, ele executa a Macro chamada bancada.
O que está ocorrendo é que quando ele finaliza essa Macro, ao invés de fazer o HangUp, ele volta para aqui e executa a segunda Macro, chamada concluido.

Obrigado a todos




       
---------------------------------
Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! 
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20080311/a8c4bdf3/attachment-0001.htm 


More information about the AsteriskBrasil mailing list