Hi,
ich hab in etwa folgende Situation:
An einer Telefonanlage mit 10 Telefonen haengt ein Asterisk .
Es gibt z.B. 3 Sip Accounts, von denen jeder nur 1mal zur gleichen Zeit genutzt werden kann.
Es koennen bis zu 10 Leute gleichzeitig teleefonieren, dafuer hat die Asterisk noch mISDN-Trunks.
Nun bin ich auf der Suche nach nem generischen Macro/extension, mit der ich zunaechst alle verfuegbaren SIP-Provider abfrage und den ersten freien nehme.
Falls das nicht klappt soll der Ruf zum Schluss ueber mISDN rausgehen.
Am liebsten waere mir was voellig frei konfigurierbares so wie etwa
[globals]
SIPPROV1=1111@sipprov1
SIPPROV2=2222@sipprov2
SIPPROV3=3333@sipprov3
SIPPROV4=1111@sipprov1 (zwei accounts bei 1 sip-provider)
NUMSIPPROV=3
(spannend: es koennte gar dazu kommen das es 2 accounts beim gleichen sip-provider geben koennte)
[macro-voipout-mit-fallback]
(hat jemand nen Ansatz fuer den Code ? Kann/sollte man evtl. was mit ael2 und schleifen machen ?)
......
Ich hab insbesondere den Eindruck, das ChanIsAvail nicht so sauber funktioniert und einen Kanal als frei angibt, selbst wenn aktuel ein Call darauf statfindet und obwohl der Parameter s angegeben wurde.
Mein erster Code der erstmal nur mit 1 SIpprovider kann sieht so aus, ich hab die infos im wesentlichen hier im Forum gefunden:
[macro-voipout-fallback]
exten => s,1,NoOp(SIP/${ARG1}@sipgate-out AND mISDN/g:to-dtag)
exten => s,2,ChanIsAvail(SIP/2223333@sipgate-out&mISDN/:to-dtag,s)
exten => s,3,NoOp(verfuegbarer Kanal: ${AVAILCHAN} = ${AVAILORIGCHAN} = ${AVAILS
TATUS} )
exten => s,4,Cut(NEWCHAN=AVAILCHAN,/,1)
exten => s,5,NoOp(verfuegbarer Kanal: ${NEWCHAN})
exten => s,6,GotoIf($["${NEWCHAN}" = "SIP"]?8:7)
exten => s,7,GotoIf($["${NEWCHAN}" = "mISDN"]?15:14)
exten => s,8,NoOp(Outgoing call via SIPGATE)
exten => s,9,SetCallerID(SIPGATE-ID)
exten => s,10,SetLanguage(de)
exten => s,11,Dial(SIP/${ARG1}@sipgate-out,60,r)
exten => s,12,Congestion
exten => s,13,Busy
exten => s,14,Hangup
exten => s,15,Goto(dtagout,${ARG1},1)
[dtagout]
exten => _X.,1,Dial(mISDN/g:to-dtag/${EXTEN})
exten => _X.,2,Hangup()
Bin fuer jeden Hinweis dankbar und poste hier auch, was dabei rausgekommen ist.
ich hab in etwa folgende Situation:
An einer Telefonanlage mit 10 Telefonen haengt ein Asterisk .
Es gibt z.B. 3 Sip Accounts, von denen jeder nur 1mal zur gleichen Zeit genutzt werden kann.
Es koennen bis zu 10 Leute gleichzeitig teleefonieren, dafuer hat die Asterisk noch mISDN-Trunks.
Nun bin ich auf der Suche nach nem generischen Macro/extension, mit der ich zunaechst alle verfuegbaren SIP-Provider abfrage und den ersten freien nehme.
Falls das nicht klappt soll der Ruf zum Schluss ueber mISDN rausgehen.
Am liebsten waere mir was voellig frei konfigurierbares so wie etwa
[globals]
SIPPROV1=1111@sipprov1
SIPPROV2=2222@sipprov2
SIPPROV3=3333@sipprov3
SIPPROV4=1111@sipprov1 (zwei accounts bei 1 sip-provider)
NUMSIPPROV=3
(spannend: es koennte gar dazu kommen das es 2 accounts beim gleichen sip-provider geben koennte)
[macro-voipout-mit-fallback]
(hat jemand nen Ansatz fuer den Code ? Kann/sollte man evtl. was mit ael2 und schleifen machen ?)
......
Ich hab insbesondere den Eindruck, das ChanIsAvail nicht so sauber funktioniert und einen Kanal als frei angibt, selbst wenn aktuel ein Call darauf statfindet und obwohl der Parameter s angegeben wurde.
Mein erster Code der erstmal nur mit 1 SIpprovider kann sieht so aus, ich hab die infos im wesentlichen hier im Forum gefunden:
[macro-voipout-fallback]
exten => s,1,NoOp(SIP/${ARG1}@sipgate-out AND mISDN/g:to-dtag)
exten => s,2,ChanIsAvail(SIP/2223333@sipgate-out&mISDN/:to-dtag,s)
exten => s,3,NoOp(verfuegbarer Kanal: ${AVAILCHAN} = ${AVAILORIGCHAN} = ${AVAILS
TATUS} )
exten => s,4,Cut(NEWCHAN=AVAILCHAN,/,1)
exten => s,5,NoOp(verfuegbarer Kanal: ${NEWCHAN})
exten => s,6,GotoIf($["${NEWCHAN}" = "SIP"]?8:7)
exten => s,7,GotoIf($["${NEWCHAN}" = "mISDN"]?15:14)
exten => s,8,NoOp(Outgoing call via SIPGATE)
exten => s,9,SetCallerID(SIPGATE-ID)
exten => s,10,SetLanguage(de)
exten => s,11,Dial(SIP/${ARG1}@sipgate-out,60,r)
exten => s,12,Congestion
exten => s,13,Busy
exten => s,14,Hangup
exten => s,15,Goto(dtagout,${ARG1},1)
[dtagout]
exten => _X.,1,Dial(mISDN/g:to-dtag/${EXTEN})
exten => _X.,2,Hangup()
Bin fuer jeden Hinweis dankbar und poste hier auch, was dabei rausgekommen ist.