Cursos Asterisk en México

Determinar Tiempo al Contestar

Colapsar

Anuncio

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

  • Determinar Tiempo al Contestar

    Hola a Todos,

    Estoy tratando de idearme una solucion para poder determinar el tiempo recorrido entre el ring de una llamada y el momento en que fue contestada..

    Pense que trabajando con los registros CDR que generaba Asterisk podria hacerlo pero el inconveniente es que toma el tiempo total de la llamada desde que entro en el Asterisk hasta que finalizo. Esto no me sirve puesto que queremos el tiempo que demoran los usuarios en contestar apenas suenan los telefonos..como indicador de calidad.

    Gracias por la ayuda

  • #2
    Determinar Tiempo al Contestar

    Vos lo que necesitas es el tiempo en que el interno esta sonando?
    lo que se me ocurre que podes intentar hacer es....

    Antes de pasar la llamada al interno con el comando Dial, inserta en una base de datos el timestamp.

    Luego utiliza DialStatus, para saber si el interno atendio y una vez que detectas el answer volve a cargar el timestamp.

    luego para sacar el tiempo deberas restar los timestamp y pasarlos a h.m.s

    Es una idea... lo primero que me llego a la mente.
    Espero que te sirva.

    Saludos.

    Comentario


    • #3
      Determinar Tiempo al Contestar

      Si eso habia pensado pero no se requiere de un agi o algo asi, cierto? Ademas puedo enviarlo a la base de datos al campo del FIELDUSER pero no se si quedará en el registro respectivo. Sabes como enviarlo?

      Gracias

      Comentario


      • #4
        Determinar Tiempo al Contestar

        no necesariamente debera usarse agi, pudes usar el comando mysql en asterisk directamente en el extensions.conf para insertar datos en una tabla.

        Vas a tener que generar una nueva base con tus propios datos, como el de los CDR, ya que veo mas dificil que puedas insertar tus datos dentro de la tabla de cdr que maneja asterisk

        Saludos.

        Comentario


        • #5
          Determinar Tiempo al Contestar

          Ok Maxi

          Voy a hacerlo y te comento como lo solucione.
          Gracias por la ayuda

          Saludos

          Comentario


          • #6
            Determinar Tiempo al Contestar

            podrías modificar dial.c, usar el manager de asterisk o simplemente antes del dial de llamada para determinar el inicio agregas una variable donde declaras el timestamp y lo comparas con el de answer..

            Comentario


            • #7
              Hola apañeros, estos días están siendo una locura por eso la baja participación aún así de cuando en cuando os echo un ojo para ver que tal vais

              Más facil todavía, sin tener que hacer nada. En el CDR tenemos tres campos que nos van a venir de perlas:
              calldate - Cuando se realiza la llamada.
              duration - Nos da la duración total de la llamada.
              billsec - Duración de la llamada desde el momento en el que el amigo coge el teléfono.

              ¿Cuanto ha durado el ring hasta que nos cogen el teléfono?
              Pos bien facil ¿no?

              ring_time = duration - billsec

              Prueba con esto antes de meterte en AGIs o tocar a bajo nivel a ver que tal sale.

              Comentario


              • #8
                Hola Antonio,

                Pues revise si con el CDR podia hacerlo como lo comentaba anteriormente pero los campos duration y billsec siempre son iguales cuando entra la llamada. Y ese es el tiempo que necesito saber "Cuanto se demoraron en contestar mis usuarios una llamada de afuera?". Lo que tu me comentas solo me sirve para saber cuanto se demoraron en contestar pero cuando nosotros llamamos a los clientes y no cuando ellos lo hacen hacia nosotros.

                Se te ocurre alguna otra idea?

                Gracias

                Comentario


                • #9
                  Jorge lo quieres poner más dificil todavía eehhhh

                  Pos otra idea igual de momento no se me ocurre. Esto voy a pensar un poco en voz alta.

                  De momento el AGI creo que lo vamos a descartar, ¿Cómo sabemos el tiempo que tus usuarios han tardado en coger el teléfono? pfff el comando de marcado es Dial y esto comprende desde que hace el primer Ring hasta que termina la llamada completa. Entonces parece que AGI failed.

                  Por otro lado nos queda el Asterisk Manager, esto puede ser solución. Cargamos un demonio que capture eventos del Asterisk Manager y cuando detecte que ocurre un inicio de Dial lo ponemos atento, nos quedamos con el Channel-ID (el identificador de la llamada) y luego nos quedamos atentos al evento que indique que comienza la charla.

                  ¿Cómo nos currelamos este demonio? No te aconsejo que empieces de cero porque no es bueno y ya que tamos hablando de Software Libre seguro que hay algo en lo que nos podemos ayudar.

                  A ver que te parece esto: http://www.voip-info.org/wiki-AstManProxy. Este proyecto es de David C. Troy, empezó como un pequeño ejercicio en el que sacó un Proxy en Perl del corazón de Flash Operator y ha terminado siendo un Proxy con un código en C de bastante calidad y eficiente.

                  Saludines,

                  PD: No se si he conseguido explicarme, por aquí es muy temprano y ando un tanto espeso (no es bueno acostarse tan tarde).

                  Comentario


                  • #10
                    Igual esto podría valer también http://developer.berlios.de/projects/b2bua/

                    Es un proyecto en el que se aplica un pequeño parche al Asterisk para que este actue como B2BUA usando Radius (Esto de Radius igual se podría modificar en el AGI para que lo guarde en MySQL).

                    Si no me equivoco el uso de un B2BUA es el de llevar un registro detallado del CDR, usuarios y tal.....

                    En el parche veo que añadie para SIP las siguientes constantes:
                    +" CALLEDHANGEDUP If 1 than called party hanged up\n"
                    +" DIALEDTIME Time from dial to answer (Lenght of the call)\n"
                    +" ANSWEREDTIME Time for actual call (Length of connected part of the call)\n"

                    Así que me imagino igual sirve para lo que buscas

                    Jorge, ánimo a ver que sucede con esto.

                    Comentario


                    • #11
                      Gracias Antonio,

                      Vamos a ver como resolvemos esto...en estas ultimas semanas no he tenido casi tiempo de dedicarme a este proceso pero esta esta seman y la otra voy a darle fuertemente.

                      Gracias por la ayuda.

                      Comentario

                      Principales Usuarios Activos

                      Colapsar

                      No hay usuarios activos superiores.
                      Trabajando...
                      X