Weiterleitung Festnetz auf Festnetz, Asterisk legt auf

derbenni

Neuer User
Mitglied seit
11 Dez 2012
Beiträge
6
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

ich bin neu hier. Ich habe über die Suche nichts gefunden und hgoffe, ich habe halbwegs das richtige Forum für meine Frage getroffen...

Ich habe ein Problem bei der Umleitung einer Festnetznummer (Provider ist SIP Gate) auf eine andere Festnetznummer.

Ich muss dazu sagen, ich bin blutiger Anfänger, habe mich heute zum ertsen mal mit dem gesamten Thema Asterisk auseinandergesetzt. Wenn ich also irgendwelche dumme Fehler mache, seid bitte nachsichtig :)

Zunächst das Szenario:

Ich habe eine Festnetznummer (004912345) bei SIP Gate. Die Asterisk ist auf diese Nummer registriert. Eingehende Anrufe auf diese Festnetznummer kommen auch in der Asterisk an, ich kann mir z.B. ein "Hello World" vorspielen lassen oder einen Echo-Test machen.

Ziel ist es, dieses eingehende Gespräch, wiederum über einen SIP-Provider, auf ein anderes Festnetz (004967890) umzuleiten.

Der Dialingplan sieht bisher so aus:

Code:
[sipgatein]
exten => SIPGATE,1,Dial(SIP/andererVOIPProvider/004967890,,r)
exten => SIPGATE,n,Hangup()

Das Problem ist, dass bei einem eingehenden Anruf auf 004912345 zwar ein Call an 004967890 rausgeht, sobald der Angerufene aber das Telefon abhebt, wird die Verbindung zum Angerufenen sofort getrennt. Die Verbindung zum Anrufer bleibt bestehen bis dieser auflegt.

Die Verbindung scheint genau in dem Moment getrennt zu werden, in dem die beiden Verbindungen zusammen gechannelt werden sollen.

Diese Vermutung hat sich noch verstärkt als ich folgendes versucht habe:

Code:
[sipgatein]
exten => SIPGATE,1,Dial(SIP/andererVOIPProvider/004967890,,rA(hello-world))
exten => SIPGATE,n,Hangup()

In diesem Fall wird die Verbindung aufgebaut, sobald der Angerufene abnimmt wird ihm "Hello World" vorgespielt und erst danach wird aufgelegt (wieder nur beim Angerufenen, nicht beim Anrufer).

Ich habe schon sehr viel ausprobiert, finde aber keine Lösung.

Kann mir evtl. jemand dieses Verhalten erklären oder kennt dieses Phänomen?

Danke und Gruß, Benni
 
Vielleicht solltest du mal im Asterisk-Buch schmökern, um dir die einzelnen Funkionen und Applikationen im Dialplan näher zu bringen. Dann würde dir auch klar, dass du den Kanal, den du mit Dial aufbaust, sofort mit Hangup wieder auflegst. Lass das Hangup im ersten Fall einfach weg, denn das wird durch den Anrufen bzw. den Angerufenen manuell erledigt.
 
Hallo Hamal,

zunächst mal Danke für die schnelle Antwort und den Link, hatte bisher mit dem O'Reily Buch gearbeitet.

Dann würde dir auch klar, dass du den Kanal, den du mit Dial aufbaust, sofort mit Hangup wieder auflegst. Lass das Hangup im ersten Fall einfach weg, denn das wird durch den Anrufen bzw. den Angerufenen manuell erledigt.

Bist Du da sicher?

Ich hatte es eigentlich so verstanden, dass das Hangup nachdem der Angerufene aufgelegt hat (also dieser Kanal geschlossen ist) dazu dient den Kanal zum Anrufer zu schließen.

In den Beispielen die ich bisher gesehen habe wurde am Ende auch immer mit Hangup() aufgelegt :confused:

Ich hab's trotzdem mal getestet, hat aber leider nix gebracht, das Ergebnis bleibt das gleiche... :???:
 
Der Dialplan stimmt an sich (das Hangup ist da auch nicht falsch und wird erst nach Trennung ausgeführt, beeinflußt also das Bridging nicht).
Der "Klassiker" an der Stelle ist eher ein RTP-Problem. In erster Näherung - ohne an Deinen SIP-Einstellungen rumzuspielen - würde ich mal im Dialbefehl folgendes machen:

Code:
SIPGATE,1,Dial(SIP/andererVOIPProvider/004967890,,rtT)

Das ist keine Dauerlösung (wir erlauben beiden Seiten den Transfer), zwingt aber Asterisk, im Mediastream zu bleiben und kein native bridging zu machen.
Im Unterschied zu den meisten Dokumentationen zu Asterisk mögen die meisten Provider nämlich kein native bridging, d.h. akzeptieren kein "Rerouting" der RTP-Pakete an eine andere IP, als die registrierte, an die die SIP-Signalisierung gegangen ist.
Wenn das funktioniert, solltest Du dann noch bei beiden peers (SIPGATE und andererVOIPProvider) jeweils directmedia auf no stellen und - je nach eigenem Netzwerk - ggf. nat=force_rport,comedia (bzw. bis 1.8: nat=yes) setzen.
 
Hallo abw1oim,

Danke für die Hilfe!

Die Verbindung kann ich jetzt aufbauen. Leider habe ich zu wild herumprobiert um zu sagen welche Einstellung jetzt genau gefehlt hatte, aber die Verbindung wird nicht mehr getrennt.

Ich habe jetzt allerdings ein anderes Problem, dass ich mir einfach nicht erklären kann:

Ich höre auf keiner von beiden Seiten Ton, wenn ich nicht nach dem Aufbau des Anrufes zunächst einen Sound mit der Asterisk wiedergebe.

Ist doof formuliert, daher hier nochmal genauer;

Code:
exten => SIPGATE,1,Answer()
exten => SIPGATE,n,Dial(SIP/SIPTrunk/0049123456)
exten => SIPGATE,n,Hangup()

Der Anruf wird aufgebaut, die beiden Seiten können sich nicht hören.

Code:
exten => SIPGATE,1,Answer()
exten => SIPGATE,n,Dial(SIP/SIPTrunk/0049123456,,r)
exten => SIPGATE,n,Hangup()

Beide Seiten hören sich gegenseitig (Die Option r spielt in jedem Fall ein Rufsignal ab)

Genau so funktioniert aber auch z.B. das:

Code:
exten => SIPGATE,1,Answer()
exten => SIPGATE,n,Playback(beep)
exten => SIPGATE,n,Dial(SIP/SIPTrunk/0049123456)
exten => SIPGATE,n,Hangup()

Beide Seiten hören sich auch hier. Es scheint also daran zu liegen ob die Asterisk nach der Annahme des ersten Kanals, aber vor der Verbindung des zweiten Kanals einen Ton wiedergibt.

Woran kann das liegen?

Irgendwelche Ideen?

Gruß, Benni
 
Wie gesagt, da srimmt der RTP-Strom nicht, da der Asterisk (im Standardszenario ohne vorherige Rufannahme bzw. Parameter im Dialkommando) ein native bridgung macht, d.h. der RTP-Strom direkt zwischen den beiden Endpunkten (SIPGATE und SIPTrunk) läuft. Das mag zumindest Sipgate nicht, Ergebnis: Kein Ton.
Daher mußt Du über geeignete Dialoptionen (wenn r schon reicht ist es ja gut) dafür sorgen, dass Asterosk im Mediapath bleibt, dann funktioniert es auch.
 
Hallo abw1oim,

Daher mußt Du über geeignete Dialoptionen (wenn r schon reicht ist es ja gut) dafür sorgen, dass Asterosk im Mediapath bleibt

-> ich hatte gedacht, dass genau das bereits durch
Code:
directmedia=no
erreicht würde.

Danke für die Hilfe!

In jedem fall kann ich dat Dingen jetzt schonmal nutzen.

Verbindungsaufbau klappt, man hört sich gegenseitig und der zweite Kanal wird beim Auflegen des ersten zuverlässig getrennt. Mehr wollte ich ja eigentlich gar nicht ;)

Dann werde ich jetzt wohl mal anfangen mich intensiver mit der Materie zu beschäftigen. :)

Danke und Gruß, Benni
 
Das könnte man tatsächlich denken (ist auch so dokumentiert), klappt aber i.d.R. nicht ...
Aber wie gesagt: Sobald eine Dialoption wie r, t, h oder w dabei ist, ist der MediaPath über Asterisk gesichert.
 
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.