Zwei Asterisk Server, SIP und ISDN

marc33

Neuer User
Mitglied seit
5 Mrz 2007
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

ich habe folgendes Setup:
3xSIP-Telefon an einem Asterisk-Server im Ausland. Dieser Server hat z.Zt. noch keine ISDN Karte, soll aber später mal eine bekommen. Der Server hat eine statische IP und ist über IPSEC mit einem zweiten Asterisk Server hier im Inland verbunden. Dieser Server hat eine ISDN Karte und ebenfalls eine statische IP.

Das Problem ist nun, daß von dem Server ausland beim Wählen per SIP an den Server inland nicht übermittelt wird, welches der 3 SIP Telefone nun raus wählen möchte. Hierbei wird nur die Nummer übermittelt:
Code:
exten => _XX.,2,Dial(SIP/${EXTEN}@inland:5060,120,tj)
Versuche ich so etwas:
Code:
exten => _XX.,2,Dial(SIP/user1:secret1@inland:5060/${EXTEN},120,tj)
Dann versucht das System die extension user1:secret1 zu finden, die es so natürlich nicht geben kann. Aber es versucht nicht einen anderen Abschnitt außer [default] zu suchen, obwohl es den Abschnitt [user1] gibt. :noidea:

Für Ideen und Vorschläge wäre ich dankbar, da ich mittlerweile schon viel zu viel Zeit unnütz damit vertan habe, das korrekt ans Laufen zu bekommen. :(
 
marc33 schrieb:
Für Ideen und Vorschläge wäre ich dankbar, da ich mittlerweile schon viel zu viel Zeit unnütz damit vertan habe, das korrekt ans Laufen zu bekommen.

Den Absender des Anrufes erhältst du in der Variablen CALLERIDNUM
 
Danke, aber wie bringe ich dem asterisk bei, daß er dann in den [user1] Abschnitt springen soll, statt dem [default]? :confused:
 
Warum machst du das so kompliziert? Vergiss doch den zweiten Asterisk-Server und schliesse die 3 SIP-Telefone direkt (über einen VPN-Router) an den ersten Asterisk-Server an.
 
Weil der erste Asterisk die zentrale Anlaufstelle der 3 Telefone sein soll, die auch dann intern telefonieren sollen, wenn die Internet-Leitung mal nicht funktioniert. Darum wird auch da irgendwann die zweite ISDN Karte als Backup eingebaut werden.

Der Unterschied ist halt, daß der eine Server im Ausland steht (und dort dann im ISDN angeschlossen wäre) und der andere Server im Inland steht, und hier am Netz hängt.
 
marc33 schrieb:
Danke, aber wie bringe ich dem asterisk bei, daß er dann in den [user1] Abschnitt springen soll, statt dem [default]?


Du musst in deiner sip.conf deinem auslandasterisk einen Kontext zuweisen. Hier heisst er ausland-in.
Dein eingehender Anruf vom anderen Asterisk springt nach ausland-in und springt von dort in einen Kontext mit Namen des Anrufenden. Also wenn 1234 vom auslandsserver anruft, brauchst du einen kontext 1234

[ausland-in]
exten => _X.,1,Goto(${CALLERID(number)},${EXTEN},1)
exten => _X.,n,Hangup

[1234]
hier sagst du was bei einem Anruf vom Apparat mit der Nummer 1234 passiert.
 
Was sehr seltsam ist:
Ich kann die ISDN-Nummer anrufen, und das wird auch auf das richtige SIP-Telefon des Auslands-Servers geleitet. Soweit kein Problem, Sprache geht in beide Richtungen, kein Problem.
das sieht im Inland-Server so aus:
Code:
exten => ${MSN0},1,Answer()
exten => ${MSN0},2,Dial(SIP/SIP100@${AUSLAND}:5060,120,tj)
exten => ${MSN0},103,Busy
exten => ${MSN0},3,Hangup()
Auf dem Server Ausland steht dann:
Code:
[globals]
SIP1=SIP100

[sip-in] 
exten => ${SIP1},1,Answer()
exten => ${SIP1},2,Dial(SIP/telefon100@${TELEFON100}:5060,120,tj)
exten => ${SIP1},103,Busy
exten => ${SIP1},3,Hangup()

Für den Rückweg habe ich dann auf dem Server Ausland:
Code:
[capi-out]
exten => _XX.,1,SetCallerId,${CALLERID}
exten => _XX.,2,Dial(SIP/${EXTEN}@inland:5060,120,tj)
exten => _XX.,103,Busy
exten => _XX.,3,Hangup()

Irgendwo scheine ich aber ein Brett vor dem Kopf zu haben. Es funktioniert zwar auch ausgehend, aber ohne Zuordnung zum jeweiligen Telefon, so daß ich ausgehend dann auf dem Server inland keine Regeln anhand des Telefons anwenden kann (also z.B. auch keine bestimmte abgehende MSN setzen kann)... :noidea:
 
Tut mir leid, mit den Schnipseln versteheich deinen Dialplan nicht.
Trage auf deinem inlandsserver im rauswahlkontext folgende Zeile als erste ein:

exten => _X.,1,NoOp(${CALLERID(number)})

das _X. musst du anpassen. Dann bekommst du auf dem CLI die Absender-Id angezeigt. Die dürfte für alle Anrufe von ausland die gleiche sein. Wenn ja die Zeile 1 auf ausland capi-out auskommentieren und schauen ob dann die richtigen Absender erscheinen.

Ausserdem Answer rauswerfen. Dein Asterisk soll nicht antworten sondern das Gespräch weiterleiten.
 
Danke noch mal für die Antworten. Ich habe das Problem jetzt über eigentlich unsinnige Umwege gelöst. Hier mal die vollständigen Dateien ohne Kommentare.

Im Server inland sieht das jetzt so aus:
sip.conf:
Code:
[general]
context=sip-in
allowguest=no
bindport=5060
bindaddr=0.0.0.0
srvlookup=yes
language=de

[ausland]
type=friend
username=ausland
secret=geheim
host=123.123.123.123 
context=ausland
reinvite=no 
canreinvite=yes 
disallow=all 
allow=alaw
nat=0
insecure=invite

extensions.conf:
Code:
[general]
static=yes
writeprotect=no
autofallthrough=yes
clearglobalvars=no
priorityjumping=no

[globals]
MSN1=101
MSN2=102
MSN3=103
CONSOLE=Console/dsp
IAXINFO=guest
TRUNK=Zap/g2
TRUNKMSD=1

[ausland]
exten => _101X.,1,Set(CALLERID(all)=${MSN1})
exten => _102X.,1,Set(CALLERID(all)=${MSN2})
exten => _103X.,1,Set(CALLERID(all)=${MSN3})
include => capi-out
include => capi-in
include => sip-in

[capi-out]
exten => _10X.,2,Dial(CAPI/g1/${EXTEN:3},60,trj)
exten => _10X.,103,Busy
exten => _10X.,3,Hangup()

[capi-in]
exten => ${MSN1},1,Answer()
exten => ${MSN1},2,Dial(SIP/SIP101@ausland,120,tj)
exten => ${MSN1},103,Busy
exten => ${MSN1},3,Hangup()

exten => ${MSN2},1,Answer()
exten => ${MSN2},2,Dial(SIP/SIP102@ausland,120,tj)
exten => ${MSN2},103,Busy
exten => ${MSN2},3,Hangup()

exten => ${MSN3},1,Answer()
exten => ${MSN3},2,Dial(SIP/SIP103@ausland,120,tj)
exten => ${MSN3},103,Busy
exten => ${MSN3},3,Hangup()

Und dazu dann im Server ausland:
sip.conf:
Code:
[general]
context=inland-in
allowguest=no
bindport=5060
bindaddr=0.0.0.0
srvlookup=yes

[inland]
type=friend
username=inland
secret=geheim
context=inland-in
host=192.168.5.123
canreinvite=yes
insecure=invite

[telefon101]
type=friend
secret=geheim
host=dynamic
context=telefon101
reinvite=no 
canreinvite=yes 
disallow=all 
allow=alaw
nat=0

[telefon102]
type=friend
secret=geheim
host=dynamic
context=telefon102
reinvite=no
canreinvite=yes
disallow=all
allow=alaw
nat=0

[telefon103]
type=friend
secret=geheim
host=dynamic
context=telefon103
reinvite=no
canreinvite=yes
disallow=all
allow=alaw
nat=0

extensions.conf:
Code:
[general]
static=yes
writeprotect=no
autofallthrough=yes
clearglobalvars=no
priorityjumping=no

[globals]
inland=192.168.5.123
telefon101=192.168.10.101
telefon102=192.168.10.102
telefon103=192.168.10.103
SIP2=SIP101
SIP3=SIP102
SIP4=SIP103
NR=101
CONSOLE=Console/dsp
IAXINFO=guest
TRUNK=Zap/g2
TRUNKMSD=1

[inland-in]
include => sip-in

[telefon101]
exten => _X.,1,SetGlobalVar(NR=101)
include => capi-out

[telefon102]
exten => _X.,1,SetGlobalVar(NR=102)
include => capi-out

[telefon103]
exten => _X.,1,SetGlobalVar(NR=103)
include => capi-out

[capi-out]
exten => _X.,2,SetCallerId,${CALLERID}
exten => _X.,3,Dial(SIP/${NR}${EXTEN}@inland,120,tj)
exten => _X.,104,Busy
exten => _X.,4,Hangup()

[sip-in]
exten => ${SIP1},1,Answer()
exten => ${SIP1},2,Dial(SIP/telefon100@${telefon100}:5060,120,tj)
exten => ${SIP1},103,Busy
exten => ${SIP1},3,Hangup()

exten => ${SIP2},1,Answer()
exten => ${SIP2},2,Dial(SIP/telefon101@${telefon101}:5060,120,tj)
exten => ${SIP2},103,Busy
exten => ${SIP2},3,Hangup()

exten => ${SIP3},1,Answer()
exten => ${SIP3},2,Dial(SIP/telefon102@${telefon102}:5060,120,tj)
exten => ${SIP3},103,Busy
exten => ${SIP3},3,Hangup()

Auf diese Weise wird die Nummer des anrufenden Telefons in der zu wählenden Nummer am Anfang mit geschickt und ich werte das auf dem Server inland aus. Das ist sicher keine optimale Lösung, aber es funktioniert im Moment.

Vielleicht habt ihr ja eine Idee, wie das einfacher zu lösen ist? :noidea:
 
Kostenlos!

Statistik des Forums

Themen
248,363
Beiträge
2,289,289
Mitglieder
377,686
Neuestes Mitglied
lindwurm2026