Cursos Asterisk en México

Poner un DialPlan en una llamada saliente

Colapsar

Anuncio

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

  • Poner un DialPlan en una llamada saliente

    Hola compañeros, os cuento, estoy empezando con Asterisk y necesito saber si con el mismo voy a poder conseguir lo que necesito, la documentación en Español que he encontrado y los foros que he encontrado, aunque de momento este sea el mejor, no termino de encontrar una respuesta a mi pregunta.

    Mi pregunta es ( y voy a intentar que se me entienda ), asignar un dialplan a una llamada saliente que yo genere.

    He visto que hay varios paneles, muy visuales y muy sencillos para crear toda una rutina "Inbound" como he leído por ahí, es decir cuando alguien te llama a ti, pero a nivel de que tu mismo marques el numero y lo enlaces a un dialplan hasta ahora no he encontrado nadie que lo pregunte o directamente diga que si se puede.

    Por desgracia, no soy de Mexico, sino de España, y creo que ustedes en tema de Asterisk ( y seguramente en otros muchos ) están mas avanzados que nosotros, he encontrado varias empresas en Mexico que hacen lo que necesito, pero en España de momento...

    Mi pregunta era la que puse antes, si es posible asignar un dialplan a una llamada saliente, pero voy a intentar describir lo que necesito íntegramente, no para que me digáis como hacerlo, sino para que me digáis si con Asterisk tengo todo lo que necesito para conseguirlo.

    Os cuento :

    -Necesito de forma automatizada, presumiblemente desde un archivo PHP, "hacer una llamada" a un numero que le paso en ese momento, cuando la persona descuelgue, necesito decirle, tiene un mensaje de ... , desea escucharlo ? pulse 1 , cuando pulse 1 , necesito decirle un texto ( he visto el tema de TTS, aun no me he enterado si esto lo incluye Asterisk o es una licencia aparte o nose..) y una vez que le he leido ese texto, necesito preguntarle nuevamente, pulse 1 si ha entendido el mensaje, pulse 2 si no lo ha entendido, y fin, lo que la persona responda, osea, ese 1 o ese 2 final, necesito almacenarlo y poder recuperarlo posteriormente.

    Creo que eso se haría a través de una API que he visto que si que tiene Asterisk, pero claro... todo lo demás, de la llamada automática y después el texto... de momento no encuentro nadie que me diga, SI se puede con Asterisk, o no se puede pero con el modulo tal si, porque lo que no quiero es pasarme semanas investigando como hacerlo para que finalmente no pueda hacerse o sea mas sencillo con otra solución.

    Muchas gracias.

    Un cordial saludo.

  • #2
    Hola,

    Si, si es posible y es bastante sencillo de implementar. Tienes que considerarlo como 2 partes:

    1. Hacer la llamada automáticamente hacia el exterior (puedes usar callfiles o usar el AMI). Puedes encontrar más info en http://www.voip-info.org/wiki/view/A...+auto-dial+out

    2. Desarrollar una aplicación que cuando alguien marque hacia ella, diga el mensaje que necesites que diga. Esto normalmente se hace con un AGI.



    Realmente lo que estás haciendo es disparar una extensión cualquiera a través de una llamada a la que marcas y Asterisk la conecta hacia la extensión que tu indiques. Estás "engañando" al sistema para que trate llamadas salientes como si fueran entrantes, de manera que cualquier cosa que tu puedas crear y acceder a ella marcando hacia una extensión, puedes invocarlo al momento en que le marcas a alguien.

    Espero esto te sirva como base para lo que requieres desarrollar.

    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
      Hola Christian, la verdad es que desde este mensaje a ahora han pasado algo mas de 2 meses, y aunque no me he dedicado a tiempo completo a Asterisk porque tengo que ocuparme de otras muchas mas cosas, si que es cierto que pienso que para el tiempo que le he dedicado, la realidad es que la "curva" de aprendizaje ha sido pequeña y con relativa facilidad he podido avanzar en mi propósito, a pesar de ello sigo pensando que la documentación en Español de Asterisk sigue siendo pobre.

      Bueno, te cuento / os cuento... he usado Elastix ( nose la diferencia real que tiene para mi esta distro y no AsteriskNow por ejemplo para lo que quiero hacer ) tengo un AGI colocado en una extensión, este AGI ( esta programado en PHP utilizando PHPAGI) que tengo lo que hace es que al llamar a esa extensión te dice un mensaje TTS, y posteriormente espera que hagas un marcado de un numero, con ese numero consulto una base de datos MySQL remota que me devuelve unos parámetros y se los digo por TTS nuevamente a la persona.

      Hasta aquí todo correcto, la verdad es que funciona perfectamente y he instalado unas voces en Español de la Junta de Andalucía y el resultado es bastante aceptable sin ser excelente.

      Bien... aquí viene mi primer atasco, y atasco principal que me queda pienso yo, necesito... a través de una web que tengo en otro servidor, llamar a este AGI o llamar a esta extensión que ejecuta el AGI, con el detalle de que me gustaría en esta llamada pasarle unos parámetros para que al ejecutar el AGI que tengo, dependiendo de los parámetros que reciba, decir una cosa u otra.

      La historia es que nose bien como abrir esta puerta, he visto que hay que tocar el archivo manager.conf, y ya lo he hecho, he puesto una linea nueva de permit y puesto la IP del servidor web que hará la llamada a Asterisk, después un poco a ciegas, he tocado el archivo phpagi.conf y he añadido, aunque inicialmente no venia :

      [asmanager]
      server=localhost
      port=5038
      username=name
      secret=pass

      Y bueno... hasta aquí he llegado, a partir de ahí solo me surjen dudas, me he descargado PHPAGI para ponerlo en el servidor web y he visto un archivo que se llama phpagi-asmanager y pienso que hay debería de poner estos mismos parámetros que estoy utilizando aquí.

      Si hago esto, ¿ ya el servidor Asterisk permitiría hacer llamadas remotas o debo agregar / tocar algo mas ?

      Y llegados a este punto que tuviese realmente conexión con Asterisk, en el AGI como haría yo la llamada ? porque yo he utilizado Agi para llamarlo desde el dial plan, llamando a una extensión concreta desde un Softphone.

      ¿ Que debería hacer ? A partir de aquí ahora mismo tengo un gran lío mental porque hay muchos conceptos que aunque busco información y encuentro cosas en Ingles no encuentro una explicación que realmente entienda, he visto el tema de FastAGI que creo que se ajusta mas a lo que quiero, pero nose si esto realmente es así ni se realmente como usarlo.

      Se me ocurren cosas dispares como por ejemplo :

      Hacer todo esto del AGI y llamarlo desde la web y que hubiese algún comando para "conectarme" con Asterisk y a partir de ahi crear una llamada a una extensión, he visto el comando Originate, pero nose si utilizo eso en el propio AGI que creo, después ese numero o extensión a la que llame, "oirá" lo siguiente que yo le diga en el AGI o como se gestiona eso, porque si esa gestión esta ocupada porque están hablando o recibiendo otro mensaje o directamente no existe, el AGI "esperara" o continuara.

      También yo estoy llamando a extensiones internas de la propia Asterisk, pero la teoría es que yo debo de realizar una llamada externa a un numero fijo, es decir, necesito a través de la web que conecte con Asterisk para originar la llamada y Asterisk lance una llamada al exterior para decir el mensaje, supongo que yo podre configurar 1 extensión para cada numero externo que necesite, o desde el mismo AGI especificar el numero en el Originate, claro que para esto necesitaría los parámetros que comentaba antes, para saber a donde "mandar la llamada".

      Bueno... nose si estoy diciendo tonterías o ahí algo de verdad en mis palabras, en resumen lo que necesito saber para poder avanzar es :

      ¿ Como conecto desde una web al servidor Asterisk para decirle algo ?

      Un cordial saludo.

      Comentario


      • #4
        Ya he avanzado en este aspecto.

        Finalmente he adoptado una solución mas "imaginativa" pero igualmente valida.

        Tengo un PHP que consulta una base de datos online, y cuando hay algún cambio en una tabla, recoge los datos y genera un call file que ejecuta la llamada.

        Creo que este enfoque es mas seguro porque me evito abrir tanto el servidor al exterior.

        Ahora solo me queda saber como insertar una variable en el call file y poder recuperarlo desde el AGI que es lo que busco actualmente.

        ¿ Alguna solución a esto ?

        Un cordial saludo.

        Comentario


        • #5
          (Voy a meter mi cuchara)...

          Desde el Dialplan es:
          Código:
          exten => tuextension,tuprioridad,AGI(TUAGI.agi,PRIMERVALOR,SEGUNDOVALOR,VALORN)
          Y en el PHP lo obtienes con:
          Código:
          $var1=$argv[1];
          $var2=$argv[2];
          $var3=$argv[3];

          Comentario


          • #6
            Como estas usando el callfiles, puedes mandar la llamada que ha sido contestada al DialPlan, entonces los parámetros que necesitas son los siguientes, estoy seguro que muchos ya los tienes:

            Channel: El canal por el que vas a sacar la llamada
            Callerid: El callerid a utilizar
            WaitTime: Tiempo que tiene que esperar antes de timbrar
            MaxRetries: Numero de reintentos si la llamada no es conectada
            RetryTime: Intervalo para los reintentos
            Account: Codigo para el CDR

            Y esto es lo adicional que necesitas para que ejecute una extension del dialplan (donde haras la lógica para continuar con la llamada)

            Context: Contexto
            Extension: Extension
            Priority: Prioridad
            Setvar: <var=valor> Por si quieres asignar variables que se usen en el canal
            Hector Alvarez
            dCAP Certified #2199
            http://mx.linkedin.com/in/alvarezhector/

            Comentario


            • #7
              Ahora solo me queda saber como insertar una variable en el call file y poder recuperarlo desde el AGI que es lo que busco actualmente.
              Testking http://www.testkings.ws
              CCA-410 braindumps CCA-410 braindumps

              Comentario


              • #8
                En el AGI usa Set y en el dialplan llama la variable como cualquier otra. Mas info: http://www.voip-info.org/wiki/view/A...+auto-dial+out

                Comentario

                Principales Usuarios Activos

                Colapsar

                No hay usuarios activos superiores.
                Trabajando...
                X