Hablamos que estoy usando AAH 2.8.
Desearía saber como se pueden canalizar las llamadas salientes a un
Trunk dependiendo de la extensión que la realiza, es decir, si llama
la Extensión 1 que lo saque por el Trunk 1 y si llama la Extensión 2
que la saque por el Trunk 2.
Yo lo hago de una forma muy rudimentaria y me gustaría saber si
alguien lo hace más fácil y que se pueda gestionar fácilmente desde
FreePBX.
Os cuento como lo hago:
* En el fichero "Extensions_Additional.conf", en los apartados de los
Outbounds, comento la línea 1 y cambio el número de línea de la
siguiente:
[outrt-001-Nacionales]
include => outrt-001-Nacionales-custom
;exten => _9.,1,Macro(dialout-trunk,1,${EXTEN},,) ;***La he comentado
yo
exten => _9.,5,Macro(outisbusy,) ;***El
número de línea era n
* En el fichero "Extensions_Custom.conf" agrego lo siguiente:
[outrt-001-Nacionales-custom]
exten => _9.,1,GotoIf($["${CALLERIDNUM}"="2010"]?2:3)
exten => _9.,2,Macro(dialout-trunk,2,${EXTEN},)
exten => _9.,3,GotoIf($["${CALLERIDNUM}"="2020"]?4:5)
exten => _9.,4,Macro(dialout-trunk,4,${EXTEN},)
* Donde 2 y 4 se corresponden con Trunks definidos en el FreePBX y que
aparecen en "Extensions_Additional.conf".
Claro, esto cuando son 2 extensiones, está muy bien, pero cuando son
40 extensiones y 8 rutas de salida, sale un fichero enorme.
Por favor, a ver si me podéis echar una manita.
Gracias y un saludo,
Juan García
la x de los "201x" es una extension imaginaria , he dividido por
ejemplo tus extensiones de 10 en 10 ( [2010-2019] [2020-2029]
[2030-2039] ) y a kada uno se le asigna un trunkado del 1 al 3 que es
TRUNKY, que luego al final mandamos como variable al macro dialout, si
no comprendes algo dimelo, creo que esto esta correcto , pruebalo ,
pero mi conocimiento de asterisk tampoco es muy alto que digamos, pero
espero que te sirva o ke te de alguna idea
[macro-trunky]
exten => _9.,1,Set(TRUNKY=${IF($["${CALLERIDNUM}"="2010" | "201x" |
"201x" | "201x"]?1:0"")})
exten => _9.,1,Set(TRUNKY=${IF($[ $["${TRUNKY}"="0"] &
["${CALLERIDNUM}"="2020" | "202x" | "202x" | "202x"] ]?2:0"")})
exten => _9.,1,Set(TRUNKY=${IF($[ $["${TRUNKY}"="0"] &
["${CALLERIDNUM}"="2030" | "203x" | "203x" | "203x"] ]?3:0"")})
exten => _9.,n,Macro(dialout-trunk,${TRUNKY},${EXTEN},)
exten => _9.,1,Set(TRUNKY=${IF($["${CALLERIDNUM}"="2010" | "201x" |
"201x" |"201x"]?1:0"")})
haber, esto que es la primera linea es que cuando alguna llamada
empiece por 9, con SET (es la funcion que asigna un valor a una
variable ) chekeamos, si el calleridnum (osea la extension del usuario
que esta llamando) es igual a 2010 o a 201x (aki la x me referia como
un numero del 1 al 9), entonces la variable TRUNKY pasa a ser 1 ( esto
quiere decir que su trunkado va a ser el uno ), si no TRUNKY valdra 0,
y pasa a la siguiente prioridad que es..
exten => _9.,2,Set(TRUNKY=${IF($[ $["${TRUNKY}"="0"]
&["${CALLERIDNUM}"="2020" | "202x" | "202x" | "202x"] ]?2:0"")})
esto es igual que arriba pero la primera condicion para que entre en el
IF es que TRUNKY = 0 , ( esto significa que si TRUNKY es 0 entonces es
que no estaba dentro de ninguna de las extensiones anteriores )
aki se chekea de nuevo haber si coincide, si coincide el trunkado
(variable TRUNKY) pasa a ser 2 , si no a 0
exten =>_9.,3,Set(TRUNKY=${IF($[ $["${TRUNKY}"="0"] &
["${CALLERIDNUM}"="2030" | "203x" | "203x" | "203x"] ]?3:0"")})
lo mismo que la anterior pero esta vez el trunkado pasa a ser 3 si no
exten =>_9.,n,Macro(dialout-trunk,${TRUNKY},${EXTEN},)
exto significa que por fin al final (prioridad n) se llamara a la
extension y depende de que TRUNKY lo hara por un trunkado o otro. si no
es ninguna extenion recojida el trunkado sera el 0 (que te recomiendo
que sea el de por defecto, para todos los usuarios no controlados
mediante este sistema)
ahora te voy ha hacer un ejemplo, pongamos que tienes 12 extensiones
ordenadas dentro de tres grupos de extensiones
(OFICINA,COMERCIALES,TECNICOS), y el JEFE
OFICINA = estan las extensiones 011,012,013 y su trunkado es 1
COMERCIALES = estan las extensiones 111,112,113 y su trunkado es 2
TECNICOS = estan las extensiones 211,212,213,214,215 y su trunkado es 3
JEFE = 400 y su trunkado es 0 que le permite llamar a todo
gratuitamente o lo ke kiera
el macro-trunky sera este
-------------------------------------------------------------------------------------------------------------------------------------------
[macro-trunky]
exten => _9.,1,Set(TRUNKY=${IF($["${CALLERIDNUM}"="011" | "012" |
"013"?1:0"")})
exten => _9.,2,Set(TRUNKY=${IF($[ $["${TRUNKY}"="0"]
&["${CALLERIDNUM}"="111" | "112" | "113"] ]?2:0"")})
exten =>_9.,3,Set(TRUNKY=${IF($[ $["${TRUNKY}"="0"] &
["${CALLERIDNUM}"="211" |"212" | "213"
|"214" | "215" ] ]?3:0"")})
exten =>_9.,n,Macro(dialout-trunk,${TRUNKY},${EXTEN},)
-------------------------------------------------------------------------------------------------------------------------------------------
ahora la explicacion, lo primero que pasara es que cuando marquen
cualquier numero que empieze por 9 , pasara por la prioridad 1, si la
llamada es echa por la extension "011" , "012" o "013", TRUNKY pasara a
valer 1 (que es el trunkado de esas extensiones ), si no 0,
en la prioridad 2 , chekea primero que TRUNKY sea 0 (osea que no sea la
011, ni la 012, ni la 013 ) y que sea la "111", "112" o "113", si es
correcto TRUNKY toma el valor de 2 (que es el trunkado de estas
extensiones )si no TRUNKY sigue valiendo 0.
en la prioridad 3 hace lo mismo que en lass anteriores , pero
comprobando que las extensiones sean "211", "212", "213", "214" o "215"
, y entonces TRUNKY pasara a valer 3 (que es el trunkado de esas
extensiones),si no 0,
y asi sucesivamente con todos los grupos de extensiones que tengas y
por ultimo las que no pertenezcan a ningun grupo , su TRUNKY (su
trunkado) pasara a valer 0 , como por ejemplo el jefe,
al final se llamara al macro dialout-trunk, y se le pasara por
trunkado, (2º parametro) la variable TRUNKY, que dependiendo de que
extension este llamando tendra un valor o otro.
Mira, en Extensions_custom.conf he puesto esto:
[outrt-002-Moviles-custom]
exten => _6.,1,setvar(PEPE6 = ${CALLERIDNUM})
exten => _6.,2,Noop(${CALLERIDNUM})
exten => _6.,3,Set(TRUNKY=${IF($["${CALLERIDNUM}"="2010" | "2011" | "2012" |
"2013" | "2014"]?2:0)})
exten => _6.,4,Set(TRUNKY=${IF($["${CALLERIDNUM}"="2020" | "2021" | "2022" |
"2023" | "2024" | "2025" | "2040"]?6:0)})
exten => _6.,5,Macro(dialout-trunk,${TRUNKY},${EXTEN},)
La salida que me da es la siguiente:
-- Executing SetVar("SIP/2025-6c6b", "PEPE6 = 2025") in new stack
-- Executing NoOp("SIP/2025-6c6b", "2025") in new stack
-- Executing Set("SIP/2025-6c6b", "TRUNKY=0") in new stack
-- Executing Set("SIP/2025-6c6b", "TRUNKY=0") in new stack
-- Executing Macro("SIP/2025-6c6b", "dialout-trunk|0|607965205|") in new
stack
Es decir, TRUNKY lo pone siempre a 0 y no hay salida, ya que el trunk 0 no
lo tengo definido.
He visto otra cosa, y es que solo valida las Extensiones que se ponen
primero en la lista, en este caso, 2010 y 2020, cualquiera de las restantes,
no las tiene en cuenta.
Más cositas. Cuando estoy en la 2010, TRUNKY me lo pone a 2, es decir,
estaría correcto, el tema es que a continuación ejecuta la siguiente línea,
y como no matchea con la 2020, TRUNKY lo pone a 0, por lo tanto, sigue sin
funcionar.
Sí funciona, si: Me conecto con la 2020, en la primera línea, como no
matchea, TRUNKY lo pone a 0. En la segunda línea, como matchea con la 2020,
TRUNKY lo pone a 6 y sale. Pero si me conecto con cualquiera de las otras
202x, TRUNKY lo pone a 0.
Please, una manita que tú dominas más el tema.
Un saludo,
Juan García
-----Mensaje original-----
De: aster...@googlegroups.com [mailto:aster...@googlegroups.com] En
nombre de ruben...@gmail.com
Enviado el: viernes, 14 de julio de 2006 12:52
Para: asterisk-es
Asunto: [Asterisk-ES] Re: Enrutar llamadas a un Trunk según la Extensión que
las hace.