Cursos Asterisk en México

AMD deteccion de operadora

Colapsar

Anuncio

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

  • AMD deteccion de operadora

    hola a todos los foreros de asterisk mexico, les hablo desde chile, y queria exponerles mi caso , para ver si me puedieran orientar,

    les cuento , necesito identificar cuando un telefono celular este apagado, ya que cuando lo llamo el estado de la llamada {DIALSTATUS} me aparece como answer,
    lo cual me come minutos de mi plan de telefonia, por lo cual quiero identificar cuando contesta un humano o una maquina.

    Estuve mirando el AMD en http://www.voip-info.org/wiki/index.php ... sk+cmd+AMD
    comprobe que estuviera instalado desde la terminal con :
    module show like app_amd.so

    pero al aplicar esto al comienzo , no me muerta nada por consola :

    Código:
    exten => s,1,NoCDR
    exten => s,n,AMD
    exten => s,n,GotoIf($[${AMDSTATUS}=HUMAN]?humn:mach)
    exten => s,n(mach),WaitForSilence(2500)
    exten => s,n,Playback(message-when-machine)
    exten => s,n,Hangup
    exten => s,n(humn),WaitForSilence(500)
    exten => s,n,Playback(message-when-human)
    exten => s,n,Hangup
    alguien ya lo ha implementado? se supone que se adjunta justo desde del dial para que lea la llamada saliente, como lo tengo ahora?

  • #2
    Re: AMD deteccion de operadora

    Veo que es un macro, pero no le pones nombre. Dale un nombre, agrega un Dial de ejemplo que uses para marcar hacia el exterior y te indico como tienes que modificarlo.

    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
      Re: AMD deteccion de operadora

      ;asi llamo
      exten => _X.,n,Dial(SIP/${hc_channel}#${exten}@${hc_hyperMedia},10,hHtT)

      [macro-amd] ; a esto te refieres agrearle un nombre de macro?
      exten => _X.,n,Goto(Status-${AMDSTATUS})
      exten => _X.,n(Status-NOTSURE),Goto(Status-HUMAN)
      exten => _X.,n(Status-HUMAN),Set(CALLERID(name)=101:${ CALLERID(name) })
      exten => _X.,n,Queue(101,t,,)
      exten => _X.,n(Status-MACHINE),Hangup(203)
      exten => _X.,n(Status-HANGUP),Hangup()

      Comentario


      • #4
        Re: AMD deteccion de operadora

        Hazlo así:
        Código:
        exten => _X.,n,Dial(SIP/${hc_channel}#${exten}@${hc_hyperMedia},10,hHtTM(macro-amd))
        
        [macro-amd]
        exten => s,1,NoCDR
        exten => s,n,AMD
        exten => s,n,GotoIf($[${AMDSTATUS}=HUMAN]?humn:mach)
        exten => s,n(mach),Noop(Hacer esto si se encontró con una máquina)
        exten => s,n,Set(MACRO_RESULT=CONGESTION)
        exten => s,n,Hangup
        exten => s,n(humn),Noop(Hacer esto si se encontró con un humano)
        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


        • #5
          Re: AMD deteccion de operadora

          Estimado veo que funciona la ejecucion de AMD , sos un crack , ahora tengo que aprender a intepretar la repsuesta

          <IAX2/trunkhyper1-2048>AGI Script registrarLlamadaSaliente.php completed, returning 0
          [2011-06-21 15:56:08] -- Hungup 'IAX2/trunkhyper1-2048'
          [2011-06-21 15:56:08] -- SIP/192.168.0.2-00000059 answered IAX2/trunkhyper1-2578
          [2011-06-21 15:56:08] -- Executing [s@macro-amd:1] NoCDR("SIP/192.168.0.2-00000059", "") in new stack
          [2011-06-21 15:56:08] -- Executing [s@macro-amd:2] AMD("SIP/192.168.0.2-00000059", "") in new stack
          [2011-06-21 15:56:08] -- AMD: SIP/192.168.0.2-00000059 9405 (Fmt: 4)
          [2011-06-21 15:56:08] -- AMD: initialSilence [2500] greeting [1500] afterGreetingSilence [800] totalAnalysisTime [5000] minimumWordLength [100] betweenWordsSilence [50] maximumNumberOfWords [3] silenceThreshold [256] maximumWordLength [5000]
          [2011-06-21 15:56:09] -- AMD: Channel [SIP/192.168.0.2-00000059]. Changed state to STATE_IN_SILENCE
          [2011-06-21 15:56:09] -- AMD: Channel [SIP/192.168.0.2-00000059]. Word detected. iWordsCount:1
          [2011-06-21 15:56:09] -- AMD: Channel [SIP/192.168.0.2-00000059]. Detected Talk, previous silence duration: 360
          [2011-06-21 15:56:09] -- AMD: Channel [SIP/192.168.0.2-00000059]. Changed state to STATE_IN_SILENCE
          [2011-06-21 15:56:09] -- AMD: Channel [SIP/192.168.0.2-00000059]. Detected Talk, previous silence duration: 80
          [2011-06-21 15:56:09] -- AMD: Channel [SIP/192.168.0.2-00000059]. Word detected. iWordsCount:2
          [2011-06-21 15:56:09] -- AMD: Channel [SIP/192.168.0.2-00000059]. Changed state to STATE_IN_SILENCE
          [2011-06-21 15:56:09] -- AMD: Channel [SIP/192.168.0.2-00000059]. Detected Talk, previous silence duration: 60
          [2011-06-21 15:56:09] -- AMD: Channel [SIP/192.168.0.2-00000059]. Word detected. iWordsCount:3
          [2011-06-21 15:56:09] -- AMD: Channel [SIP/192.168.0.2-00000059]. ANSWERING MACHINE: iWordsCount:3
          [2011-06-21 15:56:09] -- Executing [s@macro-amd:3] GotoIf("SIP/192.168.0.2-00000059", "0?humn:mach") in new stack
          [2011-06-21 15:56:09] -- Goto (macro-amd,s,4)
          [2011-06-21 15:56:09] -- Executing [s@macro-amd:4] NoOp("SIP/192.168.0.2-00000059", "Hacer esto si se encontró con una máquina") in new stack
          [2011-06-21 15:56:09] -- Executing [s@macro-amd:5] Set("SIP/192.168.0.2-00000059", "MACRO_RESULT=CONGESTION") in new stack
          [2011-06-21 15:56:09] -- Executing [s@macro-amd:6] Hangup("SIP/192.168.0.2-00000059", "") in new stack
          [2011-06-21 15:56:09] == Spawn extension (macro-amd, s, 6) exited non-zero on 'SIP/192.168.0.2-00000059' in macro 'amd'
          [2011-06-21 15:56:09] -- Executing [76562854@outbound:11] GotoIf("IAX2/trunkhyper1-2578", "0?mensaje1:") in new stack
          [2011-06-21 15:56:09] -- Executing [76562854@outbound:12] GotoIf("IAX2/trunkhyper1-2578", "1?mensaje2:") in new stack
          [2011-06-21 15:56:09] -- Goto (outbound,76562854,21)
          [2011-06-21 15:56:09] -- Executing [76562854@outbound:21] NoOp("IAX2/trunkhyper1-2578", "RESFRIADO") in new stack
          [2011-06-21 15:56:09] -- Executing [76562854@outbound:22] Goto("IAX2/trunkhyper1-2578", "cortar") in new stack
          [2011-06-21 15:56:09] -- Goto (outbound,76562854,18)
          [2011-06-21 15:56:09] -- Executing [76562854@outbound:18] Hangup("IAX2/trunkhyper1-2578", "") in new stack
          [2011-06-21 15:56:09] == Spawn extension (outbound, 76562854, 18) exited non-zero on 'IAX2/trunkhyper1-2578'
          [2011-06-21 15:56:09] -- Executing [h@outbound:1] AGI("IAX2/trunkhyper1-2578", "hcendout.php") in new stack
          [2011-06-21 15:56:09] -- Launched AGI Script /var/lib/asterisk/agi-bin/hcendout.php
          [2011-06-21 15:56:09] hcendout.php: channel = 25
          [2011-06-21 15:56:09] hcendout.php: billsec =
          [2011-06-21 15:56:09] hcendout.php: host = 192.168.0.2
          [2011-06-21 15:56:09] hcendout.php: posicion = 2
          [2011-06-21 15:56:10] -- <IAX2/trunkhyper1-2578>AGI Script hcendout.php completed, returning 0
          [2011-06-21 15:56:10] -- Executing [h@outbound:2] NoOp("IAX2/trunkhyper1-2578", "SEGUNDOS DE LA LLAMADA : ") in new stack
          [2011-06-21 15:56:10] -- Executing [h@outbound:3] NoOp("IAX2/trunkhyper1-2578", "entel") in new stack
          [2011-06-21 15:56:10] -- Executing [h@outbound:4] NoOp("IAX2/trunkhyper1-2578", "25") in new stack
          [2011-06-21 15:56:10] -- Executing [h@outbound:5] NoOp("IAX2/trunkhyper1-2578", "192.168.0.2") in new stack
          [2011-06-21 15:56:10] -- Executing [h@outbound:6] NoOp("IAX2/trunkhyper1-2578", "NUMERO DESTINO 76562854") in new stack
          [2011-06-21 15:56:10] -- Executing [h@outbound:7] AGI("IAX2/trunkhyper1-2578", "registrarLlamadaSaliente.php") in new stack
          [2011-06-21 15:56:10] -- Launched AGI Script /var/lib/asterisk/agi-bin/registrarLlamadaSaliente.php
          [2011-06-21 15:56:10] registrarLlamadaSaliente.php: ************************************************** **********
          [2011-06-21 15:56:10] registrarLlamadaSaliente.php: NUMERO DESTINO : 76562854
          [2011-06-21 15:56:10] registrarLlamadaSaliente.php: NUMERO ORIGEN : 9405
          [2011-06-21 15:56:10] registrarLlamadaSaliente.php: POSICION : 2
          [2011-06-21 15:56:10] registrarLlamadaSaliente.php: CANAL : 25
          [2011-06-21 15:56:10] registrarLlamadaSaliente.php: IP HYPERMEDIA : 192.168.0.2
          [2011-06-21 15:56:10] registrarLlamadaSaliente.php: SEGUNDOS DE LA LLAMADA : 0
          [2011-06-21 15:56:10] registrarLlamadaSaliente.php: ************************************************** **********
          [2011-06-21 15:56:10] -- <IAX2/trunkhyper1-2578>AGI Script registrarLlamadaSaliente.php completed, returning 0
          [2011-06-21 15:56:10] -- Executing [h@outbound:8] NoOp("IAX2/trunkhyper1-2578", "Estado de la llamada : CONGESTION") in new stack
          [2011-06-21 15:56:10] -- Hungup 'IAX2/trunkhyper1-2578'
          [2011-06-21 15:56:36] -- Accepting AUTHENTICATED call from 200.75.13.216:
          > requested format = gsm,
          > requested prefs = (ulaw|alaw|gsm),
          > actual format = ulaw,
          > host prefs = (ulaw|alaw|gsm),


          Esta bien que diga CONGESTION? si me contesto una maquina grabadora? he leido que se puede ajustar..

          Comentario


          • #6
            Re: AMD deteccion de operadora

            me detecta que todo es machine , como podria regular esto , se regula en el amd.conf

            tengo lo siguiente

            Código:
            [amd]
            initial_silence            = 380
            greeting                   = 1500
            after_greeting_silence     = 300
            total_analysis_time        = 5000
            min_word_length            = 120
            between_words_silence      = 50
            maximum_number_of_words    = 2
            silence_threshold          = 256

            Comentario


            • #7
              Re: AMD deteccion de operadora

              Tienes puesto que el máximo número de palabras sea 2, y en tu output del cli aparece que detectó 3. Puedes cambiar ese numero.

              Otra es que estes teniendo ruido en la linea y que por eso te aparezca como que detectó palabras. Prueba bajando el silence_threshold a 128 a ver si eso mejora.

              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


              • #8
                Re: AMD deteccion de operadora

                Hola soy nuevo en este tema del Asterisk, pero tengo un problema que cunando hago una llamada desde un script perl, y al atender la llamada desde mi celular la misma se corta y en el log del Asterisk, me da el siguiente estado:
                Using SIP RTP CoS mark 5
                > Channel SIP/conexion-group-lucio-00000042 was answered.
                == Starting SIP/conexion-group-lucio-00000042 at dialout,1,1 failed so falling back to exten 's'
                -- Executing [s@dialout:1] NoOp("SIP/conexion-group-lucio-00000042", "Dialout") in new stack
                -- Executing [s@dialout:2] Set("SIP/conexion-group-lucio-00000042", "TIMEOUT(digit)=5") in new stack
                -- Digit timeout set to 5.000
                -- Executing [s@dialout:3] Set("SIP/conexion-group-lucio-00000042", "TIMEOUT(response)=8") in new stack
                -- Response timeout set to 8.000
                -- Executing [s@dialout:4] Set("SIP/conexion-group-lucio-00000042", "MACHINE=0") in new stack
                -- Executing [s@dialout:5] Set("SIP/conexion-group-lucio-00000042", "FAILED_CAUSE=-1") in new stack
                -- Executing [s@dialout:6] Set("SIP/conexion-group-lucio-00000042", "DIALED_TIME=-1") in new stack
                -- Executing [s@dialout:7] Answer("SIP/conexion-group-lucio-00000042", "") in new stack
                -- Executing [s@dialout:8] NoOp("SIP/conexion-group-lucio-00000042", "First dial time: 2012-08-233 14:58:59") in new stack
                -- Executing [s@dialout:9] Set("SIP/conexion-group-lucio-00000042", "ANSWERED_TIME=2012-08-20 14:57:14") in new stack
                -- Executing [s@dialout:10] AMD("SIP/conexion-group-lucio-00000042", "") in new stack
                -- AMD: SIP/conexion-group-lucio-00000042 0983111643 (N/A) (Fmt: g729)
                -- AMD: initialSilence [2500] greeting [1500] afterGreetingSilence [800] totalAnalysisTime [5000] minimumWordLength [100] betweenWordsSilence [50] maximumNumberOfWords [3] silenceThreshold [256] maximumWordLength [5000]
                -- AMD: Channel [SIP/conexion-group-lucio-00000042]. Changed state to STATE_IN_SILENCE
                -- AMD: Channel [SIP/conexion-group-lucio-00000042]. ANSWERING MACHINE: silenceDuration:2500 initialSilence:2500
                -- Executing [s@dialout:11] Set("SIP/conexion-group-lucio-00000042", "AMD_RESULT=MACHINE") in new stack
                -- Executing [s@dialout:12] Goto("SIP/conexion-group-lucio-00000042", "Status-MACHINE") in new stack
                -- Goto (dialout,s,14)
                -- Executing [s@dialout:14] Goto("SIP/conexion-group-lucio-00000042", "answer-failed,s,1") in new stack
                -- Goto (answer-failed,s,1)
                -- Executing [s@answer-failed:1] NoOp("SIP/conexion-group-lucio-00000042", "Call answered machine or failed") in new stack
                -- Executing [s@answer-failed:2] Hangup("SIP/conexion-group-lucio-00000042", "") in new stack
                == Spawn extension (answer-failed, s, 2) exited non-zero on 'SIP/conexion-group-lucio-00000042'
                -- Executing [h@answer-failed:1] Goto("SIP/conexion-group-lucio-00000042", "save-cdr,s,1") in new stack
                -- Goto (save-cdr,s,1)
                -- Executing [s@save-cdr:1] Set("SIP/conexion-group-lucio-00000042", "HANGUP_TIME=2012-08-20 14:57:17") in new stack
                -- Executing [s@save-cdr:2] Set("SIP/conexion-group-lucio-00000042", "HANGUP_STATUS=16") in new stack
                -- Executing [s@save-cdr:3] Set("SIP/conexion-group-lucio-00000042", "AMD_STATUS=MACHINE") in new stack
                -- Executing [s@save-cdr:4] AGI("SIP/conexion-group-lucio-00000042", "cdr-dialout.agi") in new stack
                -- Launched AGI Script /var/lib/asterisk/agi-bin/cdr-dialout.agi

                Esto solo pasa con esta configuracion sip, ya que tengo otra configuracion dahdi y la misma funciona sin problema, alguno.

                Desde ya les agredecería muchísimo me den su ayuda.

                Comentario


                • #9
                  Re: AMD deteccion de operadora

                  Según lo que publicas, al momento en que tu canal SIP contesta no hay audio, asi que el AMD lo detecta como silencio y por lo tanto lo cataloga como máquina.

                  Al parecer viene como un problema de NAT. Te recomendaria primero pruebes establecer una llamada SIN el AMD para estar seguros de que este es el problema.

                  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


                  • #10
                    hola buenas tardes alguien sabe como se implementa amd en elastix 5,0

                    Comentario


                    • #11
                      ya configure el archivo amd,conf y el archivo extensions,conf de la siguiente manera.

                      AMD.COF
                      [general]
                      total_analysis_time = 10000 ; Maximum time allowed for the algorithm to decide
                      ; on whether the audio represents a HUMAN, or a MACHINE
                      silence_threshold = 256 ; If the average level of noise in a sample does not reach
                      ; this value, from a scale of 0 to 32767, then we will consider
                      ; it to be silence.

                      ; Greeting ;
                      initial_silence = 2500 ; Maximum silence duration before the greeting.
                      ; If exceeded, then the result is detection as a MACHINE.
                      after_greeting_silence = 600 ; Silence after detecting a greeting.
                      ; If exceeded, then the result is detection as a HUMAN
                      greeting = 2500 ; Maximum length of a greeting. If exceeded, then the
                      ; result is detection as a MACHINE.

                      ; Word detection ;
                      min_word_length = 100 ; Minimum duration of Voice to considered as a word
                      maximum_word_length = 5000 ; Maximum duration of a single Voice utterance allowed.
                      between_words_silence = 50 ; Minimum duration of silence after a word to consider
                      ; the audio what follows as a new word

                      maximum_number_of_words = 5 ; Maximum number of words in the greeting
                      ; If REACHED, then the result is detection as a MACHINE
                      ; WARNING: Releases prior to January 1 2016 documented
                      ; maximum_number_of_words as 'if exceeded, then MACHINE',
                      ; which did not reflect the true functionality. In Asterisk 14,
                      ; this functionality will change to reflect the variables' name.



                      extensions.conf

                      [macro-amd]
                      exten => s,1,NoCDR
                      exten => s,n,AMD
                      exten => s,n,GotoIf($[${AMDSTATUS}=HUMAN]?humn:mach)
                      exten => s,n(mach),Noop(Hacer esto si se encontró con una máquina)
                      exten => s,n,Set(MACRO_RESULT=CONGESTION)
                      exten => s,n,Hangup
                      exten => s,n(humn),Noop(Hacer esto si se encontró con un humano)

                      pero no funciona sigue pasando los buzones de voz de celulares

                      Comentario


                      • #12
                        El archivo está bien y el macro parece que también. Necesitamos ver como estás haciendo uso del macro-amd. No solamente por agregar este código ya está en uso: ahora tienes que invocar el macro al momento en que haces tu llamada.
                        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


                        • #13
                          Muchas gracias!! Chistian estoy revisando como puedo invocar el amd les comento como me fue

                          Comentario


                          • #14
                            Buenas tardes Christian, mucho gusto antes que nada.
                            Sabes que estoy trabajando con un módulo amd de una distro 1.6 y lo tengo configurado de la siguiente manera.
                            TobE(5000:8000:900:14000)

                            La pregunta que quería hacerte es:
                            Cual es la funcion del TobE ?? a su vez he encontrado la B también, cual es la función??

                            Cuales son las funciones de los parámentros (5000:8000:900:14000)?? los mismos estan expresados en milésimas de segundos??


                            Como podrás ver, recién estoy comenzando con el trabajo del amd.

                            Agradezco desde ya lo que me puedas asesorar

                            Saludos desde Uruguay!


                            Comentario

                            Principales Usuarios Activos

                            Colapsar

                            No hay usuarios activos superiores.
                            Trabajando...
                            X