shampoo82
Nuevo
Karma: 0
Mensajes: 3
|
 |
« : Mayo 12, 2009, 09:21:20 » |
|
Hola a todos :-) ,
Soy novata en esto de Asterisk y tengo un problema que me ha estancado varias horas, ojalá alguien pueda darme una mano...
Tengo un call center el cual en su interfaz grafica tiene un tcelado(simulando el teclado del telefono), entonces estoy tratando de hacer "Transferencias Atendidas" (como han de saber que antes de pasar la llamada el ente A se comunica con el B para ver si éste quiere hablar con C) ok, se que para esto se usa "*2ext" y que esto viene definido en el features.conf (/etc/asterisk) así: atxfer => *2 Ok esto lo tengo aparentemente bien, es más, cuando hago las transferencias sisicamente con un telefono normal si funciona correctamente, el problema es con la interface web q les comento, veran; yo estoy usando la funcion "Redirect" de ASterisk , en la cual x ejemplo estoy tratando de transferir la llamada a la extensión "402" (una extension q funciona correctamente), y mi linea de codigo php esta asi:
$res = $astman->Redirect($channel, "", $extension, "from-internal", "1");
donde: $channel = es el canal del cliente por ejemplo tengo un canal asi "IAX2/aprueba160-10419" $extension = es la extension a la que quiero hacer la transferencia, estoy ingresandola por el teclado de mi interface web asi : *2402 (el *2 es x q esto se usa para la atendida) "from-internal" = es el conetxto
Ok, en una consola puse "asterisk -r" para ver loq sucedia y me salió esto :
== Parsing '/etc/asterisk/manager.conf': Found == Parsing '/etc/asterisk/manager_additional.conf': Found == Parsing '/etc/asterisk/manager_custom.conf': Found == Manager 'admin' logged on from 127.0.0.1 == Manager 'admin' logged off from 127.0.0.1 == Parsing '/etc/asterisk/manager.conf': Found == Parsing '/etc/asterisk/manager_additional.conf': Found == Parsing '/etc/asterisk/manager_custom.conf': Found == Manager 'admin' logged on from 127.0.0.1 -- Started music on hold, class 'default', on SIP/102-099dd5d0 == Spawn extension (from-internal, *2402, 0) exited non-zero on 'IAX2/aprueba160-10419' -- Sent into invalid extension '*2402' in context 'from-internal' on IAX2/aprueba160-10419 -- Executing [i@from-internal:1] Playback("IAX2/aprueba160-10419", "privacy-incorrect") in new stack -- <IAX2/aprueba160-10419> Playing 'privacy-incorrect' (language 'en') == Manager 'admin' logged off from 127.0.0.1 -- Call accepted by 192.168.1.160 (format ulaw) -- Format for call is ulaw
Y otras lineas más abajo, pero éstas son las que me muestran cuando sale el error "Sent into invalid extension '*2402' in context 'from-internal' on IAX2/aprueba160-10419"
LLevo horas dando vueltas y no logro encontrar la solución, les agradecería enormemente que alguien me ayude, estoy completamente perdida, por favor tiendanme una manito :si:
Estaré pendiente de sus respuestas.... Gracias de antemano a todos
|
|
|
|
|
En línea
|
|
|
|
Elio
dCap
Nuevo
Karma: 0
Mensajes: 48
|
 |
« Respuesta #1 : Mayo 12, 2009, 02:39:27 » |
|
Para hacer una transferencia atendida se utiliza el *2 para que salga la locución solicitándote la extensión. Luego tu marcas una extensión (por ejemplo, la 402) y Asterisk ejecuta la extensión 402@from-internal.
Si dicha transferencia la haces mediante un AGI en PHP marcando *2XXX, realmente necesitas que ese AGI llame a la 402, no al *2402.
Así que prueba a modificar la variable $channel para eliminar el *2 y que solo contenga el 402, el Redirect ya se ocupa de ponerte en contacto y hacer la transferencia.
|
|
|
|
|
En línea
|
|
|
|
shampoo82
Nuevo
Karma: 0
Mensajes: 3
|
 |
« Respuesta #2 : Mayo 12, 2009, 03:47:36 » |
|
Hola antes q nada muchas gracias por responder!
Tambien hice esa prueba que me dices, es decir :
$res = $astman->Redirect($channel, "", $extension, "from-internal", "1");
donde $extension = 402 (puro, sin signos)
Pero el resultado de esto es q si la transfiere pero me la pasa directamente, es decir no me pemite a mi que estoy transfiriendola que yo hable primero con la ext 402 para ver si ésta quiere o no q pase la llamada, recureda q de eso se trata la transferencia atendida...
Es decir se está haciendo la trasnferencia pero "ciega".... que opinas? que puede ser? o q estaré haciendo mal?
|
|
|
|
|
En línea
|
|
|
|
Elio Rojano
Administrator
Nuevo
   
Karma: 0
Mensajes: 24
|
 |
« Respuesta #3 : Mayo 13, 2009, 01:51:04 » |
|
No, es justamente lo que tiene que hacer, el Redirect "redirige" un canal hacia otro sin preguntar.
Hay varias posibilidades, entre ellas, en el 'features.conf' cambiar el *2 por algo más "manejable" como el '#' y la transferencia ciega '#' por algo menos práctico como *2, así puedes hacer transferencias atendidas con la # en lugar de con *2.
Otra posibilidad es programar un "applicationmap" en el features.conf y que cuando pulses una tecla "durante una conversación", por ejemplo el '2', se ejecute la aplicación SendDTMF y cómo parámetro "*2" de manera que cuando pulses 2, el sistema marque los DTMF * y 2.
Otra posibilidad es programar tu propio sistema de transferencia con las opciones del Dial, Macros y demás... es un poco más complicado pero a alguien ya le ví que lo llegó a hacer, por lo que es posible.
|
|
|
|
|
En línea
|
|
|
|
shampoo82
Nuevo
Karma: 0
Mensajes: 3
|
 |
« Respuesta #4 : Mayo 13, 2009, 08:15:12 » |
|
Muchas gracias por tus recomendaciones, voya intentar hacer lo que me dices, ojalá me salga por que suena complicadito  Te contaré el resultado... ojalá que me vaya bien  Gracias de antemano Post Merge: Mayo 14, 2009, 04:06:42
Hola! Les cuento que ya logré hacer las transferencias atendidas, tal como me sugeriste lo de DTMF se me ocurrió probralo con la función PlayDTMF, ésta me funcionó de maravilla, al principio tuve problemas por que no detectaba los digitos marcados pero le apliqué una espera con un usleep(500000) , cabe recalcar que el numero que marco lo puse dentro del lazo para enviar uno a uno los digitos al PlayDTMF ya que así los reconoce... Bien tarea cumplida ahora ya tengo funcionando esto, muchas gracias por el aporte 
|
|
|
|
« Última modificación: Mayo 14, 2009, 04:06:42 por shampoo82 »
|
En línea
|
|
|
|
baguala
Nuevo
Karma: 0
Mensajes: 1
|
 |
« Respuesta #5 : Septiembre 14, 2009, 09:59:43 » |
|
Shampoo, que tal? Podes contar como hiciste?? SI ejecuto: fputs($oSocket, "Action: login\r\n"); fputs($oSocket, "Username: $user_asterisk\r\n"); fputs($oSocket, "Secret: $pass_asterisk\r\n\r\n"); fputs($oSocket, "Action: PlayDTMF\r\n"); fputs($oSocket, "Channel: $canal\r\n"); fputs($oSocket, "Digit: #\r\n\r\n"); usleep(500000); fputs($oSocket, "Action: Logoff\r\n\r\n"); Escucho que se digita un numero, sin embargo no hace nada, mientras que si desde el softphone digito # me reproduce Transfer.gsm y me deja hacer la transferencia...
|
|
|
|
|
En línea
|
|
|
|
|