Rufgruppen und Weiterleitungen

jurica

Neuer User
Mitglied seit
9 Feb 2010
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
Hi,

ich hab einen etwas verzwickten Wählplan.
Die hier eingesetzte Asterisk Anlage bedient mehrere Firmen und pro Firma gibt es eine Rufgruppe (mehrere Nebenstellen klingeln mittels Dial(SIP/1&SIP/2...)). Damit man erkennt für welche Firma der Anruf ist, setze ich mittels Devstate für jede Firma einen eigenen hint (so ist auch ein Gruppenpickup für die Firmenrufnummern realisiert).
Jetzt habe ich allerdings das problem, wenn folgendes Szenario eintritt: eine Nebenstelle die auf der Firmenrufgruppe ist leitet seine Anrufe auf eben die gleiche Rufgruppe weiter (Weiterleitung über Option im Snom Telefon). Kommt jetzt ein Anruf auf die Firmenrufgruppe, leitet die Nebenstelle ja indirekt auch wieder auf sich weiter und es entsteht eine Endlosschleife und alles fängt zu spinnen an.

Daher jetzt meine Frage an euch.
Hat jemand eine ähnliche Konfiguration oder eine Idee wie man das Problem der Endlosschleife lösen könnte?

Danke schonmal
Gruß
Juri
 
Hallo Juri,

zeig doch bitte den entsprechenden Auszug aus Deinem Dialplan, damit man überhaupt mal sieht, wie Du die Rufumleitungen ausführst.

Damit man erkennt für welche Firma der Anruf ist, setze ich mittels Devstate für jede Firma einen eigenen hint
Dieser Satz ergibt in meinen Augen irgendwie keinen Sinn.

Rentier
 
So mal auszüge der wichtigen Teile meiner extensions.conf

Code:
[globals]
GRPFIRMA1=SIP/1&SIP/2...
GRPFIRMA2=SIP/3&SIP/4...
GRPFIRMA3=SIP/5&SIP/6...
GRPFIRMA4=SIP/7&SIP/8...

[line_hints]
exten => 1,hint,Custom:Firma1
exten => 2,hint,Custom:Firma2
exten => 3,hint,Custom:Firma3
exten => 4,hint,Custom:Firma4

[von_aussen]
exten => _${NUMMER}[1-4]0,1,Set(FIRMA=${EXTEN:-2:1})
exten => _${NUMMER}[1-4]0,n,Macro(turnlighton,${FIRMA},RINGING)
exten => _${NUMMER}[1-4]0,n,Macro(dialfirma,${FIRMA})
exten => _${NUMMER}[1-4]0,n,Macro(turnlightoff,${FIRMA})

[macro-dialzentrale]
exten => s,1,Set(CALLERID(num)=0${CALLERID(num)})
exten => s,n,Goto(c${ARG1})
exten => s,n(c1),Dial(${GRPFIRMA1},${DIALTIMEOUT},gtTM(turnlightoff^${ARG1}))
exten => s,n,Goto(c)
exten => s,n(c2),Dial(${GRPFIRMA2},${DIALTIMEOUT},gtTM(turnlightoff^${ARG1}))
exten => s,n,Goto(c)
exten => s,n(c3),Dial(${GRPFIRMA3},${DIALTIMEOUT},gtTM(turnlightoff^${ARG1}))
exten => s,n,Goto(c)
exten => s,n(c4),Dial(${GRPFIRMA4},${DIALTIMEOUT},gtTM(turnlightoff^${ARG1}))
exten => s,n,Goto(c)
exten => s,n(c), NoOp()
exten => s,n(c0), NoOp()

[macro-turnlighton]
exten => s,1,Goto(c${ARG1})
exten => s,n(c1),Set(DEVICE_STATE(Custom:Firma1)=${ARG2})
exten => s,n,Goto(c)
exten => s,n(c2),Set(DEVICE_STATE(Custom:Firma2)=${ARG2})
exten => s,n,Goto(c)
exten => s,n(c3),Set(DEVICE_STATE(Custom:Firma3)=${ARG2})
exten => s,n,Goto(c)
exten => s,n(c4),Set(DEVICE_STATE(Custom:Firma4)=${ARG2})
exten => s,n,Goto(c)
exten => s,n(c), NoOp()
exten => s,n(c0), NoOp()

[macro-turnlightoff]
exten => s,1,Goto(c${ARG1})
exten => s,n(c1),Set(DEVICE_STATE(Custom:Firma1)=NOT_INUSE)
exten => s,n,Goto(c)
exten => s,n(c2),Set(DEVICE_STATE(Custom:Firma2)=NOT_INUSE)
exten => s,n,Goto(c)
exten => s,n(c3),Set(DEVICE_STATE(Custom:Firma3)=NOT_INUSE)
exten => s,n,Goto(c)
exten => s,n(c4),Set(DEVICE_STATE(Custom:Firma4)=NOT_INUSE)
exten => s,n,Goto(c)
exten => s,n(c), NoOp()
exten => s,n(c0), NoOp()

Ich frage also auf meinen Telefonen einfach den Status der hints 1-4 ab und erkenne so für welche Firma der Anruf ist.

Ich hoffe die config ist halbwegs klar, falls nicht einfach nachfragen.
 
OK, ich glaube jetzt hab das mit den hints verstanden. Du hast quasi ein Telefon, das für alle Firmen genutzt wird. Und anhand dessen, welche Lampe auf dem Tel. leuchtet, weiß man, welche angerufen wurde. Aber das ist ja für Dein Problem eigentlich nicht von Bedeutung.

So lange das nicht zu viele Nebenstellen sind, könntest Du die Rufgruppe abhängig vom devstate zusammensetzen. Also jede Nebenstelle nur dann in den Dial aufnehmen, wenn sie nicht gerade schon klingelt. Nicht optimal, aber könnte klappen.

Hat jemand eine andere Idee?

Rentier
 
Hmm klingt interessant, wie kann ich denn eine schon klingelnde Nebenstelle aus Dial rausnehmen bzw kein zweites mal klingeln lassen?
 
Aus dem Bauch heraus hätte ich gesagt
Code:
Set(rufgruppe=${If($["DEVICE_STATE(1001)"="RINGING"]?${rufgruppe}:${rufgruppe}&SIP/1001)})
Set(rufgruppe=${If($["DEVICE_STATE(1002)"="RINGING"]?${rufgruppe}:${rufgruppe}&SIP/1002)})
...
Set(rufgruppe=${rufgruppe:1})

Bei 1.4 brauchst Du DEVSTATE, gibts als Backport von der 1.6er DEVICE_STATE.

Da ich keine Snom habe, weiß ich nicht, ob der Status bei einer Weiterleitung auch RINGING bleibt. Ansonsten bliebe noch die Möglichkeit, das mit GROUPs zu machen. Das ist aber gleich noch hässlicher als das hier.

Rentier
 
Danke fürs erste, wenn ich Zeit hab werd ichs mal testen, die Idee gefällt mir jedenfalls schonmal ganz gut weil Benutzerfehler vermieden werden.
Ich kann den Kollegen zwar sagen, dass sie nicht auf die Zentralnummer weiterleiten sollen, aber was sie letztlich machen is leider was anderes...

PS: Unter anderem wegen DEVSTATE hab ich auf asterisk 1.6 gesetzt...
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.