.titleBar { margin-bottom: 5px!important; }

Callmonitor für SNOM 370

Dieses Thema im Forum "Freetz" wurde erstellt von Moehrlin, 12 Juni 2014.

  1. Moehrlin

    Moehrlin Neuer User

    Registriert seit:
    21 Apr. 2006
    Beiträge:
    16
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #1 Moehrlin, 12 Juni 2014
    Zuletzt bearbeitet: 12 Juni 2014
    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
      Dateigröße:
      1.6 KB
      Aufrufe:
      10
  2. koyaanisqatsi

    koyaanisqatsi IPPF-Urgestein

    Registriert seit:
    24 Jan. 2013
    Beiträge:
    10,281
    Zustimmungen:
    93
    Punkte für Erfolge:
    48
    #2 koyaanisqatsi, 12 Juni 2014
    Zuletzt bearbeitet: 12 Juni 2014
    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: 411375718@192.168.178.1
    CSeq: 1 MESSAGE
    Content-Type: text/plain
    Max-Forwards: 70
    User-Agent: sipsak 0.9.5
    From: sip:sipsak@192.168.178.1: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:sipsak@192.168.178.1:61836;tag=18851866
    To: sip:621@snom1:5060
    Call-ID: 411375718@192.168.178.1
    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. ;)
     
  3. Moehrlin

    Moehrlin Neuer User

    Registriert seit:
    21 Apr. 2006
    Beiträge:
    16
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  4. koyaanisqatsi

    koyaanisqatsi IPPF-Urgestein

    Registriert seit:
    24 Jan. 2013
    Beiträge:
    10,281
    Zustimmungen:
    93
    Punkte für Erfolge:
    48
    #4 koyaanisqatsi, 12 Juni 2014
    Zuletzt bearbeitet: 12 Juni 2014
    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.
     
  5. Moehrlin

    Moehrlin Neuer User

    Registriert seit:
    21 Apr. 2006
    Beiträge:
    16
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  6. koyaanisqatsi

    koyaanisqatsi IPPF-Urgestein

    Registriert seit:
    24 Jan. 2013
    Beiträge:
    10,281
    Zustimmungen:
    93
    Punkte für Erfolge:
    48
    #6 koyaanisqatsi, 12 Juni 2014
    Zuletzt bearbeitet: 12 Juni 2014
    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. ;)
     
  7. ProudLion

    ProudLion Neuer User

    Registriert seit:
    16 Feb. 2011
    Beiträge:
    65
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    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
     
  8. eisbaerin

    eisbaerin IPPF-Promi

    Registriert seit:
    29 Sep. 2009
    Beiträge:
    6,049
    Zustimmungen:
    98
    Punkte für Erfolge:
    48
    Beruf:
    Ursa maritimus
    Ort:
    Nordpol
    #8 eisbaerin, 21 Aug. 2017
    Zuletzt bearbeitet: 22 Aug. 2017
    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!
     
  9. ProudLion

    ProudLion Neuer User

    Registriert seit:
    16 Feb. 2011
    Beiträge:
    65
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
  10. eisbaerin

    eisbaerin IPPF-Promi

    Registriert seit:
    29 Sep. 2009
    Beiträge:
    6,049
    Zustimmungen:
    98
    Punkte für Erfolge:
    48
    Beruf:
    Ursa maritimus
    Ort:
    Nordpol
    #10 eisbaerin, 21 Aug. 2017
    Zuletzt bearbeitet: 22 Aug. 2017
    Ich habe noch was ergänzt. Teste mal.
    Wahrscheinlich müssen die Umlaute noch angepaßt werden.

    EDIT: Umlaute müßten jetzt auch passen.
     
  11. ProudLion

    ProudLion Neuer User

    Registriert seit:
    16 Feb. 2011
    Beiträge:
    65
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    Danke, damit gehts jetzt. Danke dir!
    Ja, die Umlaute sehen etwas komisch aus. Und der Ort wär eigentlich auch ganz praktisch;)
     
  12. eisbaerin

    eisbaerin IPPF-Promi

    Registriert seit:
    29 Sep. 2009
    Beiträge:
    6,049
    Zustimmungen:
    98
    Punkte für Erfolge:
    48
    Beruf:
    Ursa maritimus
    Ort:
    Nordpol
    #12 eisbaerin, 22 Aug. 2017
    Zuletzt bearbeitet: 22 Aug. 2017
    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.