Implementar un IVR y reconocer los números marcados

1,296 views
Skip to first unread message

>p3dRø<

unread,
Jan 5, 2009, 6:00:05 PM1/5/09
to aster...@googlegroups.com

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

Saúl Ibarra

unread,
Jan 7, 2009, 1:01:17 AM1/7/09
to aster...@googlegroups.com
Tienes que poner la extension en concreto:

> [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/

Gabriel Ernesto

unread,
Jan 6, 2009, 5:51:03 PM1/6/09
to asterisk-es
Te mando este ejemplo de un pequeño ivr, basado (por no decir copiado
=P) de unas diapositivas de Saghul.

[conmutador]
exten => s,1,GotoIfTime(08:30-17:00|mon-thu|*|*?s,dentro)
exten => s,n,GotoIfTime(08:30-14:30|fri|*|*?s,dentro)
exten => s,n,Playback(custom/asterisk-recording4)
exten => s,n,VoiceMail(2600|s)
exten => s,n,Hangup

exten => s,n(dentro),Set(TIMEOUT(digit)=3)
exten => s,n,Set(TIMEOUT(response)=9)
exten => s,n,Background(custom/asterisk-recording3)
exten => s,n,WaitExten(5)
exten => s,n,Dial(SIP/2600)
exten => s,n,Hangup

exten => i,1,Dial(SIP/2600)
exten => t,1,Dial(SIP/2600)

exten => 1,1,Dial(IAX2/gu...@10.3.1.1/8282,90,r)
exten => 3,1,Dial(SIP/2602,20,r)
exten => 4,1,Dial(SIP/2604,20,r)
exten => 6,1,Dial(IAX2/gu...@10.3.1.1/8222,90,r)
exten => 0,1,Dial(SIP/2600)

exten => _26XX,1,Goto(default,${EXTEN},1)
Reply all
Reply to author
Forward
0 new messages