Foros de la comunidad Asterisk-ES
Febrero 07, 2012, 04:07:30 *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias: Cuando una cuestión esté resuelta, coméntalo en un "post" para marcarla como resuelta:
 
   Inicio   Ayuda Ingresar Registrarse  
Páginas: [1]
  Imprimir  
Autor Tema: Asterisk - transferencia de llamadas en Call Center  (Leído 3380 veces)
0 Usuarios y 2 Visitantes están viendo este tema.
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



WWW
« 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  Avergonzado

Te contaré el resultado... ojalá que me vaya bien  Sonrisa

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  Sonreir
« Última modificación: Mayo 14, 2009, 04:06:42 por shampoo82 » En línea
baguala
Nuevo
*

Karma: 0
Mensajes: 1



Email
« Respuesta #5 : Septiembre 14, 2009, 09:59:43 »

Shampoo, que tal?

Podes contar como hiciste??

SI ejecuto:

Código:
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
Páginas: [1]
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.7 | SMF © 2006-2008, Simple Machines LLC XHTML 1.0 válido! CSS válido!