Anruf direkt von SIP auf bestimmte Festnetznummer weiterleiten

dolphin63

Neuer User
Mitglied seit
7 Jan 2007
Beiträge
35
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

Ich versuche schon länger (und leider vergeblich) einen Anruf von einem Sip-Account zu einer bestimmten Festnetznummer weiterzuleiten. Leider will mich das nicht gelingen.
Hintergrund: Wenn eine Teilnehmer die Sipgatenummer anruft, soll der Asterisk das Gespräch direkt an eine Festnetznummer weiterleiten, die im öffentlichen Netz liegt. Das Weiterleiten an eine Nummer in der hinter dem Asterisk liegenden ISDN-Anlage funktioniert. Leider nicht die Weitergabe ins öffentliche Netz.

Kennt jemand die Lösung?

Greetz Thomas
 
Hi kombjuder,

das händische Weiterleiten des Anrufes vom Sipgate-Account (Der Asterisk ist auf dem Sipgateanschluss ordnungsgemäß eingeloggt) auf die externe Festnetznummer habe ich noch gar nicht ausprobiert. Mein Ziel ist ja auch, das der Asterisk ohne aktiven Eingriff die Anrufe selbstständig und ohne Nachfragen an die Zielnummer weiterleitet.

Wie die Weiterleitung händisch funktioniert muss ich erst noch nachschauen und das dann mal testen.

[edit]
Ich habe mir das mit dem CallForwarding mal angeschaut. Das Problem liegt an der Anwahl der Nummer 44 (als Beispiel) für die Aktivierung des CallForwarding. Bei dem existierenden Dialplan gibt es keine "Vorwahl" für abgehenden Gespräche über CAPI. Daher funktioniert die Wahl der 44 plus der anschliessenden Festnetznummer als Zielnummer nicht, da der Asterisk dies als eine zusammenhängende Festnetznummer hält.
Das Ziel ist zudem, dieses CallForwarding NICHT von dem User selbst machen zu lassen, sondern NUR vom Admin - Nicht das mir einer noch für den nächsten Urlaub sein Feriendomizil im Hotel auf Phuket als Zielrufnummer einträgt ;o)
 
Zuletzt bearbeitet:
Ich versuche mich zu bessern. Hier mal etwas genauere Angaben:

; Call Forwarding fuer einen einzelnen Anschluss
;
; aktivieren
exten => _44x.,1,Answer()
exten => _44x.,n,Set(DB(CF/${CALLERID(num)})=${EXTEN:2})
exten => _44x.,n,SayDigits($[EXTEN:2})
exten => _44x.,n,NoOp(Weiterleitung fuer ${CALLERID(num)} auf ${EXTEN:2} aktivi
exten => _44x.,n,Hangup()

; deaktivieren
exten => 44,1,Answer()
exten => 44,n,DBdel(CF/${CALLERID(num)})
exten => 44,n,Playback(auth-thankyou)
exten => 44,n,NoOp(Weiterleitung fuer ${CALLERID(num)} deaktiviert.)
exten => 44,n,Hangup()

Dies hatte ich in der extensions.conf eingefügt (habe ich aus das-asterisk-buch.de übernommen). Das Problem: Ich muss ja eine Weiterleitung von Sip auf Festnetz realisieren und somit über CAPI wieder rausrufen. Da mein Dialpräfix der CAPI jedoch nicht gesetzt ist (ist Absicht) und die Teilnehmer somit bei Wahl von z.B. 089 1234567 direkt über CAPI rauswählen (SIP-Präfix ist übrigens 999) vermute ich mal hier das Problem.

Wenn es zur Lösung beiträgt kann ich ja noch die Ausgabe von CLI posten. Allerdings würde ich die dir wegen der realen Nummern gerne als PN senden. Die realen Nummern zu eliminieren würde die ganze Sache wohl zu undurchsichtig machen.
 
Hi kombjuder,

ich habe alles noch mal ausführlich nachgelesen und bin inzwischen wenigsten so weit, dass ich die An- und Abmeldung der Umleitung hinbekomme. Allerdings wird ein eingehendes Gespräch auf den SIP-Account nicht auf die gewünschte Runfummer weitergeleitet. Das Softphpone klingelt weiterhin und wenn ich es vom Asterisk abmelde bekomme ich die Antwort "Teilnehmer vorübergehend nicht erreichbar".

Hier mal die Details:

extensions.conf:

Code:
[default]
[...]
include => from-intern
include => from-extern
[...]


[from-intern]
; Call Forwarding fuer einen einzelnen Anschluss
;
; aktivieren
exten => _*4X.,1,Answer()
exten => _*4X.,n,Set(DB(CF/${CALLERID(num)})=${EXTEN:"})
exten => _*4X.,n,SayDigits(${EXTEN:2})
exten => _*4X.,n,NoOp(Weiterleitung fuer ${CALLERID(num)} auf ${EXTEN:2} aktiviert.)
exten => _*4X.,n,Hangup()

; deaktivieren
exten => *4,1,Answer()
exten => *4,n,DBdel(CF/${CALLERID(num)})
exten => *4,n,Playback(auth-thankyou)
exten => *4,n,NoOp(Weiterleitung fuer ${CALLERID(num)} deaktiviert.)
exten => *4,n,Hangup()

[from-extern]
exten => _X.,1,NoOp(Anruf von ${CALLERID(num)} fuer ${EXTEN})
exten => _X.,n,GotoIf($[foo${DB(CF/${EXTEN})} != foo]?normal:forward)
exten => _X.,n(normal),Dial(CAPI/contr1/${EXTEN}/b,30)
exten => _X.,n(forward),NoOp(Anruf fuer ${EXTEN} wird verbunden zu ${DB(CF/${EXTEN})})
exten => _X.,n,Dial(local/${DB(CF/${EXTEN})})

Hier die Ausgabe der CLI-Console beim An- und Abmelden:
Anmelden:
Code:
    -- Executing Answer("SIP/33-9649", "") in new stack
    -- Executing Set("SIP/33-9649", "DB(CF/33)=*412345") in new stack
    -- Executing SayDigits("SIP/33-9649", "12345") in new stack
    -- Playing 'digits/1' (language 'de')
    -- Playing 'digits/2' (language 'de')
    -- Playing 'digits/3' (language 'de')
    -- Playing 'digits/4' (language 'de')
    -- Playing 'digits/5' (language 'de')
    -- Executing NoOp("SIP/33-9649", "Weiterleitung fuer 33 auf 12345 aktiviert.") in new stack
    -- Executing Hangup("SIP/33-9649", "") in new stack
  == Spawn extension (outgoing, *412345, 5) exited non-zero on 'SIP/33-9649'
    -- Executing Hangup("SIP/33-9649", "") in new stack
  == Spawn extension (outgoing, h, 1) exited non-zero on 'SIP/33-9649'

Abmelden:
Code:
    -- Executing Answer("SIP/33-5a77", "") in new stack
    -- Executing DBdel("SIP/33-5a77", "CF/33") in new stack
    -- DBdel: family=CF, key=33
    -- Executing Playback("SIP/33-5a77", "auth-thankyou") in new stack
    -- Playing 'auth-thankyou' (language 'de')
    -- Executing NoOp("SIP/33-5a77", "Weiterleitung fuer 33 deaktiviert.") in new stack
    -- Executing Hangup("SIP/33-5a77", "") in new stack
  == Spawn extension (outgoing, *4, 5) exited non-zero on 'SIP/33-5a77'
    -- Executing Hangup("SIP/33-5a77", "") in new stack
  == Spawn extension (outgoing, h, 1) exited non-zero on 'SIP/33-5a77'

Ausgabe der CLI-Console bei Anruf des SIP-Accounts und nicht erfolgter Weiterleitung:
Code:
    -- Executing Set("SIP/33334444-0227", "LANGUAGE()=de") in new stack
    -- Executing Ringing("SIP/33334444-0227", "") in new stack
    -- Executing AGI("SIP/33334444-0227", "getName.php|path=/public/phonelist.txt") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/getName.php
  getName.php|path=/public/phonelist.txt: CallerID: anonymous
  getName.php|path=/public/phonelist.txt: No data found about anonymous in local telephonenumber list
  getName.php|path=/public/phonelist.txt: No data found about anonymous at dasortliche.de
  getName.php|path=/public/phonelist.txt: Execution time: 0.105 sec.
    -- AGI Script getName.php completed, returning 0
    -- Executing Set("SIP/33334444-0227", "CALLERID(number)=anonymous") in new stack
    -- Executing Set("SIP/33334444-0227", "CALLERID(name)=") in new stack
    -- Executing GotoIf("SIP/33334444-0227", "0?8") in new stack
    -- Executing Set("SIP/33334444-0227", "CALLERID(number)=999anonymous") in new stack
    -- Executing Dial("SIP/33334444-0227", "SIP/2806333|20|t") in new stack
    -- Called 28067632
    -- SIP/28067632-df1f is ringing
    -- parse_srv: SRV mapped to host sipgate.de, port 5060
    -- parse_srv: SRV mapped to host sipgate.de, port 5060
    -- parse_srv: SRV mapped to host sipgate.de, port 5060
  == Spawn extension (incoming, 0892806333, 8) exited non-zero on 'SIP/33334444-0227'
    -- Executing Hangup("SIP/33334444-0227", "") in new stack
  == Spawn extension (incoming, h, 1) exited non-zero on 'SIP/33334444-0227'

Ich hoffe, du hast die Kristallkugel inzwischen wiedergefunden ;-)

Gruß Thomas
 
-- Executing Dial("SIP/33334444-0227", "SIP/2806333|20|t") in new stack
-- Called 28067632
-- SIP/28067632-df1f is ringing

Dein Gespräch wird zu Sipgate mit der Zielrufnummer 2806333 weitergeleitet, das Telefon klingelt und nach 20 Sec wird aufgelegt.

Funktioniert doch alles.
 
Da kann ich nicht folgen :-(

Leider ist die "2806333" die Nummer der Nebenstelle und nicht die Nummer die ich bei der Weiterleitung eingegeben habe. Außerdem hatte ich bei der Maskierung der Nummer für das Posting eine Verwechslung, darum ist das ganze nicht unbedingt nachvollziehbar und ihr könnt vermutlich daher nicht das rauslesen was nötig wäre.
Mal sehen ob ich noch rausbekomme was ich wo in die extensions.conf schreiben muss, damit der Ruf NICHT über SIP sondern über CAPI ins Festnetz geht.

Sorry für das Durcheinander und dir vielen Dank für deine Hilfe.

CU Thomas
 
Da kann ich nicht folgen :-(

Du sagtst irgendwo dial... für deinen weitergeleiteten Anruf. Dort musst du asterisk sagen, dass er capi verwenden soll.

Ausserdem hast du noch einen Fehler in deinem aktivieren Zeile 2:

exten => _*4X.,n,Set(DB(CF/${CALLERID(num)})=${EXTEN:"})

:" gehöhren da nicht hin, keine Ahnung was das ergibt.
 
Super! Das war genau der Tipp, danke.

Ich habe es jetzt über einen direkten Eintrag
Code:
exten => <Nummer>,n,Dial(CAPI/contr1/<externe Festnetznummer>/,30,t)
hinbekommen.

Den Versuch, das über die Anwahl über einen User zu regeln, habe ich mal hinten angestellt. Das soll ja auch eine Dauerumleitung sein, die der User selbst nicht ändern kann. Somit ist der Zweck erst mal erfüllt. Das mit der Anwahl über den User muss ich nochmal austesten. Irgend eine Lösung muss es ja dafür geben.

Vielen Dank nochmal

CU Thomas
 
Kostenlos!

Statistik des Forums

Themen
248,881
Beiträge
2,303,891
Mitglieder
378,555
Neuestes Mitglied
LSD052