Cursos Asterisk en México

ivr consultando a tabla mysql

Colapsar

Anuncio

Colapsar
No hay anuncio todavía.
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • ivr consultando a tabla mysql

    Estimada comunidad;

    Quisiera hacer una prueba en un servidor virtual que he instalado para ir conociendo asterisk. Instalé elastix 2.5
    Tengo anexos configurados. Todo normal.
    Ahora me gustaría saber cómo poder enlazar un IVR que indique el siguiente mensaje al marcar la extensión (por ejemplo 1000 que es el anexo que simula una recepcionista). Por favor ingrese codigo. cuando el usuario digite el código, asterisk consultará con una base de datos mysql que tiene una tabla muy simple con 3 columnas. (ITEM, codigo, STATUS). Asterisk buscará el codigo digitado dentro del campo codigo de la tabla y debe retornar un audio dependiendo de la columna status. Por Ejemplo. Si en la columna status marca "válido", elastix retornará el audio pregrabado "valido.gsm" y de lo contrario "retornará el audio pregrabado "inválido.gsm".

    La tabla ya la tengo creada en mysql, los audios también ya los tengo creados y listos para ser usados.

    Por favor, como podría hacer para lograr realizar lo que solicito?

    Muchas gracias de antemano.

    Saludos.

    allweb

  • #2
    Veo 3 alternativas. Dependiendo de tus habilidades, alguna puede parecerte más sencilla que las otras:
    - Usar la función REALTIME del plan de marcación.
    - Usar el módulo de funciones personalizadas de ODBC (func_odbc.conf)
    - Usar un AGI

    Cada uno tiene sus pros y sus contras, y es una bibliografía por separado. Te recomiendo busques como se utiliza cada una antes de que decidas cual es la mejor para ti.

    Saludos.
    dCAP Christian Cabrera R.
    Para aprender a usar Asterisk, asiste a uno de mis cursos Asterisk
    Si deseas asesoría pagada, por favor contáctame

    Comentario


    • #3
      muchas gracias christian, mira encontré algo que podría adaptar, en paralelo reviso los datos que me indicas. Créditos de ésta web: http://alejandroayala.solmedia.ec/?p=288

      include =>; inicio
      include =>; IVR
      include =>; IVR1
      include =>; IVR2

      [globals]

      ;-------- VARIABLES

      telefono=
      total=
      estadof=
      numero=
      flaq=
      estado=

      [inicio]

      exten =>; 1800,1,Answer
      exten =>; 1800,2,Ringing
      exten =>; 1800,3,Wait,2
      exten =>; 1800,4,goto(IVR,s,1)

      [IVR]
      exten =>; s,1,Wait(1) ;espera un segundo
      exten =>; s,2,Set(TIMEOUT(response)=10) ; 10 seg espera para que el llamante presione una tecla
      exten =>; s,3,Playback(custom/welcome) ; menu y escucha si el llamante presiona alguna tecla
      exten =>; s,4,BackGround(custom/menu)
      exten =>; s,5,WaitExten() ; espera que el llamante presione alguna tecla
      exten =>; 1,1,goto(IVR1,s,1) ; si presiona 1 va al contexto IVR1, extension s, prioridad 1
      exten =>; 2,1,goto(IVR2,s,1) ; si presiona 2 va al contexto IVR2, extension s, prioridad 1
      exten =>; 0,1,Hungup
      exten =>; t,1,Goto(#,1)
      exten =>; i,1,BackGround(custom/noOp)
      exten =>; i,2,Goto(s,4)

      [IVR1]
      exten =>; s,1,Playback(custom/inFono)
      exten =>; s,2,Read(telefono,,8) ; variable telefono recupera lo q el usuario ingreso 8 caracteres
      exten =>; s,3,MYSQL(Connect conn localhost root eLaStIx.2oo7 informacion) ; usuario: root, pass:eLaStIx.2oo7, informacion es el nombre de la BD
      exten =>; s,4,MYSQL(Query resultid ${conn} SELECT total from CNT where idfono=${telefono}) ; consulta tabla CNT, campo idfono
      exten =>; s,5,MYSQL(Fetch fetchid ${resultid} suu) ; recupera el valor
      exten =>; s,6,Set(total=${suu}) ; guarda en la variable total
      exten =>; s,7,MYSQL(Clear ${resultid}) ;limpia
      exten =>; s,8,MYSQL(Disconnect ${conn}) ;desconecta
      exten =>; s,9,GotoIf($[${LEN(${total})} = 0]?11:20) ; si la consulta retorna valores vacios
      exten =>; s,10,Goto(11)
      exten =>; s,11,BackGround(custom/losiento) ; se le dice al usuario que no hubo datos de su consulta
      exten =>; s,12,Goto(23)
      exten =>; s,20,BackGround(custom/totales)
      exten =>; s,21,SayNumber(${total}) ; si la consulta retorna un valor, una voz femenina lee el valor(en ingles)
      exten =>; s,22,Playback(custom/dolares)
      exten =>; s,23,BackGround(custom/pregunta) ; si desea hacer otra consulta
      exten =>; s,24,WaitExten(3)
      exten =>; 1,1,Goto(IVR1,s,1)
      exten =>; 2,1,Goto(IVR,s,4)
      exten =>; 3,1,Hangup

      [IVR2]
      exten =>; s,1,Playback(custom/inFono)
      exten =>; s,2,Read(telefono,,8)
      exten =>; s,3,MYSQL(Connect con localhost root eLaStIx.2oo7 informacion)
      exten =>; s,4,MYSQL(Query resul ${con} SELECT estado from CNT where idfono=${telefono})
      exten =>; s,5,MYSQL(Fetch fetchid ${resul} su)
      exten =>; s,6,Set(estadof=${su})
      exten =>; s,7,MYSQL(Clear ${con})
      exten =>; s,8,MYSQL(Disconnect ${con})
      exten =>; s,9,GotoIf($[${LEN(${estadof})} = 0]?11:20)
      exten =>; s,10,Goto(11)
      exten =>; s,11,BackGround(custom/losiento)
      exten =>; s,12,Goto(22)
      exten =>; s,20,BackGround(custom/estadoes)
      exten =>; s,21,Playback(custom/${estadof}) ; el resultado de la consulta es la misma que el nombre de un archivo de audio
      exten =>; s,22,BackGround(custom/pregunta2)
      exten =>; s,23,WaitExten(3)
      exten =>; 1,1,Goto(IVR2,s,1)
      exten =>; 2,1,Goto(IVR,s,4)
      exten =>; 3,1,Hangup</td>

      Comentario


      • #4
        Ahi utilizan la funcion MYSQL. Considero que es menos clara y más difícil de usar que REALTIME o el func_odbc, por lo que te recomiendo busques más a profundidad sobre los temas que te sugerí.
        dCAP Christian Cabrera R.
        Para aprender a usar Asterisk, asiste a uno de mis cursos Asterisk
        Si deseas asesoría pagada, por favor contáctame

        Comentario

        Principales Usuarios Activos

        Colapsar

        No hay usuarios activos superiores.
        Trabajando...
        X