[ERLEDIGT] Rufumleitung per VoIP *mit* Original CallerID

voipalex

Mitglied
Mitglied seit
18 Okt 2004
Beiträge
324
Punkte für Reaktionen
0
Punkte
16
Hallo!

Ich habe eine FBF mit Firmware 06.04.01. Ich möchte gerne einen per Festnetz eingehenden Anruf auf meinen Asterisk-Server via SIP weiterleiten. Das klappt soweit.

Bsp.:
Anruf per Festnetz mit CallerID 1234 -> FBF -> Asterisk

Jedoch geht dabei die CallerID verloren. Gibt es irgendeine Möglichkeit, diese mit zu übermitteln?
Oder falls das nicht geht, kann ich mit einer modifizierten Firmware bei Anruf auf der FBF ein Skript ausführen lassen? (Ich hoffe, dass auf der FBF die CallerID in irgendeiner Variablen zur Verfügung steht...)

Vielen Dank!

Gruß
Alex
 
Zuletzt bearbeitet:
Das wünschen sich fast alle FBF-Besitzer!

Eine Lösung habe ich bisher (leider!) noch nirgends gefunden.
Nur zur Info! ;)
 
Alles klar. Dann mach ich mich mal selber dran.

Ein erster Anhaltspunkt ist http://www.ip-phone-forum.de/showthread.php?t=81550

Daraus kann man die richtige CallerID extrahieren. Jetzt stellt sich die Frage, wie ich das am geschicktesten übers Netzwerk übertrage.

Zur Not mache ich das mit wget und schreibe das dann auf dem Asterisk in irgendein File, welches ich nach kurzer Wartezeit wieder auslese, wenn ein Gespräch von der FBF auf meinem Asterisk rein kommt...

Gruß
Alex
 
Das könnte etwas kompliziert werden... um es mal japanisch auszudrücken. ;-)

Es könnte einfacher sein, an der FBF einen Asterisk per ISDN anzuschließen und dann einfach die CallerId zu übernehmen... und von dort kannst Du ja irgendwie die CallerId an den zweiten Asterisk übertragen...

Es wird ein Gefummel!

--gandalf.
 
voipalex schrieb:
Daraus kann man die richtige CallerID extrahieren. Jetzt stellt sich die Frage, wie ich das am geschicktesten übers Netzwerk übertrage.
Du kannst extrahieren was und wie Du willst. Letztenendes wird immer die Rufnummer übertragen, von der der Ruf ausgeht. Das heißt bei einer Rufweiterleitung im Amt, die des Anrufers. Bei einer Rufweiterleitung durch eine TK-Anlage (Asterisk, Fritz!Box oder andere Telefonanlage) die des entsprechenden Anschlusses. Ob dabei Festnetz oder VoIP benutzt wird, ist dabei unerheblich. Beim Festnetz ist das eine Rufnummer aus Deinem MSN-Pool (so Du ISDN hast), bei VoIP die Deines entsprechend gerade zur Weiterleitung benutzten Accounts. Daß Du bei VoIP Deine Rufnummer in der Box konfigurierst, hat nur was mit der Autentifizierung gegenüber Deinem VoIP-Provider zu tun, aber nicht mit der Nummer, welche am Ende angezeigt werden soll.

Es gibt Fälle, in denen eine nicht zum Anschluß gehörige Nummer übermittelt wird. Um diese zu können müßtest Du schon ein CallCenter oder Servicerufnummern betreiben. Dort ist soetwas üblich und wird direkt in der jeweiligen Vermittlungsstelle gemacht. Ebenso können dieses VoIP-Betreiber, die Festnetznummern, die vorher überprüft oder anderweitig zugewiesen wurden. Dieses sind aber dann auch Rufnummern, die zu dem jeweiligen Account gehören und die sind nicht fallweise konfigurierbar. Ebenso ist Genion ein Beispiel oder T-Mobile@home oder Vodafone Zuhause oder meinetwegen die Rufnummernmitnahme zu einem anderen Provider. Bei allen gleich ist, daß die zum Anschluß gehörige Rufnummer übermittelt wird, es sei denn, man leitet im Netz und nicht in einem externen Gerät um.

Ob das ganze jetzt z.B. mit einem per VoIP eingehenden Anruf auf einem Asterisk als Server möglich ist, kann ich momentan nicht beurteilen. Ich meine gelesen zu habe, daß man auch VoIP-Geräte bei Asterisk anmelden kann, habe mich aber damit seit ich die Fritz!Box habe nicht mehr beschäftigt. Sowie jedoch ein externer Provider im Spiel ist, dürfte dieses nicht gehen, sonst könnte ja jeder irgendwelche Fake-IDs übermitteln. Das geht sicher irgendwie, aber diese Technik gehört mit an Sicherheit grenzender Wahrscheinlichkeit Organisationen, die sich nicht in die Karten schauen lassen.

Gruß Telefonmännchen
 
Zuletzt bearbeitet:
@Telefonmännchen:
alles soweit richtig was du schreibst, aber ich versuche das nicht so zu lösen, wie du dir das vorstellst, sondern ich möchte das am SIP-Protokoll vorbei lösen, weil ich wie du wenig Chancen sehe, die FBF entsprechend zu modifizieren.

Ablauf soll folgender sein:
Anruf kommt rein -> FBF schickt per wget oder netcat über eine TCP/IP (!) Verbindung irgendwelche Daten (u.a. die aktuelle CallerID) an einen anderen Rechner. Auf diesem läuft auch Asterisk.
Dieser wertet die Daten aus und schreibt die CallerID in die interne Asterisk-DB. Kommt nun ein Anruf über den Account der FBF rein, dann schaut er in der Asterisk-DB nach der richtigen CallerID und setzt diese entsprechend.

Hab inzwischen etwas bei TrayMessage rumgelesen. Anscheinend wurde von AVM in den neueren Firmware-Version die Ausgabe des telefon-daemons geändert, so dass man nicht mehr so leicht an die interessanten Daten kommt.
 
Hallo,
ich habe diesen Wunsch auch schon lange.Ich habe folgende Lösungsansätze gefunden.Entweder die Fritzbox muß als echtes Voipgateway arbeiten,oder die ankommende Nummer muß als CallerID/CallerName fallweise in die Sipmessage für die Voipweiterleitung eingesetzt werden.Die Asterisk kann das auswerten,Provider übergehen das einfach und setzen die Accountdaten ein. Beides wohl nur von AVM zu wuppen.Hoffnungen habe ich da im Zusammenhang mit der Voip/Streaming Schnurlosbox die angekündigt ist.Vielleicht arbeitet die ja als Sipclient,dann muß ja ein Server auf die Box.(Habe aber irgendwo gelesen,das die das am Standard vorbeifrikeln wollen.Mal sehen) Dieses Voipschnurlosteil wird ja wohl eine Clip Funktion haben.Ansonsten kann das wohl der Sipura 3000,wenn ich das richtig verstanden habe.Den an eine analoge Nebenstelle der Fritzbox,und über die Clipfunktion ab zur Asterisk.Leute ohne ISDN können sich die Fritzbox dann fast sparen ;-) Der letzte Weg wäre eine Asterisk mit ISDN oder Analogkarte an die man dann die Zielanlage anbindet.Ich denke da immer an den ASUS 500 Router mit einem USB ISDN Adapter und OpenWRT mit Asterisk.Habe aber nie herausfinden können (beim Googeln) ob das überhaupt machbar ist,bzw. zuverlässig läuft.An das Ding könnte man auch wieder die Fritzbox anschließen,als Sipclient.Oder schafft es evtl. doch irgendwann mal jemand auf der Fritzbox einen Asterisk zu installieren ;-) Natürlich nur mit eingebundenen S0 und Analoganschlüssen.Meine persönliche Wunschlösung.
Bis denn
Alf
 
Geschafft! :-)

Nach etwas knobeln habe ich es nun hinbekommen.

Die Lösung ist alles andere als sauber (oder sicher), aber es läuft. Der Großteil ist von TrayMessage abgeschrieben. Da ich fast nichts geändet habe, wird durch das Befolgen meiner Anleitung Traymessage wirkungslos.

Asterisk 1.2.1 läuft bei mir auf Openwrt (white russian rc4) mit der IP 192.168.1.1. Das Paket webif ist installiert.

Unter Openwrt habe ich folgende Datei angelegt:
/www/cgi-bin/callerid.sh
Code:
#!/usr/bin/haserl
<? 
. /usr/lib/webif/webif.sh
CALLERID=`echo "$FORM_callerid" | sed -e 's,[^0-9],,g'`
asterisk -rx "database put incoming callerid $CALLERID" > /dev/null
?>

Man erreicht dieses Skript dann über die URL http://192.168.1.1/cgi-bin/callerid.sh

Für die FBF habe ich mit Hilfe des FBF Image Generators ein Pseudo-Image generiert.
Dabei wurde folgendes an das Ende der debug.cfg geschrieben
Code:
# write send script to file
cat > /var/tmp/callmessage.sh << 'ENDCALLMESSAGE'
#!/bin/sh

# read params
caller=$2
called=$1

# send information to PCs
wget -O /dev/null "http://192.168.1.1/cgi-bin/callerid.sh?callerid=${caller}" >/dev/null 2>&1 &

ENDCALLMESSAGE

# make it executable
chmod +x /var/tmp/callmessage.sh

# write parse_telefon script to file
cat > /var/tmp/parse_telefon.sh << 'ENDPARSETEL'
#!/bin/sh

trap "" SIGCHLD

prefix=
caller=""
called=""

# stdin: output of telefon daemon expected
while read line
do
  case ${line} in
    *IncomingCall:*)
      caller=${line#*caller: \"}
      caller=${caller%%\"*}
      called=${line#*called: \"}
      called=${called%%\"*}
      # normalize caller
      case ${caller} in
        0049*)
          caller=0${caller#*0049}
        ;;
        49????????*)
          caller=0${caller#*49}
        ;;
        [1-9]????????*)
          caller=0${caller}
        ;;
        [1-9]*)
          caller=${prefix}${caller}
        ;;
      esac
      # exec callmessage.sh
      /var/tmp/callmessage.sh ${called} ${caller} &
    ;;
  esac
done

ENDPARSETEL

# make it executable
chmod +x /var/tmp/parse_telefon.sh

# wait
sleep 3
# restart telefon daemon piping its output into telefon_parse.sh
if [ -x /var/tmp/parse_telefon.sh ]
then
  # stop telefon daemon safely
  killall -15 telefon
  sleep 3
  killall -9 telefon
  rm -f /var/run/telefon.pid
  sleep 3
  telefon 1 a127.0.0.1 | /var/tmp/parse_telefon.sh &
fi

Geht nun ein Anruf auf der FBF ein, dann wird die CallerID in der Asterisk-Datenbank gespeichert (family=incoming, key=callerid) und kann dort ausgelesen und ggf. später weiterverwendet werden, falls zum Asterisk umgeleitet wird.

Gruß
Alex

Links:
Asterisk 1.2.1 bei Openwrt Backports für White Russian RC4
 
Sehr schöne Sache, Alex!

Werde ich morgen gleich mal ausprobieren.

Danke & Gruß,
Tin
 
Ist es realistisch, dass man das auch an einer FBF ohne Asterisk hinbekommt? *dummfrag*
 
Nur über umweg Telekom Rufumleitung bzw Paralelruf

Ich habe per Rufumleitung verzögert, dann besser mit Paralelruf, jeweils im Amt eine Isdn-Zielrufnummer angeewählt, nehme aber die voip-Zielrufnummer mit in der Box über voip eingercihteter Rufweiterschaltung ab. So habe ich auf der Liste nicht angenommener Anrufe für die Isdn-Zielrufnummer die per voip weitergeleiteten und angenommen Gespräche, sofern diese Anrufer ihre Rufnummer mitsendeten.
Alternativ: Weiterleitende FBF per remote ansprechen bzw. per email-push die Rufnummernliste zusenden lassen.
 
Hallo Alex,

voipalex schrieb:
Unter Openwrt habe ich folgende Datei angelegt:
/www/cgi-bin/callerid.sh
Code:
#!/usr/bin/haserl
<? 
. /usr/lib/webif/webif.sh
CALLERID=`echo "$FORM_callerid" | sed -e 's,[^0-9],,g'`
asterisk -rx "database put incoming callerid $CALLERID" > /dev/null
?>

webif? haserl? Da mein * auf Debian läuft, kann ich damit wohl nichts anfangen, wie müßte das * seitige Skript mit Perl/Bash, oder was auch immer unter Debian geht, aussehen? Hast Du da eine Idee?

Gruß,
Tin
 
@nixgegendenise:
Nein. Wir haben ja nicht den Quelltext für AVMs Telefon-Kram.

@TinTin
Hier mal ein passendes PHP-Skript:
Code:
<?php
$callerid = preg_replace("/[^0-9]/", "", $_GET['callerid']);
$result = system("asterisk -rx \"database put incoming callerid ".$callerid."\" > /dev/null");
?>

Mit Perl oder der Bash kann man das natürlich auch realisieren.

Gruß
Alex
 
Zuletzt bearbeitet:
Kostenlos!

Statistik des Forums

Themen
248,923
Beiträge
2,305,189
Mitglieder
378,646
Neuestes Mitglied
fusionK