Callmonitor für SNOM 370

Moehrlin

Neuer User
Mitglied seit
21 Apr 2006
Beiträge
16
Punkte für Reaktionen
0
Punkte
0
Seit kurzem bin ich Besitzer eines IP Telefons der Berliner Firma SNOM.
snom_370.jpg
Nun möchte ich gerne den Callmonitor der fritz.box eine Rückwärtssuche der Anrufer durchzuführen.
Eine Idee ist die Realisierung mit sog. "Action Urls" für die Rückwärtssuche durchzuführen.
Dies bedeutet, dass eine URL aufgerufen wird sobald ein bestimmtes Ereignis stattfindet.
Dieses Ereignis kann z.B. ein eingehender Anruf sein oder das beenden eines Telefongespräches.
Führt die URL z.B. zu einer php-Datei, die auf einem Webserver liegt, kann das Telefon diese auf dem grafischen Display anzeigen.
Die XML Code muss speziell angepasst werden, damit der MiniBrowser des Telefons den Text korrekt darstellen kann.
Den Code hab ich mal für Interessierte hier angehängt.
Er beinhaltet eine komplette Rückwärtssuche, die auch zufriedenstellend funktioniert.
Ich würde dieses aber gerne mit dem Callmonitor Skript von freetz realisieren.
Hab aber noch keine Idee, wie ich das realisieren soll.
Eine andere Möglichkeit Text an das Telefon Texte zu schicken ist mit dem Programm sipsak.
Dies ist ein konsolenbasiertes Programm zum versenden von einfachen Textnachrichten an das SNOM Telefon.
Texte oder vielmehr einzeilige Texte werden dann im Hauptmenü angezeigt.
Mit dem Befehl rawmsg des Callmonitors müsste man doch auch eine Nachricht an das Telefon schicken können?

PHP:
<?php

$tmp=explode('@', $_GET['caller']);
$caller=$tmp[0];

if($caller=='anonymous')
{
echo '<?xml version="1.0" encoding="utf-8"?>';
echo '<SnomIPPhoneText>';
echo "<Title>Anonymer Anruf</Title>";
echo '<Text>';
echo "Anrufer ist anonym";
echo '</Text>';
echo '</SnomIPPhoneText>';
}

$data=file_get_contents("http://www.dasoertliche.de/Controller?form_name=search_inv&ph=$caller");

if(preg_match('/var itemData(.*)/', $data, $result))
{
//print_r($result);
$result=urldecode($result[1]);
//print_r ($result);
$result=explode("&",$result);
//print_r($result);
$PLZ=substr($result[7],10,5);
$Ort=str_replace('+',' ',substr($result[8],11,30));
$Ort=umlaute($Ort);
$Name=str_replace('+',' ',substr($result[5],11,30));
$Name=umlaute($Name);
$Strasse=str_replace('+',' ',substr($result[6],15,30));
$Strasse=umlaute($Strasse);
echo '<?xml version="1.0" encoding="utf-8"?>';
echo '<SnomIPPhoneText>';
echo "<Title>Anruf von $caller</Title>";
echo '<Text>';
echo "Anrufer: $Name";
echo '<br/>';
echo "Adresse: $Strasse, $PLZ $Ort";
echo '</Text>';
echo '</SnomIPPhoneText>';
}
else
{
echo '<?xml version="1.0" encoding="utf-8"?>';
echo '<SnomIPPhoneText>';
echo "<Title>Anruf von $caller</Title>";
echo '<Text>';
echo 'Anrufer konnte nicht gefunden werden.';
echo '</Text>';
echo '</SnomIPPhoneText>';
}

function umlaute($string) 
{
$string=str_replace("%C3%84", "Ä", $string);
$string=str_replace("%C3%96", "Ö", $string);
$string=str_replace("%C3%9C", "Ü", $string);
$string=str_replace("%C3%A4", "ä", $string);
$string=str_replace("%C3%B6", "ö", $string);
$string=str_replace("%C3%BC", "ü", $string);

return $string;
}
?>
 

Anhänge

  • code.txt
    1.6 KB · Aufrufe: 11
Zuletzt bearbeitet:
Moin

Sehr schön, endlich mal wieder Code fürs snom. ;)

Könntest du bitte noch den PHP Code in [ php] Codetags [ /php] einschliessen?
Ohne [ <-- Leerzeichen an der Klammer. Das ist dann wesentlich besser lesbar.

Displaymessage mit sipsak (aus einer MSDOS-Konsole abgesetzt):
Code:
sipsak -i -M -B %USERNAME% -s sip:621@snom1:5060 -H fritz.box
SipTrace des snoms...
Code:
Received from udp:192.168.178.7:61837 at 12/6/2014 11:32:57:834 (341 bytes):

MESSAGE sip:621@snom1:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.178.1:61836;branch=z9hG4bK.1ffab1b1;rport;alias
To: sip:621@snom1:5060
Call-ID: [email protected]
CSeq: 1 MESSAGE
Content-Type: text/plain
Max-Forwards: 70
User-Agent: sipsak 0.9.5
From: sip:[email protected]:61836;tag=18851866
Content-Length: 13

koyaanisqatsi

Sent to udp:192.168.178.7:61837 at 12/6/2014 11:32:57:842 (295 bytes):

SIP/2.0 200 Ok
Via: SIP/2.0/UDP 192.168.178.1:61836;branch=z9hG4bK.1ffab1b1;rport=61837;alias;received=192.168.178.7
From: sip:[email protected]:61836;tag=18851866
To: sip:621@snom1:5060
Call-ID: [email protected]
CSeq: 1 MESSAGE
User-Agent: snom320/8.7.4.8
Content-Length: 0
Nachteil: Die Displayanzeige des laufenden Gesprächs bleibt bestehen.
Die Nachricht wird erst nach dem Auflegen angezeigt.

snom XML:
Innerhalb des <text></text> Tags kannst du einen Zeilenumbruch mit <br/> erzwingen.
Also: <text>Erste Zeile<br/>Zweite Zeile<br/>u.s.w.</text>

PS: Als Schöpfer des Skripts darfst du ihm auch einen Namen geben. ;)
 
Zuletzt bearbeitet:
Geht sipsak mit dem Callmonitor?
Den Code, den ich da zusammengebastelt habe ist noch nicht perfekt.
Es fehlt z.B. die Behandlung von mehreren Treffern.
Schön wär es natürlich auch, wenn man im erst im fritz.box telefonbuch nachschaut und dann die reversessuche startet.
Deswegen wäre eine einbindungen in den Callmonitor sinnvoll, da man das Rad ja nicht neu erfinden muss.
 
Klar geht sipsak auch mit dem Callmonitor, vorausgesetzt sipsak befindet sich auf der Box als Binary.
Da die Rückwärtssuche etwas komplex ist, wäre m.E. ein Aufruf eines Skriptes mit Parametern sinnvoller.
Code:
in:request ^ ^ sh /weg/zum/skript/dasoertliche.sh ${SOURCE}
Quelle
(AVM Telefonbucheinträge können auch ausgegeben werden)
...eventuell auch mit Zielnummerncheck, damit das DECT Telefon keine snom XML geliefert bekommt. ;)
Also am Besten nur auf die dem snom zugeteilten Nummer reagieren lassen.
 
Zuletzt bearbeitet:
Richtig und das wollen wir ja nicht.
hmmm ... also die sourcen für sipsak irgendwo herbekommen und für die fritzbox kompilieren
oder gibts den binary schon irgendwo fix und fertig
 
Ich bin mir nicht sicher, im Trunk scheint es nicht zu sein (nicht gefunden).
Laut diesem Ticket scheint es aber in freetz stable 2.0 zu sein.

Ich denke, sipsak muss nicht unbedingt auf der Fritz!Box laufen.
Das könnte auch auf dem PHP-Webserver passieren.
Beispielsweise über ein CGI oder einen PHP Systemaufruf.
Der Callmonitor könnte auch mit wget oder curl den Seitenaufruf direkt machen.
Das PHP bastelt weiter ohne sipsak, wie gehabt, das XML fürs snom.
In etwa...
Code:
in:request ^ ^ wget -O - http://php.web.server/snom370/dasoertliche.php?caller=${SOURCE}
...oder, mit curl..
Code:
in:request ^ ^ curl php.web.server/snom370/dasoertliche.php?caller=${SOURCE}
Oder? Nee, geht doch nicht so einfach, aber sipsak vom Webserver aus schon. ;)
 
Zuletzt bearbeitet:
Hallo! Ich bin auch auf der Suche nach einer Lösung zur Rückwärtssuche. Ein Siemens DX800 kann das von Haus aus, SNOM offenbar nicht.

Da war ich ganz happy, dieses Script gefunden zu haben, aber es funktioniert nichtmehr. Vermutlich hat dasoertliche die Rückgabe geändert.. Kann das jemand anpassen, damit es wieder funktoniert?

Test / Ausgabe:

<?xml version="1.0" encoding="utf-8"?>”."><SnomIPPhoneText><Title>Anruf von 0308039579</Title><Text>Anrufer: <br/>Adresse: , </Text></SnomIPPhoneText>


Viele Grüße
 
Ich hab' da mal was vorbereitet abgeändert.
Wenn dir der Name genügt, dann kannst es mal hiermit probieren:
rsuche.php:
PHP:
<?php

// Aufruf in den "Aktions URL" mit: hostip/rsuche.php?caller=$remote

$tmp=explode('@', $_GET['caller']);
$caller=$tmp[0];
$intern=substr($caller,0,2);

if($intern=='**')
{
echo '<?xml version="1.0" encoding="utf-8"?>';
echo '<SnomIPPhoneText>';
echo "<Title>Anruf von $caller</Title>";
echo '<Text>';
echo "Anrufer ist intern";
echo '</Text>';
echo '</SnomIPPhoneText>';
}
else
{
if($caller=='anonymous' || empty($caller))
{
echo '<?xml version="1.0" encoding="utf-8"?>';
echo '<SnomIPPhoneText>';
echo "<Title>Anonymer Anruf</Title>";
echo '<Text>';
echo "Anrufer ist anonym";
echo '</Text>';
echo '</SnomIPPhoneText>';
}
else
{
$data=file_get_contents("http://www.dasoertliche.de/Controller?form_name=search_inv&ph=$caller");

if(preg_match('/var itemData(.*)/', $data, $result))
{
//print_r($result);
$result=urldecode($result[1]);
//print_r ($result);
$result=explode(",",$result);
//print_r($result);
$Name=str_replace('+',' ',substr($result[15],2,-1));
if(empty($Name))
$Name=str_replace('+',' ',substr($result[16],2,-1));
$Name=umlaute(utf8_decode($Name));
echo '<?xml version="1.0" encoding="utf-8"?>';
echo '<SnomIPPhoneText>';
echo "<Title>Anruf von $caller</Title>";
echo '<Text>';
echo "Anrufer: $Name";
echo '</Text>';
echo '</SnomIPPhoneText>';
}
else
{
echo '<?xml version="1.0" encoding="utf-8"?>';
echo '<SnomIPPhoneText>';
echo "<Title>Anruf von $caller</Title>";
echo '<Text>';
echo 'Anrufer nicht gefunden';
echo '</Text>';
echo '</SnomIPPhoneText>';
}
}
}

function umlaute($string)
{
$string=str_replace("%C3%84", "Ä", $string);
$string=str_replace("%C3%96", "Ö", $string);
$string=str_replace("%C3%9C", "Ü", $string);
$string=str_replace("%C3%A4", "ä", $string);
$string=str_replace("%C3%B6", "ö", $string);
$string=str_replace("%C3%BC", "ü", $string);
$string=str_replace("%C3%9F", "ß", $string);

return $string;
}
?>
Die Adresse ist aufwendiger.

PS: Es funktioniert auch auf einem Snom 320!
 
Zuletzt bearbeitet:
Ich habe noch was ergänzt. Teste mal.
Wahrscheinlich müssen die Umlaute noch angepaßt werden.

EDIT: Umlaute müßten jetzt auch passen.
 
Zuletzt bearbeitet:
Danke, damit gehts jetzt. Danke dir!
Ja, die Umlaute sehen etwas komisch aus. Und der Ort wär eigentlich auch ganz praktisch;)
 
Ja, die Umlaute sehen etwas komisch aus
Aber doch korrekt oder werden falsche Zeichen dargestellt?

Der Ort ist aber an der Stelle nicht vorhanden.
Was es dort noch gibt: Homepage und Email-Adresse.
Die werden noch nicht mal auf der originalen Seite angezeigt.
 
Zuletzt bearbeitet:
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.