Cursos Asterisk en México

[RESUELTO] Transferir llamada a una Cola desde un AGI

Colapsar

Anuncio

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

  • [RESUELTO] Transferir llamada a una Cola desde un AGI

    Hola

    ¿me pueden decir como transferir una llamada a una cola desde un AGI?, he podido hacerlo con extensiones de la siguiente forma $agi->exec(Dial,"SIP/120") pero no se como hacerlo para que se vaya a una cola.

    Gracias

  • #2
    has intentado exec("queue ventas") ?
    si es así que errores tiene?
    Hector Alvarez
    dCAP Certified #2199
    http://mx.linkedin.com/in/alvarezhector/

    Comentario


    • #3
      Recomendación no marques desde un AGI ya que el script quedaŕa abierto por cada llamada, lo mejor es terminar el proceso del AGI y saltar al dialplan y ahí hacer el manejo de la llamada.

      Comentario


      • #4
        Gracias por tus respuestas

        Disculpa mi ignorancia, como regresaría del AGI al dialplan?, te explico lo que estoy haciendo, un IVR contesta y cuando el cliente decide levantar un pedido a través del teclado telefónico teclea la opción 1, ahí mando al AGI donde verifico que el numero de teléfono de donde me están solicitando el servicio exista en nuestra base de datos, en caso de no existir es donde quiero mandarlo a la cola donde un agente le tomará por única vez sus datos.

        saludos

        Comentario


        • #5
          Usa/setea variables en tu AGI, después evalualas/usalas en tu dialplan ya sea con gotoif o execif.

          Comentario


          • #6
            Hola

            estoy intentando hacer lo del uso de variables pero no me funcionan las prubeas, tengo lo siguiente en mi dialplan a manera de prueba

            exten => 364,1,Set(cola=0)
            exten => 364,n,GotoIf($["${cola)}" != 0]?10:20)
            exten => 364,10,Hangup()
            exten => 364,20,Queue(600)

            en la pantalla del teléfono al marcar 364 me pone DECLINED y lo siguiente es lo que me sale en el LOG

            -- Executing [364@todas:1] Set("SIP/248-0000ffa7", "cola=0") in new stack
            -- Executing [364@todas:2] GotoIf("SIP/248-0000ffa7", "1?10:20") in new stack
            -- Goto (todas,364,10)
            -- Executing [364@todas:10] Hangup("SIP/248-0000ffa7", "") in new stack
            == Spawn extension (todas, 364, 10) exited non-zero on 'SIP/248-0000ffa7'
            -- Executing [h@todas:1] Macro("SIP/248-0000ffa7", "hangupcall,") in new stack
            -- Executing [s@macro-hangupcall:1] GotoIf("SIP/248-0000ffa7", "1?endmixmoncheck") in new stack
            -- Goto (macro-hangupcall,s,9)
            -- Executing [s@macro-hangupcall:9] NoOp("SIP/248-0000ffa7", "End of MIXMON check") in new stack
            -- Executing [s@macro-hangupcall:10] GotoIf("SIP/248-0000ffa7", "1?nomeetmemon") in new stack
            -- Goto (macro-hangupcall,s,28)
            -- Executing [s@macro-hangupcall:28] NoOp("SIP/248-0000ffa7", "End of MEETME check") in new stack
            -- Executing [s@macro-hangupcall:29] GotoIf("SIP/248-0000ffa7", "1?noautomon") in new stack
            -- Goto (macro-hangupcall,s,34)
            -- Executing [s@macro-hangupcall:34] NoOp("SIP/248-0000ffa7", "TOUCH_MONITOR_OUTPUT=") in new stack
            -- Executing [s@macro-hangupcall:35] GotoIf("SIP/248-0000ffa7", "1?noautomon2") in new stack
            -- Goto (macro-hangupcall,s,41)
            -- Executing [s@macro-hangupcall:41] NoOp("SIP/248-0000ffa7", "MONITOR_FILENAME=") in new stack
            -- Executing [s@macro-hangupcall:42] GotoIf("SIP/248-0000ffa7", "1?skiprg") in new stack
            -- Goto (macro-hangupcall,s,45)
            -- Executing [s@macro-hangupcall:45] GotoIf("SIP/248-0000ffa7", "1?skipblkvm") in new stack
            -- Goto (macro-hangupcall,s,48)
            -- Executing [s@macro-hangupcall:48] GotoIf("SIP/248-0000ffa7", "1?theend") in new stack
            -- Goto (macro-hangupcall,s,50)
            -- Executing [s@macro-hangupcall:50] AGI("SIP/248-0000ffa7", "hangup.agi") in new stack
            -- Launched AGI Script /var/lib/asterisk/agi-bin/hangup.agi
            -- <SIP/248-0000ffa7>AGI Script hangup.agi completed, returning 0
            -- Executing [s@macro-hangupcall:51] Hangup("SIP/248-0000ffa7", "") in new stack
            == Spawn extension (macro-hangupcall, s, 51) exited non-zero on 'SIP/248-0000ffa7' in macro 'hangupcall'
            == Spawn extension (todas, h, 1) exited non-zero on 'SIP/248-0000ffa7'

            de antemano gracias

            Comentario


            • #7
              Tienes un paréntesis de más cuando evaluas la variable cola y además para asterisk "0" es diferente de 0. Así que le quitas las comillas o se las pones al otro 0 y recuerda que la primera parte de la evaluación de ka expresión es cuando es verdadera, dicho eso tu script funciona como la variable que evaluas es diferente a 0 se cumple la condición y te envía a la prioridad 10 y cuelga tal como le dices que lo haga.

              Comentario


              • #8
                Muchas gracias por tu ayuda, voy a seguir ahora cambiando el valor de la variable en el AGI, espero no tener mas contratiempos.

                saludos

                Comentario


                • #9
                  Hola

                  ya esta funcionando perfectamente la parte de las variables pero ahora surgió otro al transferir la llamada a la cola, se queda ciclado el asterisk, cuando transfiero a una extensión con Dial(SIP/201) timbra perfectamente en la extensión 201 y contesta y se puede realizar la conferencia, al ejecutar Queue(600) es donde se queda ciclado, abajo ponga la forma en que tengo configurada la extensión

                  exten => 364,1,Set(cola=0)
                  exten => 364,n,AGI(pedido.php)
                  exten => 364,n,GotoIf($[${cola}=1]?10:20)
                  exten => 364,10,Queue(600)
                  exten => 364,20,Hangup()

                  este es el log cuando el GotoIf es verdadero y ejecuta la linea 10,Queue(600), lo que esta en repetidas ocasiones se sigue presentando aun y cuando cuelgo la llamada, tengo que reiniciar el servicio asterisk para cancelar

                  Agradezco cualquier ayuda

                  Saludos


                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K == Using SIP RTP TOS bits 184
                  == Using SIP RTP CoS mark 5
                  -- Executing [364@from-internal:1] ^[[1;36mSet^[[0m("^[[1;35mSIP/248-00000003^[[0m", "^[[1;35mcola=0^[[0m") in new stack
                  -- Executing [364@from-internal:2] ^[[1;36mAGI^[[0m("^[[1;35mSIP/248-00000003^[[0m", "^[[1;35mpedido.php^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Launched AGI Script /var/lib/asterisk/agi-bin/pedido.php
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- <SIP/248-00000003> Playing 'pedido.gsm' (language 'es')
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- <SIP/248-00000003> Playing 'pedido.gsm' (language 'es')
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- <SIP/248-00000003> Playing 'numero-tel.gsm' (language 'es')
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Remote UNIX connection
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Remote UNIX connection disconnected
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- <SIP/248-00000003> Playing 'aditivo.gsm' (language 'es')
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Playing 'nuevos_datos' (escape_digits=) (sample_offset 0)
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- <SIP/248-00000003>AGI Script pedido.php completed, returning 0
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [364@from-internal:3] ^[[1;36mGotoIf^[[0m("^[[1;35mSIP/248-00000003^[[0m", "^[[1;35m1?10:20^[[0m") in new stack
                  -- Goto (from-internal,364,10)
                  -- Executing [364@from-internal:10] ^[[1;36mQueue^[[0m("^[[1;35mSIP/248-00000003^[[0m", "^[[1;35m600^[[0m") in new stack
                  -- Started music on hold, class 'Promos', on SIP/248-00000003
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [201@from-queue:1] ^[[1;36mSet^[[0m("^[[1;35mLocal/201@from-queue-00000002;2^[[0m", "^[[1;35mQAGENT=201^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [201@from-queue:2] ^[[1;36mGoto^[[0m("^[[1;35mLocal/201@from-queue-00000002;2^[[0m", "^[[1;35m,1^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Goto (from-queue,201,1)
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [201@from-queue:1] ^[[1;36mSet^[[0m("^[[1;35mLocal/201@from-queue-00000002;2^[[0m", "^[[1;35mQAGENT=201^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [201@from-queue:2] ^[[1;36mGoto^[[0m("^[[1;35mLocal/201@from-queue-00000002;2^[[0m", "^[[1;35m,1^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Goto (from-queue,201,1)
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [201@from-queue:1] ^[[1;36mSet^[[0m("^[[1;35mLocal/201@from-queue-00000002;2^[[0m", "^[[1;35mQAGENT=201^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [200@from-queue:1] ^[[1;36mSet^[[0m("^[[1;35mLocal/200@from-queue-00000003;2^[[0m", "^[[1;35mQAGENT=200^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [200@from-queue:2] ^[[1;36mGoto^[[0m("^[[1;35mLocal/200@from-queue-00000003;2^[[0m", "^[[1;35m,1^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Goto (from-queue,200,1)
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [200@from-queue:1] ^[[1;36mSet^[[0m("^[[1;35mLocal/200@from-queue-00000003;2^[[0m", "^[[1;35mQAGENT=200^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [200@from-queue:2] ^[[1;36mGoto^[[0m("^[[1;35mLocal/200@from-queue-00000003;2^[[0m", "^[[1;35m,1^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Goto (from-queue,200,1)
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [200@from-queue:1] ^[[1;36mSet^[[0m("^[[1;35mLocal/200@from-queue-00000003;2^[[0m", "^[[1;35mQAGENT=200^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [200@from-queue:2] ^[[1;36mGoto^[[0m("^[[1;35mLocal/200@from-queue-00000003;2^[[0m", "^[[1;35m,1^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Goto (from-queue,200,1)
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [200@from-queue:1] ^[[1;36mSet^[[0m("^[[1;35mLocal/200@from-queue-00000003;2^[[0m", "^[[1;35mQAGENT=200^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [200@from-queue:2] ^[[1;36mGoto^[[0m("^[[1;35mLocal/200@from-queue-00000003;2^[[0m", "^[[1;35m,1^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Goto (from-queue,200,1)
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [200@from-queue:1] ^[[1;36mSet^[[0m("^[[1;35mLocal/200@from-queue-00000003;2^[[0m", "^[[1;35mQAGENT=200^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [200@from-queue:2] ^[[1;36mGoto^[[0m("^[[1;35mLocal/200@from-queue-00000003;2^[[0m", "^[[1;35m,1^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Goto (from-queue,200,1)
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [200@from-queue:1] ^[[1;36mSet^[[0m("^[[1;35mLocal/200@from-queue-00000003;2^[[0m", "^[[1;35mQAGENT=200^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [201@from-queue:2] ^[[1;36mGoto^[[0m("^[[1;35mLocal/201@from-queue-00000002;2^[[0m", "^[[1;35m,1^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Goto (from-queue,201,1)
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [201@from-queue:1] ^[[1;36mSet^[[0m("^[[1;35mLocal/201@from-queue-00000002;2^[[0m", "^[[1;35mQAGENT=201^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [201@from-queue:2] ^[[1;36mGoto^[[0m("^[[1;35mLocal/201@from-queue-00000002;2^[[0m", "^[[1;35m,1^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Goto (from-queue,201,1)
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [201@from-queue:1] ^[[1;36mSet^[[0m("^[[1;35mLocal/201@from-queue-00000002;2^[[0m", "^[[1;35mQAGENT=201^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [201@from-queue:2] ^[[1;36mGoto^[[0m("^[[1;35mLocal/201@from-queue-00000002;2^[[0m", "^[[1;35m,1^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Goto (from-queue,201,1)
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [201@from-queue:1] ^[[1;36mSet^[[0m("^[[1;35mLocal/201@from-queue-00000002;2^[[0m", "^[[1;35mQAGENT=201^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [201@from-queue:2] ^[[1;36mGoto^[[0m("^[[1;35mLocal/201@from-queue-00000002;2^[[0m", "^[[1;35m,1^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Goto (from-queue,201,1)
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [201@from-queue:1] ^[[1;36mSet^[[0m("^[[1;35mLocal/201@from-queue-00000002;2^[[0m", "^[[1;35mQAGENT=201^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [201@from-queue:2] ^[[1;36mGoto^[[0m("^[[1;35mLocal/201@from-queue-00000002;2^[[0m", "^[[1;35m,1^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Goto (from-queue,201,1)
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [201@from-queue:1] ^[[1;36mSet^[[0m("^[[1;35mLocal/201@from-queue-00000002;2^[[0m", "^[[1;35mQAGENT=201^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Executing [201@from-queue:2] ^[[1;36mGoto^[[0m("^[[1;35mLocal/201@from-queue-00000002;2^[[0m", "^[[1;35m,1^[[0m") in new stack
                  ^M^[[Kpbxpruebas*CLI> ^M^[[0K -- Goto (from-queue,201,1)

                  Comentario


                  • #10
                    La salida muestra que la llamada entró a tu cola de atención, tus agentes parecen estar firmados a través de canales locales y estos se están ejecutando primero 200 y luego 201 en el contexto from-queue. Si no estan sonando tus dispositivos intenta firmar a los agentes de otro modo usando el dispositivo en lugar de el canal local. O bien verifica el dialplan que tienes en el contexto from-queue.

                    Comentario


                    • #11
                      Gracias por tu respuesta

                      la solución ya la había encontrado de esta forma

                      exten => 364,10,Goto(ext-queues,600,1)

                      saludos

                      Comentario

                      Principales Usuarios Activos

                      Colapsar

                      No hay usuarios activos superiores.
                      Trabajando...
                      X