ISDN Modul

Hallo,
ich habe nochmal eine Frage zum ISDN Modul.
Wenn bei uns jemand mit unterdrückter Rufnummer anruft wird mein Ereignis Script nicht ausgeführt.

Bei Kontrolle im Debug Fenster sehe ich aber bei unterdrückter Rufnummer die gleichen Meldungen wie bei übermittelter Rufnummer.

Ist es bei Euch auch so das bei unterdrückter Rufnummer das ereignis Script nicht ausgeführt wird, oder habe ich etwas Falsch gemacht ?

Hallo Horst,

bei mir funktioniert es tadellos. Ich poste mal mein Skript. Ich habe es auch nur geklaut und für meine Bedürfnisse zurechtgeschnitten.:smiley:

<?
 //Aktive Verbindungen ausgeben
//print_r (ISDN_GetActiveConnections(57865 /*[Zuhaus\ISDN\ISDN]*/));
include 'function.ips.php';
echo "Start";
 if($IPS_SENDER == "ISDN")
 {
    //Informationen ins Meldungsfenster ausgeben
    echo " Event: ".$ISDN_EVENT."\r";

    //Ablageort für termine.txt
    $filename = IPS_GetKernelDir()."telefonbuch.txt";

    //Informationen ins Meldungsfenster ausgeben
    $stunde=date("H");
    $minute=date("i");
    $zeit = $stunde.":".$minute;
    $tag = date("d");
    $monat = date("m");
    $jahr = date("Y");

    if($ISDN_EVENT == "Incoming")
    {
         $callinfo = ISDN_GetConnectionInfo(57865 /*[Zuhaus\ISDN\ISDN]*/ , $ISDN_CONNECTION);
		//Mehr Informationen ausgeben
     print_r($callinfo);

        
	//internes Telefonbuch abfragen
        	$tel = $callinfo['CallingNumber'];
			echo $tel."
";

			if ($tel == "")
			{
			$string = "
".date("d. M.  H:i:s")."
von: Unbekannt
für: ".$callinfo["CalledNumber"];
			TextboxListe(47301 /*[Zuhaus\ISDN\ISDN \Anrufer]*/,$string,32);
			return;
			}
			
      	$Anrufer_Name = "";
        	$anruffile = file_get_contents($filename);                 // Einträge in Variable einlesen
        	$anruf_arr_komplett = explode("
", $anruffile);         // nach Zeilenumbruch trennen und in array
        	
       foreach($anruf_arr_komplett as $key => $value)              // alle Einträge durchlaufen
       {
        //$value =  str_replace("
","",$value) ;                  // CR rausfiltern
          $anruf_arr = explode(",", $value);                       // einzelnen Datensatz in Daten zerlegen

         	$anruf_tel		= $anruf_arr[0];
          	$anruf_name		= $anruf_arr[1];
          	$anruf_stadt	= $anruf_arr[2];

				if ($anruf_tel == $tel)                                // Übereinstimmung internes Telefonbuch und Anrufer
            {
                $Anrufer_Name = $anruf_name;
                $string = "
".date("d. M.  H:i:s")."
von: ".$callinfo["CallingNumber"]."
".$anruf_name."
".$anruf_stadt."
für: ".$callinfo["CalledNumber"];
            }
        }

        // externes Telefonbuch abfragen
        if ($Anrufer_Name == "")              // Wenn internes Telefonbuch kein Ergebnis brachte extern suchen
        {
		      $url="http://www.dasoertliche.de/Controller";
				$telefonnummer = $callinfo["CallingNumber"];
				$query=array("form_name"=>"search_inv","ph"=>$telefonnummer);
				$data=http_post_fields($url,$query);


					if (preg_match('/na: "(.*)"/', $data, $result))  // Haben wir ein Ergebniss?
						{
							//print_r ( $result);
							IPS_LogMessage("ISDN",$data);
				    		$name=$result[1]." (KT)";

						    // --- Optional: PLZ, Ort, Strasse&Hnr
						    if(preg_match('/pc: "(.*)"/', $data, $result))  // PLZ
						       $plz=$result[1];
						        print_r ( $result);
						    if(preg_match_all('/ci: "(.*)"/', $data, $result))  // Stadt
						       $stadt=urldecode($result[1][0]);
						        print_r ( $result);
						    if(preg_match('/st: "(.*)"/', $data, $result))  // Strasse
						       $strasse=urldecode($result[1]);
						        print_r ( $result);
						    // --- Optional ENDE

							echo $name."
";
							echo $strasse." - ".$plz." ".$stadt;

							$string = "
".date("d. M.  H:i:s")."
von: ".$callinfo["CallingNumber"]."
".$name."  ".$strasse."  ".$plz." ".$stadt."
für: ".$callinfo["CalledNumber"];



						}
						
					else
						{
			    			$name = "Nummer nicht im Telefonbuch";
			    			$string = "
".date("d. M.  H:i:s")."
von: ".$callinfo["CallingNumber"]."
".$name."
für: ".$callinfo["CalledNumber"];
						}
						
         	$handle = fopen($filename, "a");
				fwrite($handle, $telefonnummer.",".$name.",".$stadt."
");
				fclose($handle);
				
			}
			
				TextboxListe(47301 /*[Zuhaus\ISDN\ISDN \Anrufer]*/,$string,32);
    }
    
   if ($ISDN_EVENT == "Connect")
		    {
		      IPS_RunScript(51254 /*[Überwachung\Anwesend]*/);
		      TextboxListe(47301 /*[Zuhaus\ISDN\ISDN\Anrufer]*/,"Ruf angenommen",32);
		    }
 }

?>

Danke Christian,

werde es nachher mal probieren.

So habe es mal probiert ging aber auch nicht.

Aber, nachdem ich einmal die Ausgehende MSN aktiviert und wieder deaktiviert habe regiert das ISDN Modul auch auf unterdrückte Rufnummern.

Also alles ist gut ;-))

Moin,

dein Skript gefällt mir sehr gut und ich versuche es gerade einzubauen. Nach leichten Startschwierigkeiten, das Ganze überhaupt zum laufen zu bekommen, habe ich hier noch die Ein oder Andere Frage:

Momentane Konfiguration von Telefonanlage und IP-Symcon:

Telefonanlage: Auerswald Compact 3000
IP-Symcon liegt auf einem Server mit eingebauter Fritz! PCI - ISDN Karte
Interne MSN des Telefons am Büroarbeitsplatz ist die 25
Interne MSN der Fritzkarte bzw. des Servers ist die 26

Die Fragen:

Was sind CIPValue und State für Werte und ist es normal, dass er bei CallingNumber die erste 0 entfernt (ISDN_GetConnectionInfo)?

Bei CalledNumber zeigt er mir die interne MSN, also die 25 an. Ist es irgendwie möglich mir dort die externe gewählte Rufnummer anzeigen zu lassen? Da ich eigentlich für jede Rufnummer ein eigenes ISDN Modul einrichten wollte, habe ich es auch schon mit einer der Rufnummern als MSN versucht. Klappt allerdings nicht.

Bei einem Anruf zeigt er mir lediglich Incoming an, egal ob ich den Hörer abnehme, wieder auflege, etc. Gibt es eine Möglichkeit das Skript bei jeder Änderung am Anschluss erneut zu starten, bzw. bauen die ganzen Skripte die sich hier so finden lassen, ja sogar darauf auf, dass ein Anruf weiter verarbeitet wird, geht dies nur, wenn ich IP-S den Hörer abnehmen lasse oder gibt es eine Möglichkeit IP-S registrieren zu lassen, wenn ich manuell den Anruf annehme oder eben aber verpasse?

Hallo,

mit der Null ist noch ein Fehler im ISDN Modul, das ISDN Modul wird aber wohl nicht weiter entwickelt weil fast jeder eine Fritzbox hat und dort wird es nicht mehr gebraucht.

Zur CallingNumber, es ist so das die Telefonnummer in 2 Teilen übertragen wird, einmal die Info Ortsgespräch, Deutschland oder Welt und dann die Rufnummer. Die Rufnummer hat immer keine 0. Dein Telefon mixt dann aus den beiden Informationen die Angezeigt Rufnummer zusammen. Aus der Info deutschland und Rufnummer 64644 macht dein Telefon dann 064644.

Schöne Grüße
Thomas

Ah ok,

vielen Dank für die Infos. Die fehlende Null stört ja auch nicht weiter. Wichtiger wäre mir die gewählte externe Rufnummer angezeigt zu bekommen bzw. Falls möglich sogar verschiedene ISDN-Module für externe Nummern eingerichtet zu bekommen. Ich hab aber leider noch keinen Weg gefunden, das um zu setzen.

Bietet die Fritzbox denn auch Vorteile In Verbindung mit einer bestehenden Telefonanlage (Auerswald Compact 3000) oder ist sie sogar besser, falls ich austauschen würde?

Wichtig für mich umzusetzen war eine E-Mail Benachrichtigung bei Anruf mit Popup auf anderen PCs und gleichzeitigem Starten von Evernote, vorbefüllt mit relevanten Informationen. Diese werden mit der Bürosoftware und notfalls mit online Telegonbüchern abgeglichen.

Bis auf Evernote hab ich das auch alles schon umsetzen können. Was jetzt zusätzlich noch fehlt oder nicht funktioniert ist die Reaktion auf Abnehmen und Auflegen des Hörers und halt die Anzeige der externen MSN. Wenn das überhaupt funktioniert.

Hallo,

in diesen Beitrag hatte ich meine Variante des ISDN Scriptes veröffentlicht, vielleicht hilft dir das weiter.
http://www.ip-symcon.de/forum/f39/ereignisskript-isdn-modul-probleme-isdn_event-19252/#post171920
Anstatt der Twitter Meldung eine E-Mail zu versenden sollte kein Problem sein.

Schöne Grüße
Thomas

Hallo Thomas,

ich habe zwar auch eine Fritzbox, frage mich aber, wie ich ohne ISDN Modul z.B. Voice Meldungen von IPS an mein Handy übermitteln oder per DTMF Tönen bestimmte Funktionen schalten kann.

Hast Du da Beispiele, wie das nativ mit der Fritzbox ohne ISDN Modul geht?

Moin Thomas,

die E-Mail und das Popup auf verschiedenen PCs hatte ich schon, das war kein Problem.

Eine der großen Fragen ist, wie kann ich überhaupt mit dem Status Connected arbeiten?

Doch vermutlich nur, wenn IP Symcon das Telefonat selbst an nimmt, denn wenn bei eingehendem Anruf das Skript einmal durchgerattert ist, dann startet er es bei Statuswechsel ja nicht noch einmal. Einzige Idee wäre im Skript nach dem Verarbeiten der Telefonnummer für 2 Minuten alle 10 Sekunden den Status abzufragen und bei einem Connect diesen weiter zu verarbeiten und bei einem Disconnect abzubrechen. Hmm muss ich nachher zu Hause mal testen.

Hallo,

Für die Sachen die mit dem ISDN Modul funktionieren benutze ich es auch noch, nur dort kommt nicht neues. Neue Scripte usw erscheinen hier im Forum eigentlich nur nach für die Fritzbox.

Schöne Grüße
Thomas

So wie es ausschaut, scheint es laut Forenbeiträgen ein generelles Problem zu sein, dass das ISDN-Modul bei Statusänderung, das Skript kein Zweites mal startet, so wie es eigentlich vorgesehen ist.

Ich habe bisher auch keinen Weg gefunden das zu umgehen. Schade, denn an sonsten, abgesehen von der fehlenden anzeige der gerufenen Nummer und eben halt dem erneuten Ausführen bei Statuswechsel, verrichtet das Modul seine Dienste bei mir ganz gut.