2015-07-02 17 views
10

Sto usando sagoma 8 carta di porto mio chan_dahdi.conf per configurare le porte sonoottenere il nome del gruppo al porto pri accoding a asterisco

;autogenerated by /usr/sbin/wancfg_dahdi do not hand edit 
;autogenrated on 2015-06-12 
;Dahdi Channels Configurations 
;For detailed Dahdi options, view /etc/asterisk/chan_dahdi.conf.bak 

[trunkgroups] 

[channels] 
context=default 
usecallerid=yes 
hidecallerid=no 
callwaiting=yes 
usecallingpres=yes 
callwaitingcallerid=yes 
threewaycalling=yes 
transfer=yes 
canpark=yes 
cancallforward=yes 
callreturn=yes 
echocancel=yes 
echocancelwhenbridged=yes 
relaxdtmf=yes 
rxgain=0.0 
txgain=0.0 
group=1 
callgroup=1 
pickupgroup=1 
immediate=no 

;Sangoma A108 port 1 [slot:4 bus:2 span:1] <wanpipe1> 
switchtype=euroisdn 
context=from-pstn 
group=1 
echocancel=yes 
signalling=pri_cpe 
channel =>1-15,17-31 

;Sangoma A108 port 2 [slot:4 bus:2 span:2] <wanpipe2> 
switchtype=euroisdn 
context=from-pstn 
group=2 
echocancel=yes 
signalling=pri_cpe 
channel =>32-46,48-62 

;Sangoma A108 port 3 [slot:4 bus:2 span:3] <wanpipe3> 
switchtype=euroisdn 
context=from-pstn 
group=3 
echocancel=yes 
signalling=pri_cpe 
channel =>63-77,79-93 

;Sangoma A108 port 4 [slot:4 bus:2 span:4] <wanpipe4> 
switchtype=euroisdn 
context=from-pstn 
group=4 
echocancel=yes 
signalling=pri_cpe 
channel =>94-108,110-124 

;Sangoma A108 port 5 [slot:4 bus:2 span:5] <wanpipe5> 
switchtype=euroisdn 
context=from-pstn 
group=5 
echocancel=yes 
signalling=pri_cpe 
channel =>125-139,141-155 

;Sangoma A108 port 6 [slot:4 bus:2 span:6] <wanpipe6> 
switchtype=euroisdn 
context=from-pstn 
group=6 
echocancel=yes 
signalling=pri_cpe 
channel =>156-170,172-186 

;Sangoma A108 port 7 [slot:4 bus:2 span:7] <wanpipe7> 
switchtype=euroisdn 
context=from-pstn 
group=7 
echocancel=yes 
signalling=pri_cpe 
channel =>187-201,203-217 

;Sangoma A108 port 8 [slot:4 bus:2 span:8] <wanpipe8> 
switchtype=euroisdn 
context=from-pstn 
group=8 
echocancel=yes 
signalling=pri_cpe 
channel =>218-232,234-248 

Il mio problema è come posso ottenere il numero del gruppo di porta chiamando corrente in modo dinamico nel mio dialplan.

Per esempio, se chiamata dell'utente al PRI, che si trova a Port 1, quindi la mia affermazione quadrante è

exten => _X.,n,dial(DAHDI/g1/${NUMBER}) 

E per la chiamata in seconda porta PRI 2

exten => _X.,n,dial(DAHDI/g2/${NUMBER}) 

G3, G4, G5 ecc. per altre porte al fine di impostare quel particolare DID

Correntemente quello che sto facendo quando arriva la chiamata creo una variabile GROUP che memorizza il gruppo controllando l'intervallo DID

same => n,Set(__GROUP=${IF($[ ${EXTEN} >= ${DIDMINPORT1}]? ${IF($[ ${EXTEN} <= ${DIDMAXPORT1}]?g1:g1)} :g1)}) 
same => n,Set(__GROUP=${IF($[ ${EXTEN} >= ${DIDMINPORT2}]? ${IF($[ ${EXTEN} <= ${DIDMINPORT2}]?g2: ${GROUP})} : ${GROUP})}) 

e ecc per altri gruppi, per la composizione che faccio

exten => _X.,n,dial(DAHDI/${GROUP}/${NUMBER}) 

Ma non penso proprio una buona idea, perché ho a 8 porte così devo scrivere 8 linee per determinare il gruppo e comporre facendo corrispondere il DID.So c'è un modo per ottenere dinamicamente un gruppo nel mio dialplan significa se esiste una variabile di canale da cui posso ottenere il gruppo di chiamate in entrata attuali?

risposta

6

Come so che non esistono variabili di questo tipo per i gruppi DAHDI.

Nel tuo chan_dahdi.conf usi la stessa opzione "contesto = da-pstn", quindi puoi facilmente impostare "contesto = pri-g1" per il gruppo 1 ("contesto = pri-g2" per il gruppo 2 ed ecc.) e poi definire in qualcosa di simile dialplan:

[pri-main] 
exten => s,1,NoOp(Main routine) 

[pri-g1] 
exten => s,1,Set(PRI_GROUP=1) 
exten => s,n,GoTo(pri-main,s,1) 

[pri-g2] 
exten => s,1,Set(PRI_GROUP=2) 
exten => s,n,GoTo(pri-main,s,1) 

... 

[pri-g8] 
exten => s,1,Set(PRI_GROUP=8) 
exten => s,n,GoTo(pri-main,s,1) 

non è più comodo per l'insediamento come se ci fossero variabili di canale, ma veloce per asterisco.

Basta notare che in [pri-g #] exten potrebbe non essere "s", ma numero DID o smth altro - ma lo vedrete molto presto negli errori CLI.

0

In occasione trovato solo quello che vuoi - è possibile impostare le variabili in chan_dahdi.conf così:

[channels] 
... 
group=1 
setvar=__GROUP=1 
... 

group=2 
setvar=__GROUP=2 
... 

(and so on) 

Dopo questo è possibile utilizzare il dialplan dalla domanda.