FOP2: La variable ${BLINDTRANSFER} llega vacía

  1. 3 years ago

    Hola,

    He visto que hace dos años una persona escribió al foro con un problema similar al que yo mismo tengo ahora, el título del hilo era este: "No ${BLINDTRANSFER} set "

    Mi FOP2 es este: FOP2 - Version 2.30.04 - Licensed to Vigartel SL
    Trabajo con Asterisk 13 y CentOs 6.6

    En la empresa donde estoy todas las transferencias son ciegas, por lo tanto cuando se transfiere a una extensión donde nadie atiende lo que sucede es que al agotarse el tiempo límite para esa extensión, la llamada se dirige por defecto al buzón de voz de la extensión y sino estuviera activado, la llamada se corta sin mas con el subsiguiente cabreo de quien llamó; también puedo hacer que la llamada se quede sonando eternamente en la extensión o que salte a otro sitio, pero lo que yo quiero hacer es que la llamada regrese a quien la ha transferido ....

    Para ello me hice un pequeño dialplan que pasada cierta cantidad de segundos sin que nadie atienda, el sistema lee la variable ${BLINDTRANSFER} y de allí saca quien fue el que ha transferido para poder devolver la llamada a esa persona.

    Pues bien, cuando transfiero con un teléfono SIP, funciona bien y hace lo que quiero que haga, pero cuando transfiero con el FOP2, la variable ${BLINDTRANSFER} me viene vacía, con lo cual no puedo saber quien ha sido el que ha transferido la llamada y me es imposible devolverla sin ese dato.

    He visto en el hilo anterior que le sugeríais tocar el FOP2Callbacks.pm , lo he intentado pero la verdad es que no me entero mucho y no he logrado nada.

    Podéis ayudarme con esto ?

    Gracias !!!!

  2. admin

    9 Mar 2016 Administrator

    La transferencia a ciegas desde FOP2 se hace con el comando AMI "Redirect", por lo tanto no va a generarse ninguna variable de ese tipo en el dialplan, ya que no es un teléfono SIP que inicia una transferencia.... no te puedo dar la receta de la solución, pero lo que haría en tu lugar sería hacer un DumpChan en la extensión de destino de la transferencia, luego intentar dicha transferencia desde el FOP2 y revisar las variables seteadas del canal, y compararlas con variables seteadas cuando transfieres desde el teléfono, luego tratar de encontrar alguna variable particular o única del Redirect del FOP2 y modificar tu dialplan de forma acorde, usando dicha variable y no BLINDTRANSFER que no va a estar seteada...

  3. Gracias Nicolás !

    En cuanto pueda voy a hacer pruebas y si doy con la solución la pondré aquí para quien la necesite.

  4. Edited 3 years ago by Roberto

    Escribo solo para información, no hace falta que me respondas

    He revisado las variables con DumpChan y veo que cuando transfiero con FOP2 en ninguna me sale quien ha sido el que ha transferido así que no tengo por donde agarrarlo ....

    Lo que hago es lo siguiente: La extensión 105 llama a la 112 y ésta última hace una transferencia ciega de la extensión 105 a la extensión 100, la idea es que si la extensión 100 no coge la llamada, vuelva a la extensión 112 que fue quien hizo la transferencia.

    Transferencia con teléfono SIP (Variables)

    Variables:
    DIALSTATUS=NOANSWER
    DIALEDTIME=
    ANSWEREDTIME=
    DIALEDPEERNAME=
    DIALEDPEERNUMBER=
    SIPDOMAIN=192.168.200.244
    SIPTRANSFER_REFERER=<sip:112@192.168.200.244>
    SIPTRANSFER=yes
    BLINDTRANSFER=SIP/112-000004dc
    SIPREFERREDBYHDR=<sip:112@192.168.200.244>
    SIPREFERRINGCONTEXT=from-internal
    SIPADDHEADER04=
    SIPADDHEADER03=
    SIPADDHEADER02=
    SIPADDHEADER01=
    SIPCALLID=2975960790@192_168_200_105
    SIPURI=sip:105@192.168.200.105:5060

    Transferencia con panel FOP2 (Variables)

    Variables:
    DIALSTATUS=NOANSWER
    DIALEDTIME=
    ANSWEREDTIME=
    DIALEDPEERNAME=
    DIALEDPEERNUMBER=
    SIPADDHEADER04=
    SIPADDHEADER03=
    SIPADDHEADER02=
    SIPADDHEADER01=
    SIPCALLID=2893482195@192_168_200_105
    SIPDOMAIN=192.168.200.244
    SIPURI=sip:105@192.168.200.105:5060

    Como escribí antes, esto lo dejo a modo informativo, de momento le he dicho al operador que si quiere hacer transferencias ciegas lo haga con el teléfono porque sino la llamada no vuelve y eso es lo que hay así que dejo este tema aquí, gracias por la ayuda !!

  5. I am not sure if this will help or not, but this is how we got around the blind transfer button in FOP2 passing blank information. We are applying this to a ring group.

    exten => 305,1,Set(RETURN_DIAL=${DIALEDPEERNAME}) ->Need to retain the DIALEDPEERNAME as another variable before the blind transfer occurs
    same => n,Dial(${WARR_GRP},20,trw)
    same => n,GotoIf($[${LEN(${RETURN_DIAL})}>0]?RETURN)
    same => n,Hangup
    same => n(RETURN),Log(NOTICE,Returning to transferrer)
    same => n,Set(CALLERID(name)=${IF($[${DIALSTATUS}= NOANSWER]?Transfer Not Answered)})
    same => n,Set(CALLERID(name)=${IF($[${DIALSTATUS}= BUSY]?Transferee was BUSY:Transfer Failed)})
    same => n,Dial(${RETURN_DIAL:0:$[${LEN(${RETURN_DIAL})}-9]})
    same => n,Hangup()

  6. Edited 3 years ago by Roberto

    Thank you dwill993 !!!!

    This is my old dialplan, very similar to yours ....

    exten => _4[1235-9]XX,1,Dial(SIP/${EXTEN},30,t)
    same => n,NoOp("Llamada en el Dialplan correcto")
    same => n,NoOp(${BLINDTRANSFER})
    same => n,GotoIf($[${LEN(${BLINDTRANSFER})}>0]?RETURN)
    same => n,Hangup
    same => n(RETURN),Log(NOTICE,Devolviendo llamada al que ha transferido)
    same => n,Set(CALLERID(name)=${IF($[${DIALSTATUS}= NOANSWER]?Transferencia no contestada)})
    same => n,Set(CALLERID(name)=${IF($[${DIALSTATUS}= BUSY]?El transferido comunica:Transferencia no contestada)})
    same => n,Dial(${BLINDTRANSFER:0:$[${LEN(${BLINDTRANSFER})}-9]})
    same => n,Hangup()

    I understand your dialplan but my doubt, reading it, is: how do you know if a blind transfer takes place ?

    In mine, i know because if is not takes place, ${BLINDTRANSFER} is empty, but in yours ?, what values takes the ${DIALEDPEERNAME} variable in the case you have a blind transfer and in the case you have not ?

    Anyway, i did not test your diaplan yet, only is a doubt ....

  7. 2 years ago

    Hello,

    Sorry I do not check this forum frequently.

    In our specific case we did not care how the call was transferred (blind or not). We always wanted it to return to the ${DIALEDPEERNAME} if the person did not answer. DIALEDPEERNAME is always filled with the extension of who started a transfer to 305

  8. admin

    29 Dec 2016 Administrator

    Since FOP 2.31.06, if you use Asterisk 13, the manager action for blind transfers is actually "blindtransfer". That should take care of populating internal variables of such command (instead of using the original and old "redirect" method.

or Sign Up to reply!