Hola listeros, he comenzado a meterme más a fondo en lo que es IVR y pues estoy implementándolo con la lógica interna del extensions.conf
Aqui muestro la parte del IVR:
[ivr]
exten => s,1,Answer()
exten => s,2,Playback(bienvenido)
exten => s,3,Background(asterisk-recording4)
exten => s,4,Background(asterisk-recording5) ; "Presione 1 si desea comunicarse con Juanito"
exten => s,5,Background(asterisk-recording6) ; "Presione 2 si desea comunicarse con Pablito"
exten => s,6,Wait(4)
exten => s,7,GotoIf($[${EXTEN} = 2]?10:8)
exten => s,8,GotoIf($[${EXTEN} = 1]?11:9)
exten => s,9,Goto(s,12)
exten => s,10,Macro(dial,SIP,81)
exten => s,11,Macro(dial,SIP,80)
exten => s,12,Playback(vm-goodbye)
exten => i,1,Playback(invalido)
extem => i,2,Goto(internal,81,1)
Cuando escucho los "asterisk-recording" se supone que yo podría presionar un número en el teléfono y si es 1 hace una opción (ir a 11) si es 2 hace otra (ir a 10) y, caso contrario, ejecuta el Playback(vm-goodbye).
Mi problema es que apenas presiono cualquier número en el teléfono, se va a la extensión "i". Yo necesito que cuando marque un número Asterisk lo reconozca y así poder ejecutar una acción como llamar al anexo 81 por ejemplo: Macro(dial,SIP,81)
CLI>
-- Executing [11@internal:1] Goto("SIP/80-081d67b0", "ivr|s|1") in new stack
-- Goto (ivr,s,1)
-- Executing [s@ivr:1] Answer("SIP/80-081d67b0", "") in new stack
-- Executing [s@ivr:2] Playback("SIP/80-081d67b0", "hello-world") in new stack
-- <SIP/80-081d67b0> Playing 'hello-world' (language 'es')
-- Executing [s@ivr:3] BackGround("SIP/80-081d67b0", "asterisk-recording4") in new stack
-- <SIP/80-081d67b0> Playing 'asterisk-recording4' (language 'es')
-- Executing [s@ivr:4] BackGround("SIP/80-081d67b0", "asterisk-recording5") in new stack
-- <SIP/80-081d67b0> Playing 'asterisk-recording5' (language 'es')
-- Executing [s@ivr:5] BackGround("SIP/80-081d67b0", "asterisk-recording6") in new stack
-- <SIP/80-081d67b0> Playing 'asterisk-recording6' (language 'es')
-- Invalid extension '2' in context 'ivr' on SIP/80-081d67b0
== CDR updated on SIP/80-081d67b0
-- Executing [i@ivr:1] Playback("SIP/80-081d67b0", "invalido") in new stack
-- <SIP/80-081d67b0> Playing 'invalido' (language 'es')
== Auto fallthrough, channel 'SIP/80-081d67b0' status is 'UNKNOWN'
Por otro lado, qué otras maneras de implementar IVR son posible en Asterisk?
Gracias de antemano,
--
Pedro
> [ivr]
> exten => s,1,Answer()
> exten => s,2,Playback(bienvenido)
> exten => s,3,Background(asterisk-recording4)
> exten => s,4,Background(asterisk-recording5) ; "Presione 1 si desea
> comunicarse con Juanito"
> exten => s,5,Background(asterisk-recording6) ; "Presione 2 si desea
> comunicarse con Pablito"
exten => s,6,WaitExten(4)
exten => 1,1,Llamar a juanito
exten => 2,1, Llamar a pablito
...
--
Saúl -- "Nunca subestimes el ancho de banda de un camión lleno de disketes."
----------------------------------------------------------------
http://www.saghul.net/