GROUP_COUNT mit LCR

mario2006

Mitglied
Mitglied seit
25 Nov 2006
Beiträge
294
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

vor kurzen hatte ich mir ein einfaches GROUP_COUNT mit Kombjuders Hile einrichten können.

Nun habe ich aber noch ein LCR eingebaut und es wird kompliziert. Es gibt 4 Provider 1xSipgate mit flat 2xVoipcheap + 1 mal Budgetsip.

Wenn z.B. nach Russland telefoniert wird, wird im context 1 Kanal hoch gezählt. Ruft jemand zur gleichen Zeit in Amerika an, wird in den context "voipcheap_ru2" gesprungen. Bis daher alles richtig. Was passiert wenn nun jemand gleichzeitig eine dt. Nummer wählt? Dann springt er nach:
exten => _XXXX., und versucht über sipagte raus zu telefonieren. Aber GROUP_COUNT erkennt, daß unter "context" schon zwei channels belegt sind,
es passiert also nichts.

Ist es beser das ganze über GOTO Anweisungen zu lösen?

Was meint Ihr? Das ganze war noch einfach, als noch keine LCR eingebaut war.

hier meine extensions.conf

Code:
[context]

; nach Amerika
exten => _001XX.,1,Set(GROUP()=context) 
exten => _001XX.,2,GotoIf($["${GROUP_COUNT(context)}">"1"]?5:3)
exten => _001XX.,3,Dial(SIP/${EXTEN}@voipcheap1,30,trg)
exten => _001XX.,4,Hangup
exten => _001XX.,5,Goto(voipcheap_ru2,${EXTEN},1)

;nach Russland
exten => _007X.,1,Set(GROUP()=context) 
exten => _007X.,2,GotoIf($["${GROUP_COUNT(context)}">"1"]?5:3)
exten => _007X.,3,Dial(SIP/${EXTEN}@voipcheap1,30,trg)
exten => _007X.,4,Hangup
exten => _007X.,5,Goto(voipcheap_ru2,${EXTEN},1)

;nach Türkei
exten => _0090X.,1,Set(GROUP()=context) 
exten => _0090X.,2,GotoIf($["${GROUP_COUNT(context)}">"1"]?5:3)
exten => _0090X.,3,Dial(SIP/${EXTEN}@budgetsip,30,trg)
exten => _0090X.,4,Hangup
exten => _0090X.,5,Goto(voipcheap_ru1,${EXTEN},1)

exten => _XXXX.,1,Set(GROUP()=context)
exten => _XXXX.,2,GotoIf($["${GROUP_COUNT(context)}">"2"]?5:3)
exten => _XXXX.,3,Dial(SIP/${EXTEN}@sipgate,30,trg)
exten => _XXXX.,4,Hangup
exten => _XXXX.,5,Goto(voipcheap_ru1,${EXTEN},1)

[voipcheap_ru1]
exten => _XXXX.,1,Set(GROUP()=voipcheap_ru1) 
exten => _XXXX.,2,GotoIf($["${GROUP_COUNT(voipcheap1)}">"1"]?5:3)
exten => _XXXX.,3,Dial(SIP/${EXTEN}@voipcheap1,30,trg)
exten => _XXXX.,4,Hangup
exten => _XXXX.,5,Goto(voipcheap_ru2,${EXTEN},1) 

[voipcheap_ru2]

exten => _XXXX.,1,Set(CALLERID(number)=0)
exten => _XXXX.,2,SetCallerPres(allowed)
exten => _XXXX.,3,Dial(SIP/${EXTEN}@voipcheap2,30,trg)
exten => _XXXX.,4,Hangup
 
; nach Amerika
exten => _001XX.,1,Set(GROUP()=context)
exten => _001XX.,2,GotoIf($["${GROUP_COUNT(context)}">"1"]?5:3)
exten => _001XX.,3,Dial(SIP/${EXTEN}@voipcheap1,30,trg)

Du hast da was falsch verstanden:

exten => _001XX.,1,Set(GROUP()=voipcheap1) wäre in dem Beispiel richtig.
exten => _001XX.,2,GotoIf($["${GROUP_COUNT(voipcheap1)}">"1"]?5:3)

Du musst statt context einen Namen für deine Linie reinschreiben. Damit wird geprüft, ob bei diesem Provider noch eine Linie frei ist, wenn ja wird dieser Provider benutzt, sonst wird im entsprechenden Kontext nachgeschaut, welcher andere Provider für diese Ziel noch eine Linie frei hat.

Mit ">"1" stellst du die Anzahl der Linien dieses Providers ein. In dem Fall eine Linie.
 
Hi Kombjuder,

ich werde es in den nächsten Tagen umstellen und posten. Ich glaube ich habe es jetzt gepeilt.


Viele Grüße
Mario
 
Hallo Kombjuder,

anbei. Was meinst Du?

Grüße
Mario

[Edit foschi: und wieder einer mit über 100 Posts, der das quote-tag mit dem code-tag verwechselt...]

Code:
exten => _001XX.,1,Set(GROUP()=voipcheap_ru1) 
exten => _001XX.,2,GotoIf($["${GROUP_COUNT(voipcheap_ru1)}">"1"]?5:3)
exten => _001XX.,3,Dial(SIP/${EXTEN}@voipcheap_meruss11,30,trg)
exten => _001XX.,4,Hangup
exten => _001XX.,5,Goto(voipcheap_ru2,${EXTEN},1)

exten => _007X.,1,Set(GROUP()=voipcheap_ru1) 
exten => _007X.,2,GotoIf($["${GROUP_COUNT(voipcheap_ru1)}">"1"]?5:3)
exten => _007X.,3,Dial(SIP/${EXTEN}@voipcheap_meruss11,30,trg)
exten => _007X.,4,Hangup
exten => _007X.,5,Goto(voipcheap_ru2,${EXTEN},1)

exten => _0090X.,1,Set(GROUP()=voipcheap_ru3); türkei
exten => _0090X.,2,GotoIf($["${GROUP_COUNT(voipcheap_ru3)}">"1"]?5:3)
exten => _0090X.,2,SetCallerPres(allowed)
exten => _0090X.,3,Dial(SIP/${EXTEN}@voipcheap_meruss33,30,trg)
exten => _0090X.,4,Hangup
exten => _0090X.,5,Goto(voipcheap_ru1,${EXTEN},1)

exten => _XXXX.,1,Set(CALLERID(number)=0)
exten => _XXXX.,2,SetCallerPres(allowed)
exten => _XXXX.,3,Dial(SIP/${EXTEN}@sipout_merus,30,trg)
exten => _XXXX.,4,Hangup

[voipcheap_ru1]
exten => _XXXX.,1,Set(GROUP()=voipcheap_ru1) 
exten => _XXXX.,2,GotoIf($["${GROUP_COUNT(voipcheap_ru1)}">"1"]?5:3)
exten => _XXXX.,3,Dial(SIP/${EXTEN}@voipcheap_meruss11,30,trg)
exten => _XXXX.,4,Hangup
exten => _XXXX.,5,Goto(voipcheap_ru2,${EXTEN},1) 

[voipcheap_ru2]

exten => _XXXX.,1,Set(GROUP()=voipcheap_ru2) 
exten => _XXXX.,2,GotoIf($["${GROUP_COUNT(voipcheap_ru2)}">"1"]?5:3)
exten => _XXXX.,3,Dial(SIP/${EXTEN}@voipcheap_meruss22,30,trg)
exten => _XXXX.,4,Hangup
exten => _XXXX.,5,Goto(voipcheap_ru3,${EXTEN},1)

[voipcheap_ru3]

exten => _XXXX.,1,Set(GROUP()=voipcheap_ru3) 
exten => _XXXX.,2,GotoIf($["${GROUP_COUNT(voipcheap_ru3)}">"1"]?5:3)
exten => _XXXX.,3,Dial(SIP/${EXTEN}@voipcheap_meruss33,30,trg)
exten => _XXXX.,4,Hangup
exten => _XXXX.,5,Goto(voipcheap_ru1,${EXTEN},1)

[sipgate_ru4]

exten => _XXXX.,1,Set(GROUP()=sipgate_ru4) 
exten => _XXXX.,2,GotoIf($["${GROUP_COUNT(sipgate_ru4)}">"2"]?5:3)
exten => _XXXX.,3,Dial(SIP/${EXTEN}@sipout_merus,30,trg)
exten => _XXXX.,4,Hangup
exten => _XXXX.,5,Goto(voipcheap_ru1,${EXTEN},1)
 
Nenn einfach mal deine Provider, ich vermute, das ist noch nicht richtig.

voipcheap_meruss11 Voicheap account 1
voipcheap_meruss22 Voicheap account 2
voipcheap_meruss33 Budgetsip account 1
sipout_merus Sipgate


Das ist die contexte in der sip.conf.

voipcheap_meruss11
voipcheap_meruss22
voipcheap_meruss33
sipout_merus

Vielen dank
Mario
 
Das ist die contexte in der sip.conf.

voipcheap_meruss11
voipcheap_meruss22
voipcheap_meruss33
sipout_merus

Also Mario,

Du legst dir einen Kontext routing (oder ein anderer Name der dir besser gefällt) an.
Dort steht dann nur

[routing]
exten => _001XX.,1,Goto(voipcheap_ru1,${EXTEN},1)
exten => _007XX.,1,Goto(voipcheap_ru1,${EXTEN},1)
und so weiter.

Die letzte Zeile von voipcheap_ru1 und den anderen Kontexten änderst du in
exten => _XXXX.,5,Goto(belegt,${EXTEN},1)

in [belegt steht dann
Code:
exten => _001.,1,GotoIf($["${GROUP_COUNT(voipcheap_ru2)}">"1"]?3:2)
exten => _001.,2,Goto(voipcheap_ru2,${EXTEN},1)
exten => _001.,3,GotoIf($["${GROUP_COUNT(voipcheap_ru3)}">"1"]?5:4)
exten => _001.,4,Goto(voipcheap_ru3,${EXTEN},1)
exten => _001.,5,GotoIf($["${GROUP_COUNT(sipgate_ru4)}">"1"]?7:6)
exten => _001.,6,Goto(sipgate_ru4,${EXTEN},1)
exten => _001.,7,GotoIf($["${GROUP_COUNT(voipcheap_ru1)}">"1"]?9:8)
exten => _001.,8,Goto(voipcheap_ru1,${EXTEN},1)
exten => _001.,9,Playtones(busy)
exten => _001.,n,Hangup

Die selben 10 Zeilen für Russland und alle anderen Ziele für die du eine oder mehrere Linien brauchst.
Sipgate macht z.B mehr als nur zwei Gespräche, das kannst du also hochsetzen, angeblich machen auch die Betamaxe 2 Gespräche, das habe ich aber noch nicht versucht.

Wobei du das natürlich in der Reihenfolge ändern kannst, oder Zeilen weglassen/hinzufügen kannst.

Es bietet sich an, bei einem Land, dass über Budgetsip kostenlos ist, aber über voipcheap nicht, erst Budgetsip zu benutzen und dann voipcheap. Dann musst du halt die contextnamen im Kontext belegt entsprechend ändern.

Ein ausgehendes Gespräch geht also folgenden Weg:

1. in den Kontext [routing]
dort wird gesagt über welchen Provider das gehen soll, z.B voipcheap_ru1

2. in [voipcheap_ru1] wird geprüft, ob eine Leitung des Providers frei ist. Wenn ja wird gewählt. Wenn nein geht es

3. in den Kontext [belegt]
dort stehen die Ersatzprovider. Der erste wird angesprungen z.B voipcheap_ru2

Wenn auch dort keine Leitung frei ist geht es wieder in den Kontext belegt. Der nächste Provider wird versucht, bis zum Schluß, wenn keiner frei ist ein belegt kommt.
Denn ursprünglichen Kontext in Zeile 7 von [belegt] nochmals abzufragen ist Absicht. Das Gespräch könnte ja zwischenzeitlich beendet sein.
 
Kostenlos!

Statistik des Forums

Themen
248,888
Beiträge
2,304,093
Mitglieder
378,571
Neuestes Mitglied
Heiko2026