[Gelöst] Call Routing anhand SIP Nebenstellen

Singh17

Neuer User
Mitglied seit
25 Mai 2011
Beiträge
18
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,
mittlerweile macht das basteln an der Asterisk sehr spaß. Ich stehe aber nun vor einem Problem, wo ich nicht weiter komme. Vielleicht kann mir hier einer einen Tipp geben oder helfen.

Folgendes Szenario:

Ich habe auf der Asterisk einen SIP Gateway nach außen zur Telekom und einen ISDN Gateway via Fritzbox. Telefonie etc. funktioniert ausgehend, sowie eingehend.

Nun möchte ich aber, dass wenn die SIP Nebenstellen von 10-19 die 0 wählen, dass diese automatisch immer den SIP Gateway zur Telekom nutzen und wenn die Nebenstellen 20-29 die 0 wählen, dann den ISDN Gateway über Fritzbox. Wie setze ich das am geschicktesten und sauber um? Leider kenne ich mich mit Contexten noch nicht so gut aus.

ziel ist, dass alle Nebenstellen zum rauswählen immer die 0 wählen, aber unterschiedliche Gateways nutzen. Zusätzlich stehe ich vor der Problematik, dass wenn die Nebenstelle 21 nach außen telefoniert Die Rufnummer 123456 haben soll und wenn die nebenstelle 22 nach außen telefoniert die Rufnummer 987654. (dies betrifft nur den ISDN SIP Gateway)
 
Zuletzt bearbeitet von einem Moderator:
Leider kenne ich mich mit Contexten noch nicht so gut aus.

Dann ist es jetzt an der Zeit, sich damit zu befassen. Das ist nämlich eine mögliche Lösung. Ist aber denkbar einfach, Du legst in der extensions.conf zwei Contexte für die beiden abgehenden Routen an, und setzt in der sip.conf bei jedem User den passenden context= Eintrag.

Alternativ könntest Du zB. mit GotoIf($["${CALLERID(num):0:1}"="1"]?...:...) anhand der Nebenstelle unterscheiden.

Die Zuordnung der externen Callerid kann man mit SetVar in der sip.conf machen, oder bei einzelnen Einträgen über Set(...If()), oder mittels "Anti-Ex-Girlfriend" extens, AstDB oder andere Datenbank, oder oder oder.
 
Hi,
danke für die Möglichkeit, leider bin ich noch ein Laie und habe die Lösung nicht ganz verstanden. So sieht meine Extensionsconf aktuell aus:

Code:
[FRITZBOX-OUT]

exten => _8.,1,Dial(SIP/${EXTEN:1}@FRITZBOX,30,tr)
exten => _8.,n,Hangup()

[DTAG-SIP-OUT]
exten => _0.,1,Set(CALLERID(num)=0123456789)
exten => _0.,n,Set(CALLERID(name)=0123456789)
exten => _0.,n,Dial(SIP/${EXTEN:1}@DTAG-IP,30,tr)
exten => _0.,n,Hangup()

Wie würde das nun mit dir oben genannten Lösung aussehen?

[Beitrag 2:]

Wäre das eventuell die Lösung?

Code:
exten => _0.,1,GotoIf($["${CALLERID(num)}" = "1X"]?FRITZBOX)
exten => _0.,n,GotoIf($["${CALLERID(num)}" != "2X"]?DTAG-IP)
exten => _0.,n(FRITZBOX),(SIP/${EXTEN:1}@FRITZBOX,30,tr)
exten => _0.,n,Hangup()
exten => _0.,n(DTAG-IP),Set(CALLERID(num)=0123456789)
exten => _0.,n,Set(CALLERID(name)=0123456789)
exten => _0.,n,Dial(SIP/${EXTEN:1}@DTAG-IP,30,tr)
exten => _0.,n,Hangup()
 
Zuletzt bearbeitet von einem Moderator:
Fast, bei If gibt es keine Muster-Schreibweise.

Code:
GotoIf($["${CALLERID(num)[COLOR="#FF0000"]:0:1[/COLOR]}" = "[COLOR="#FF0000"]1[/COLOR]"]?FRITZBOX)

Damit wird nur die erste Stelle der Callerid mit 1 verglichen.
 
Hi,
danke für deine Antwort, leider klappt es nicht.

So sieht meine Config aus:

Extensions.conf
Code:
exten => _0.,1,GotoIf($["${CALLERID(num)}:0:1" = "2"]?DTAG-IP)
;exten => _0.,n,GotoIf($["${CALLERID(num)}" = "21"]?DTAG-IP)
exten => _0.,n,GotoIf($["${CALLERID(num)}:0:1" = "1"]?FRITZBOX)
;exten => _0.,n,GotoIf($["${CALLERID(num)}" = "11"]?FRITZBOX)
exten => _0.,n(DTAG-IP),Set(CALLERID(num)=0123456789)
exten => _0.,n,Set(CALLERID(name)=0123456789)
exten => _0.,n,Dial(SIP/${EXTEN:1}@DTAG-IP,30,tr)
exten => _0.,n,Hangup()
exten => _0.,n(FRITZBOX),Dial(SIP/${EXTEN:1}@FRITZBOX,30,tr)
exten => _0.,n,Hangup()

so sieht es aus wenn ich als Nebenstelle 11 oder 21 raus telefoniere:
Code:
    -- Executing [008003301000@default:1] GotoIf("SIP/11-000000eb", "0?DTAG-IP") in new stack
    -- Executing [008003301000@default:2] GotoIf("SIP/11-000000eb", "0?FRITZBOX") in new stack
    -- Executing [008003301000@default:3] Set("SIP/11-000000eb", "CALLERID(num)=0123456789") in new stack
    -- Executing [008003301000@default:4] Set("SIP/11-000000eb", "CALLERID(name)=0123456789") in new stack
    -- Executing [008003301000@default:5] Dial("SIP/11-000000eb", "SIP/08003301000@DTAG-IP,30,tr") in new stack
  == Using SIP RTP CoS mark 5
  == Using SIP VRTP CoS mark 6
    -- Called 08003301000@DTAG-IP

es wird einfach ignoriert. Habe ich was falsch verstanden?
 
Zuletzt bearbeitet von einem Moderator:
Die Klammersetzung ist falsch, siehe mein Beispiel oben.

falsch: $["${CALLERID(num)}:0:1" = "2"]
richtig: $["${CALLERID(num):0:1}" = "2"]
 
ach, super! ich danke dir!!!! hat geklappt :)
 
Das freut mich. Dann könntest Du bitte den Thread-Titel um das Prefix "gelöst" ergänzen (im 1. Post auf Bearbeiten -> Erweitert).
 
Kostenlos!

Statistik des Forums

Themen
248,868
Beiträge
2,303,347
Mitglieder
378,527
Neuestes Mitglied
Zoidbergomann