- Manual
3 weeks 15 horas antes - Skype que permite a Asterisk
3 weeks 20 horas antes - gracias
3 weeks 5 days antes - Eso lo tenes que hacer en la
3 weeks 5 days antes - Permisos
4 weeks 11 horas antes - Mismo problema
4 weeks 17 horas antes - Consulta de Distribuidores
5 weeks 1 día antes - IAX2
5 weeks 2 days antes - duda Cisco 7911g
5 weeks 2 days antes - Enlazar dos centrales con Asterisk
5 weeks 2 days antes
Detectar Estatus de una Trunk
Posted Mayo 24th, 2010 by DarwinPeru
Hola Muchachos:
Solicito una ayuda, quizas alguno sepa lo que necesito.
Como puedo saber si una trunk esta siendo usada por otra extension antes de realizar una llamada?
a ver les explico, tengo 3 trunks, de diferentes empresas pero todos con llamadas a USA, lo que se desea es crear un contexto con el cual los tres agentes o extensiones usen las Trunks segun la disponibilidad de cada una de estas (trunks) es decir si el agente 1 hace una llamada, primero detecte si la trunk 1 esta libre, de lo contrario que use la trunk 2, o si la dos tambien ya esta en uso, entonces que use la Trunk3, y se espera que suceda lo mismo con cada una de las llamadas que realice cada Agente.
Cabe aclarar que en realidad cada Trunk tiene mas de un canal de salida, es decir que los 3 agente podrian realizar las 3 llamadas de salida por la misma trunk, pero eso es lo que NO se quiere...
Estaba pensando colocar en el dialplan, que antes de realizar la llamada, se realice una verificacion de disponibilidad de Trunk es decir, verificar si esa trunk ya esta siendo usada en una llamada, si eso sucede, entonces que la siguiente llamada se haga con otra de las Trunks libres, creí que se podria hacer con DIALSTATUS pero me parece que DIALSTATUS solo trabaja con canales de las extensiones no detecta el estado de cada Trunk, quizas no se como hacerlo exactamente. Agradecería que me puedan dar una mano...
Yo uso este codigo
exten => _XXXXXXXXXX,1,Set(COUNT=${DB(Orden/count)})
exten => _XXXXXXXXXX,n,GotoIf($[${ISNULL(${COUNT})}]?:continue)
exten => _XXXXXXXXXX,n,Set(DB(Orden/count)=1)
exten => _XXXXXXXXXX,n,Goto(1)
exten => _XXXXXXXXXX,n(continue),GotoIf($[${COUNT} >${TrunkMax}]?borrar)
exten => _XXXXXXXXXX,n,Set(GROUP()=${Trunk${COUNT}})
exten => _XXXXXXXXXX,n,GotoIf($[${GROUP_COUNT(${Trunk${COUNT}})} > 1]?siguiente)
exten => _XXXXXXXXXX,n,Macro(CallUsa,SIP/1${EXTEN})
exten => _XXXXXXXXXX,n(siguiente),Set(DB(Orden/count)=$[${COUNT} + 1])
exten => _XXXXXXXXXX,n,Goto(1)
exten => _XXXXXXXXXX,n(borrar),DBdeltree(Orden)
exten => _XXXXXXXXXX,n,Congestion()
Este codigo permite una sola llamada por cada una de ellas, pero no verifica el DIALSTATUS de cada TRUNK.
Si por alguna razón, uno de los agentes falta al trabajo, entonces solo se usaran las Trunks 1 y 2 pero la trunk 3 se quedaria sin uso, cuando lo que se desea es que se usen las tres...a pesar de que hayan menos agentes...
Y si por alguna razón hay 4 agentes la cuarta llamada no se pueda realizar ya que las 3 Trunks estan en uso.
Alguien me podria dar mas Luz sobre este tema?
Muchas gracias
Saludos
Puedes limitar tus canales mediante
call-limit=1
o con
incominglimit=1
la otra opción es que mediante un AMI ejecutes el comando show channels y leas la información buscando cuál de tus troncales SIP están siendo usadas y porque extensión mediante SIP SHOW CHANNEL $IDCHANNEL.
--
Daría todo lo que sé, por la mitad de lo que ignoro..
httP://phylevn.oaxrom.com