aastra 6739i mit z.B. Tel.search.ch verbinden?

jmar83

Neuer User
Mitglied seit
10 Sep 2013
Beiträge
109
Punkte für Reaktionen
0
Punkte
16
Das gibts ja gar nicht! Jetzt funktioniert die Auflösung per XML-Taste!
die xml-apps gehen nur, wenn auch korrektes xml geliefert wird, das wird daran liegen... wenn fehlerhaftes xml an das telefon geleitet wird, dann passiert auf seite des telefons überhaupt nix, es kommt auch keine fehlermeldung!!

UND: sobald das php-skript korrekt programmiert ist, trägst du die URI sinnvollerweise unter "Erweiterte Einstellungen" -> "URI-Aktion" -> "Ankommende Anrufe" ein! dann werden dir nämlich die namens- und adressdaten angezeigt wenn jemand anruft, ohne dass du irgendeine taste drücken musst... ;-)


ob das xml nun korrekt ist oder nicht, erfährst du an einfachsten in dem du (wie bereits gemacht) die url mit all den get-parametern im browser eingibst:

zum testen bspw. am browser folgendes eingeben:

http://dein_nas/AastraPhoneDirectoryLookup.php?number=004171xxxxxxx&key=dein_schluessel

004171xxxxxxx = platzhalter nummer
dein_schlüssel = platzhalter schlüssel

dann solltest du, falls die nummer in tel.search.ch eingegeben ist, folgende xml ausgabe erhalten (nicht auf die ausgabe im browser schauen, sondern den quelltext im browser anschauen!!!):

bsp. für die nummer 0041326251111 (ubs filiale solothurn) bekommst du folgendes xml zurück:

<AastraIPPhoneTextScreen>
<Title>0041326251111</Title>
<Text>UBS AG
Amthausplatz 1
4500 Solothurn/SO
*032 625 11 11</Text>
</AastraIPPhoneTextScreen>




nun muss ich als erstes mal wissen was

a.) dein nas zurückgibt an den browser (neuerdings ohne den "komischen" fehler...)

b.) dein webhosting an den browser zurückgibt (komischer fehler bleibt...?)



(wie gesagt nicht die browser-ausgabe, sondern den seitenquelltext posten. in firefox geht das über einen rechtsklick -> "Quelltext" oder so)

poste bitte mal die 2 xml ausgaben, 1x mit dem nas, 1x mit dem webhosting... als nummer kannst du als beispiel 0041326251111 (ubs solothurn) nehmen, die existiert nämlich in tel.search.ch - so gibt es keine probleme mit der nichtexistenten datenbank(tabelle).


dass dein telefon unter dem parameter $$REMOTENUMBER$$ die nummer "nur" national ausgibt, ist eher unvorteilhaft. du hast doch auch ein aastra 6739i, wie ich? dann wird es wohl am provider liegen, dass der die nummern nicht im int. format an die endgeräte weiterreicht.

unvorteilhaft daran ist, dass man ohne int. nummern nicht differenzieren kann (!):

*********************************************************
schweizer nummer? - JA - dann frage tel.search.ch ab
|
NEIN
|
...dann mache was anderes (oder gar nix!)
*********************************************************

was hast du für eine firmware-version auf deinem 6739i (aber daran wird's wohl nicht liegen, trotzdem würde es mich interessieren..) was hast du für einen voip-anbieter? frage evtl. mal dort nach an was es liegt dass die nummer nicht im int. format reinkommen. (mein provider heisst "telephoenix" und dort kommt die nr im int. format rein)
 
Zuletzt bearbeitet:

jmar83

Neuer User
Mitglied seit
10 Sep 2013
Beiträge
109
Punkte für Reaktionen
0
Punkte
16
UPDATE!

Bitte verwende von jetzt an diesem quellcode:

(hier kommt noch ein xml-header dazu: <?xml version="1.0" encoding="UTF-8" standalone="yes"?>,

des weiteren wird die ganze xml-ausgabe nach utf-8 kovertiert. vorher gabs bei mir probleme auf dem telefon bei umlauten, das telefon hat in diesem fall ebenfall KEINE fehlermeldung, sondern GAR NIX augegeben...!!

des weiteren wird der wert zwischen dem xml-tag "<text>" als "CDATA" (canonical data) ausgegeben, was bei einer validierung ausgeschlossen wird. hat aber aktuell keinen unterschied zur folge...)

Code:
<?php
require_once 'dbconfig.inc.php';
require 'dbhandler.inc.php';

header ("Content-Type:text/xml");
$none = 'Es liegen keine Anruferinformation zu dieser Nummer vor.';
$remoteNumber = $none;

if(isset($_GET['number']) && $_GET['number'] != '')
{
	$remoteNumber = escapeString($_GET['number']);
}

if(!(isset($_GET['key']) && $_GET['key'] != ''))
{
	doXML($remoteNumber, 'Es wurde kein API-Key für die Abfrage unter tel.search.ch gefunden.');
	exit;
}

function curl_get($url, array $get = NULL, array $options = array())
{
	// CURLOPT_TIMEOUT geändert von 4 nach 1
	$defaults = array(
	CURLOPT_URL => $url. (strpos($url, '?') === FALSE ? '?' : ''). http_build_query($get),
	CURLOPT_HEADER => 0,
	CURLOPT_RETURNTRANSFER => TRUE,
	CURLOPT_TIMEOUT => 1
	);

	$ch = curl_init();
	curl_setopt_array($ch, ($options + $defaults));
	if( ! $result = curl_exec($ch))
	{
		@trigger_error(curl_error($ch));
		exit;
	}
	curl_close($ch);
	return $result;
}

if($remoteNumber != $none)
{
	$swissNumberPrefix = '0041';

	// ist schweizer nummer?
	if(substr($remoteNumber, 0, 4) == $swissNumberPrefix)
	{
		$localNumber = convertIntNumberFormatToLocalFormat($remoteNumber);

		$key = $_GET['key'];
		$params = array ( 'was' => $localNumber, 'key' => $key );
		@preg_match('#<content type="text">(.+?)</content>#is', curl_get('http://tel.search.ch/api/', $params), $matches);

		// schweizer nummer vorhanden in tel.search.ch?
		if($matches!=null || count($matches) > 0)
		{
			// schweizer nummer vothanden in tel.search.ch
			doXML($remoteNumber, $matches[1]);
		}
		else
		{
			// schweizer nummer nicht vorhanden in tel.search.ch
			$db_result = getMySQLRowValues("SELECT lastname, firstname, company, email, street, city, state, zip FROM cards WHERE phone = '".$localNumber."';");
			$last_name = $db_result[0];

			if($last_name == null || $last_name == '')
			{
				doXML($remoteNumber, $none);
			}
			else
			{
				$first_name = $db_result[1];
				$company = $db_result[2];
				$email = $db_result[3];
				$street = $db_result[4];
				$city = $db_result[5];
				$state = $db_result[6];
				$zip = $db_result[7];

				$output = $last_name.' '.$first_name;

				if(!($company == null || $company == '' || strtolower($company) == 'privat'))
				{
					$output = $output.', '.$company;
				}

				if(!($email == null || $email == ''))
				{
					$output = $output.', '.$email;
				}

				if(!($street == null || $street == ''))
				{
					$output = $output.', '.$street;
				}

				if(!($city == null || $city == ''))
				{
					if($state == null)
					{
						$state = '';
					}
					else
					{
						$state = '/'.$state;
					}

					if(!($zip == null || $zip == '' || $zip == '0' || $zip == 0))
					{
						$output = $output.', '.'CH-'.$zip.' '.$city.$state;
					}
					else
					{
						$output = $output.', '.$city.$state;
					}
				}

				doXML($remoteNumber, $output);
			}
		}
	}
}
else
{
	doXML($remoteNumber, $none);
}

function convertIntNumberFormatToLocalFormat($arg)
{
	return '0'.substr($arg, 4);
}

function getMySQLRowValues($sqlQuery)
{
	$resultSet = mysql_query($sqlQuery);
	$row = mysql_fetch_array($resultSet);
	return $row;
}

function doXML($title, $text)
{
	$out = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'."\r\n";
	$out = $out.'<AastraIPPhoneTextScreen>'."\r\n";
	$out = $out.'<Title>'.$title.'</Title>'."\r\n";
	$out = $out.'<Text><![CDATA['.replaceXMLEntities($text).']]></Text>'."\r\n";
	$out = $out.'</AastraIPPhoneTextScreen>';
	print utf8_encode($out);
}

function escapeString($arg)
{
	if(get_magic_quotes_gpc())
	{
		$arg = stripslashes($arg);
	}

	$arg = str_replace('%','\%',$arg);
	$arg = str_replace('_','\_',$arg);
	$arg = addslashes($arg);

	return $arg;
}

function replaceXMLEntities($arg)
{
	$arg = utf8_encode($arg);
	
	$arg = str_replace ('&', '+', $arg);
	$arg = str_replace ("'", '', $arg);
	$arg = str_replace ('"', '', $arg);

	$arg = str_replace ('Ä', 'Ae', $arg);
	$arg = str_replace ('Ö', 'Oe', $arg);
	$arg = str_replace ('Ü', 'Ue', $arg);
	$arg = str_replace ('ä', 'ae', $arg);
	$arg = str_replace ('ö', 'oe', $arg);
	$arg = str_replace ('ü', 'ue', $arg);

	$arg = str_replace ('ß', 'ss', $arg);

	return $arg;
}

?>
 
Zuletzt bearbeitet:

jmar83

Neuer User
Mitglied seit
10 Sep 2013
Beiträge
109
Punkte für Reaktionen
0
Punkte
16
wenn du es nicht hinkriegst, dass die nr. im int. format reinkommen, dann änderst du den quelltext am besten folgendermassen:

$swissNumberPrefix = '0041';

// ist schweizer nummer?
if(substr($remoteNumber, 0, 4) == $swissNumberPrefix)
{
$localNumber = convertIntNumberFormatToLocalFormat($remoteNumber);

nach

$numberPrefix = '0';
// ist es überhaupt eine telefonnummer? (manche voip-anbieter unterstützen bspw. skype-nach-voip-anrufe...)
if(substr($remoteNumber, 0, 1) == $numberPrefix)
{
$localNumber = $remoteNumber;
der nachteil an dieser "lösung" ist, dass auch ausländische nummern an tel.search.ch weitergeleitet werden. was natürlich unsinn ist!

da die zeile mit der convertIntNumberFormatToLocalFormat-funktion entfernt wird, kannst du auch folgende funktion komplett aus dem quelltext entfernen:

function convertIntNumberFormatToLocalFormat($arg)
{
return '0'.substr($arg, 4);
}
mit dieser änderung wird nun einzig geprüft, ob die nummer mit einer '0' beginnt, das wäre dann eher eine generelle prüfung auf nummern im öffentl. telefonnetz ("pstn"). wie im quelltext-kommentar hervorgehoben, lassen manche voip-anbieter skype-anrufe auf voip-endgeräte zu. (dann wird dann keine nummer, sondern was in der art [email protected] auf dem display angezeigt...


eine andere möglichkeit wäre es, nur tel.search.ch abfragen wenn die nummer nicht mit '00' anfängt, also keine int. nummer ist:

$intNumberPrefix = '00';
// ist es keine int. nummer?
if(!(substr($remoteNumber, 0, 2) == $intNumberPrefix ))
{
$localNumber = $remoteNumber;
 
Zuletzt bearbeitet:

boomli

Neuer User
Mitglied seit
1 Jan 2013
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
Hallo

Ich habe natürlich den http-aufruf in die Aktion: ankommender Ruf gemacht.. Nur zum testen (damit ich nicht immer anrufen muss) habe ich es auf eine Taste gelegt.
Wie gesagt, es klappt nun wunderbar, hatte einfach in deinem Script $remotenumber=$localnumber eingebaut, da tel.search angeblich beide varianten versteht (national und international). Auch habe ich Funktion zur abfrage von 0041 aufgehoben.
Es klappt wunderbar!
Einfach, sobald ich das auf dem externen Webserver machen will, gings nicht. (Fehlermeldung welche ich versuche hier irgendwie reinzukriegen..) (vermutlich ein php-Problem..)
Leider kenne ich mich da nicht so aus, aber ich versuche nun, Telefonnummern in ein Eingabefenster zu tippen welche dann von tel.search gesucht werden. (Für verpasste Anrufe)

Vielen Dank, es klappt nun!

fehler.PNG
 

jmar83

Neuer User
Mitglied seit
10 Sep 2013
Beiträge
109
Punkte für Reaktionen
0
Punkte
16
gerngeschehen, kein problem! wenn tel.search.ch auch ch-nummern im int. format versteht, ist meine convertIntNumberFormatToLocalFormat-funktion in diesem fall überflüssig, danke für die info! :)

"Einfach, sobald ich das auf dem externen Webserver machen will, gings nicht. (Fehlermeldung welche ich versuche hier irgendwie reinzukriegen..) (vermutlich ein php-Problem..)"

wenn du weder den screenshot, noch den text des browserfensters copy/paste-mässig postest, sondern den quelltext der die fehlermeldung verursacht, kann ich dir evtl. weiterhelfen...?

quelltext anzeigen geht folgendermassen:

firefox -> im browserfenster einen rechtsklick machen, dann auf "Seitenquelltext anzeigen" klicken
ie (habe nur version 8 da ich noch xp verwende) -> im browserfenster einen rechtsklick machen, dann auf "View source" klicken. (bei meiner engl. version; bei dir das entsprechende in deutsch halt...)


ich denke das problem könnte von daher kommen, dass dein hosting-anbieter die erweiterung "CURL" nicht installiert oder deaktivert hat? (verwendest du ein gratis-host? bei den von mir angegebenen hostern, freehostia & 000webhost, ist "CURL" evtl. deaktivert. (?) das könnte das problem sein.)

CURL wird benötigt damit der server, auf dem das php läuft, einen http-request auf http://tel.search.ch/api/ machen kann, das ist natürlich UNBEDINGT notwendig... ;-)

"Leider kenne ich mich da nicht so aus, aber ich versuche nun, Telefonnummern in ein Eingabefenster zu tippen welche dann von tel.search gesucht werden. (Für verpasste Anrufe)"

sowas ist garantiert möglich, allerdings bin ich auch ein blutiger anfänger was das darstellen & interagieren von grafischen benutzeroberflächen auf aastra-sip-telefonen betrifft. irgendwie kannst du sicher eingabefelder auf dem telefon darstellen, diese mit einem wert ausfüllen und damit einen http-request machen. (der dir anschliessend wieder xml für eine andere grafische darstellung liefert...)

hier gibt es die referenz zur xml-api: http://www.aastra.ch/cps/rde/aareddownload?file_id=6354-14800-_P04_XML&dsproject=www-aastra-ch-de&mtype=zip


als sprache, welche auf einem webserver läuft und das entsprechende xml generiert, empfehle ich dir php. das ist das "einfachste". (alternativen wären perl, java, asp.net und noch ein paar andere mehr...)

[edit foschi: bitte Schieben vermeiden! Die Bearbeiten-Funkion läßt Dich vorhandene Postings erweitern.]
und noch was: im .zip-file gibt es eine php-klassenbibliothek (objektorientiert) welche du verwenden könntest. dann müsstest du die xml-ausgabe nicht selbst organisieren. wie ich es in der funktion doXML(..., ...) mache.

für anwendungen mit einem komplexeren gui ("grafical user interface") aber sicher brauchbar...

sicher interessant wäre es, wenn man die abfrage der namens- und adressdaten auch bei den vergangenen u. verpassten anrufen anwenden könnte...
 
Zuletzt bearbeitet:

boomli

Neuer User
Mitglied seit
1 Jan 2013
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
Hallo Jan
Bei Externen Webhoster sieht der Quelltext so aus:

?php
mysql_connect($db_host, $db_username, $db_password) or die('Datenbankverbindung fehlgeschlagen');
mysql_select_db($db_database);
?>

Hoffe habe es nun richtig gemacht mit der Fehlermeldung.. :)


Wahrscheinlich liegt es am Webserver, werde mich mal schlau machen..

Besten DankFehler_Internet-Explorer.PNG
 

jmar83

Neuer User
Mitglied seit
10 Sep 2013
Beiträge
109
Punkte für Reaktionen
0
Punkte
16
Hallo boomli

Copy/Paste-Problem?

Richtig wäre in der Datei dbhandler.inc.php


<?php
mysql_connect($db_host, $db_username, $db_password) or die('Datenbankverbindung fehlgeschlagen');
mysql_select_db($db_database);
?>


Das rote fehlt bei dir... wenn das vergessen wird, wird der Quelltext nicht serverseitig (!) verarbeitet ("interpretiert"), sondern nur am browser ausgegeben, so wie er ist...


OT: Was hast du eigentlich für ein Gerät von Synology, würde mich interessieren als Webserver zu hause. Geht das alles problemlos, der gibt's da einen Haken? FTP bietet das Gerät auch? MySQL läuft problemlos? (Beschränkte Konfigurationsmöglichkeiten oder was auch immer... na ja, im Notfall kann man sich ja auch SSH-root-Zugriff auf der Linux-System im Gerät verschaffen, aber damit macht man sich dann üblicherweise die Garantie zunichte...)
 
Zuletzt bearbeitet:

boomli

Neuer User
Mitglied seit
1 Jan 2013
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
Hallo Jan
Du hattest völlig recht! Ein Copy/Paste Problem!! Ach herrje..!
Danke vielmals!
Die Version funktioniert nun super!
Ich bin noch am wenig am tüfteln wie ich eine SQL als 'Zentrales-Kurzwahlverzeichnis' machen kann, und diese auch bearbeiten kann via Browser..

Hast du sowas auch am laufen?

Grüsse Boomli
 

jmar83

Neuer User
Mitglied seit
10 Sep 2013
Beiträge
109
Punkte für Reaktionen
0
Punkte
16
Hallo Boomli

Scheinbar ist das "Error Reporting" bei deinem Hosting-Providers anders eingestellt auf auf deinem NAS-System, wenn nur am einen Ort der Fehler wegen dem fehlenden "<" angezeigt wurde.

Schaue, dass du das Error Reporting bei deinem NAS so einstellen kannst, dass ALLE Fehler (nicht aber Warnungen) angezeigt werden. Es ist sicherheitstechnisch NICHT problematisch, wenn du Zuhause in deinem "Intranet" bei PHP alle Fehler ausgibst. Bei öffentlichen Webseiten kann das ein Problem sein (wenn schlecht programmiert) dass in den Fehlermeldungen irgendwelche Daten sind.



Ich empfehle dir, eine Kontaktverwaltung in der Form eines PHP-Scripts. Entweder zuhause auf deinem NAS (warum nicht, es spricht gar nichts dagegen sowas zu Hause zu hosten - die Administration wird so einfacher. Und wenn dein NAS 2 HDs gespiegelt als RAID-1 hat...) oder bei deinem Hosting-Provider (dann bist du noch gegen Stromausfälle, Brände, Diebstahl, Erdbeben und was auch immer alles gewappnet...;-) ich meine eine "normale" Homepage wird ja sicher bei einem Hoster gehostet, aber so ein Script für eine Kontaktverwaltung kannst du gerade so gut als Intranet-Anwendung zu Hause hosten.

Die Kontaktverwaltung MUSS als Datenbank MySQL verwenden wenn du meinen vorhandenen Code nutzen willst mit der priorisierenden Abfrage zuerst->tel.search.ch, dann (wenn nichts gefunden)->eigener Datenbestand. Da wirst du sicher was finden... (PHP & MySQL sind als Kombination seeeeeehr etabliert)

anschliessend muss du einfach das hier anpassen:

PHP:
{
			// schweizer nummer nicht vorhanden in tel.search.ch
			$db_result = getMySQLRowValues("SELECT lastname, firstname, company, email, street, city, state, zip FROM cards WHERE phone = '".$localNumber."';");
			$last_name = $db_result[0];

			if($last_name == null || $last_name == '')
			{
				doXML($remoteNumber, $none);
			}
			else
			{
				$first_name = $db_result[1];
				$company = $db_result[2];
				$email = $db_result[3];
				$street = $db_result[4];
				$city = $db_result[5];
				$state = $db_result[6];
				$zip = $db_result[7];
                                .......
Vor allem Die SQL-Abfrage in der getMySQLRowValues(...)-Funktion. Es kommt dann halt einfach darauf an, wieviele Felder (Spalten/Attribute, hoffe du verstehst, was ich meine) in der DB-Tabelle der Kontaktverwaltung vorhanden sind.

Die Einträge im Array $db_result[index] sind in der gleichen Reihenfolge wie in der SQL-Abfrage:



$db_result = getMySQLRowValues("SELECT lastname, firstname, company, email, street, city, state, zip FROM cards WHERE phone = '".$localNumber."';");
$last_name = $db_result[0];

if($last_name == null || $last_name == '')
{
doXML($remoteNumber, $none);
}
else
{
$first_name = $db_result[1];
$company = $db_result[2];


(An die admins: kann den Code nicht als Quelltext formatieren, weil sonst die andere Formatierung (Farbe, Schriftgrösse) verloren geht!)

sowie


PHP:
<?php
$db_host = 'localhost';
$db_database = 'contacts';
$db_username = 'contacts';
$db_password = 'hier_kommt_das_passwort_rein';
$db_port = 3306;
?>

Hier kommt der gleiche MySQL-Useraccount rein, den auch die Kontaktverwaltung nutzt.

Zu PHP & MySQL findest du massenhaft Sachen im Netz.


EDIT: Nachtrag: Darf ich dich noch fragen?

- Was hast du für ein NAS?
- Welchen Provider verwendest du?

Teilweise gibt es bei div. Hosting-Anbietern bereits vorinstallierte Kontaktverwaltungsapplikationen. (Schlagwort "CRM" -> "Customer Relationship Management")

Evtl. auch auf deinen NAS...?
 
Zuletzt bearbeitet:

boomli

Neuer User
Mitglied seit
1 Jan 2013
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen
Es ist nun schon eine Weile her als dieses Thema das letzte Mal behandelt wurde, vielleicht kann mir doch jemand helfen..


Nun möchte ich eigentlich ganz simpel, das Script weiterverwenden indem zusätzlich ein .txt file nach der Nummer gesucht werden soll.
Als Beispiel steht in einer Zeile:
Katee,Littlefield,Tional Japan,Accountant,+1 (213)555-2761,,+1 (293)555-4300
Vorname, Nachname, Firma, Position, Nummer1, Nummer2, Nummer3

Falls eine von diesen Nummern 'matcht' sollte der Name aufgelöst werden können..

Kann mir da jemand weiterhelfen?
Vielen Dank
 

mschaedler

Neuer User
Mitglied seit
1 Dez 2015
Beiträge
1
Punkte für Reaktionen
0
Punkte
0
Hallo Miteinander
Gerne würde ich dies mit den Neuen Endgeräten (Mitel 6867i) umsetzen. Kann mir da jemand auf die Sprünge helfen?

Braucht man zwingend einen Web Server dazu?

Vielen Dank für eure Antworten
 

digitalcomposer

Neuer User
Mitglied seit
15 Feb 2016
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Hoi Jan,

Ich habe alles eingerichtet wie beschrieben mit tel.search.ch key und mysql datenbank, leider wenn ich in Chrome teste
http ://ip/mitel/telsearch/AastraPhoneDirectoryLookup.php?number=0041265505872&key=28... bekomme ich nur leere site mit :

This XML file does not appear to have any style information associated with it. The document tree is shown below.

Datenbank telefonbuch, tabelle cards, spalten lastname, firstname, .....

Danke
 
Zuletzt bearbeitet:

jmar83

Neuer User
Mitglied seit
10 Sep 2013
Beiträge
109
Punkte für Reaktionen
0
Punkte
16
hoi digitalcomposer

da ich kein chrome verwende, kann ich das problem leider nicht nachvollziehen. eigentlich spielt es auch keine rolle was der browser anzeigt, denn das xml muss nur valide für das telefon sein.
 
Zuletzt bearbeitet:

digitalcomposer

Neuer User
Mitglied seit
15 Feb 2016
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Das Telefon zeigt nur die ankommende Nummer, wie ohne xml, der Abfrage Link ist als URI im Telefon eingegeben :


Http://ip/mitel/telsearch/AastraPhoneDirectoryLookup.php?number=$$REMOTENUMBER$$&key=28...
 

digitalcomposer

Neuer User
Mitglied seit
15 Feb 2016
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Hoi Jan,

Jetzt klappt auch bei mir alles sehr gut, habe einfach vergessen, dass wir Proxy haben :mad:, besten dank für den Script.

Wenn du in der nähe von Zürich bist, ist die erste Runde von mir.

Gruss Nikolay!
 

sike

Neuer User
Mitglied seit
5 Apr 2005
Beiträge
161
Punkte für Reaktionen
0
Punkte
0
Eine sehr coole Sache!

Hab es zum laufen gebracht auf einen 6869. Ich hätte zwei Fragen:

-Bei mir kommt alles auf eine Zeile. Ist es möglich CR's einzufügen?
-Es es möglich dass wenn der anrufer aufhängt, dass wieder der normale Screen gezeigt wird?

Hier die mein Code die ich von oben kopiert habe:

<?php
require_once 'dbconfig.inc.php';
require 'dbhandler.inc.php';


header ("Content-Type:text/xml");
$none = 'Es liegen keine Anruferinformation zu dieser Nummer vor.';
$remoteNumber = $none;


if(isset($_GET['number']) && $_GET['number'] != '')
{
$remoteNumber = escapeString($_GET['number']);
}


if(!(isset($_GET['key']) && $_GET['key'] != ''))
{
doXML($remoteNumber, 'Es wurde kein API-Key für die Abfrage unter tel.search.ch gefunden.');
exit;
}


function curl_get($url, array $get = NULL, array $options = array())
{
// CURLOPT_TIMEOUT geändert von 4 nach 1
$defaults = array(
CURLOPT_URL => $url. (strpos($url, '?') === FALSE ? '?' : ''). http_build_query($get),
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_TIMEOUT => 1
);


$ch = curl_init();
curl_setopt_array($ch, ($options + $defaults));
if( ! $result = curl_exec($ch))
{
@trigger_error(curl_error($ch));
exit;
}
curl_close($ch);
return $result;
}


if($remoteNumber != $none)
{


$numberPrefix = '0';
// ist es überhaupt eine telefonnummer? (manche voip-anbieter unterstützen bspw. skype-nach-voip-anrufe...)
if(substr($remoteNumber, 0, 1) == $numberPrefix)
{
$localNumber = $remoteNumber;


$key = $_GET['key'];
$params = array ( 'was' => $localNumber, 'key' => $key );
@preg_match('#<content type="text">(.+?)</content>#is', curl_get('http://tel.search.ch/api/', $params), $matches);


// schweizer nummer vorhanden in tel.search.ch?
if($matches!=null || count($matches) > 0)
{
// schweizer nummer vothanden in tel.search.ch
doXML($remoteNumber, $matches[1]);
}
else
{
// schweizer nummer nicht vorhanden in tel.search.ch
$db_result = getMySQLRowValues("SELECT lastname, firstname, company, email, street, city, state, zip FROM cards WHERE phone = '".$localNumber."';");
$last_name = $db_result[0];


if($last_name == null || $last_name == '')
{
doXML($remoteNumber, $none);
}
else
{
$first_name = $db_result[1];
$company = $db_result[2];
$email = $db_result[3];
$street = $db_result[4];
$city = $db_result[5];
$state = $db_result[6];
$zip = $db_result[7];


$output = $last_name.' '.$first_name;


if(!($company == null || $company == '' || strtolower($company) == 'privat'))
{
$output = $output.', '.$company;
}


if(!($email == null || $email == ''))
{
$output = $output.', '.$email;
}


if(!($street == null || $street == ''))
{
$output = $output.', '.$street;
}


if(!($city == null || $city == ''))
{
if($state == null)
{
$state = '';
}
else
{
$state = '/'.$state;
}


if(!($zip == null || $zip == '' || $zip == '0' || $zip == 0))
{
$output = $output.', '.'CH-'.$zip.' '.$city.$state;
}
else
{
$output = $output.', '.$city.$state;
}
}


doXML($remoteNumber, $output);
}
}
}
}
else
{
doXML($remoteNumber, $none);
}


function convertIntNumberFormatToLocalFormat($arg)
{
return '0'.substr($arg, 4);
}


function getMySQLRowValues($sqlQuery)
{
$resultSet = mysql_query($sqlQuery);
$row = mysql_fetch_array($resultSet);
return $row;
}


function doXML($title, $text)
{
$out = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'."\r\n";
$out = $out.'<AastraIPPhoneTextScreen>'."\r\n";
$out = $out.'<Title>'.$title.'</Title>'."\r\n";
$out = $out.'<Text><![CDATA['.replaceXMLEntities($text).']]></Text>'."\r\n";
$out = $out.'</AastraIPPhoneTextScreen>';
print utf8_encode($out);
}


function escapeString($arg)
{
if(get_magic_quotes_gpc())
{
$arg = stripslashes($arg);
}


$arg = str_replace('%','\%',$arg);
$arg = str_replace('_','\_',$arg);
$arg = addslashes($arg);


return $arg;
}


function replaceXMLEntities($arg)
{
$arg = utf8_encode($arg);

$arg = str_replace ('&', '+', $arg);
$arg = str_replace ("'", '', $arg);
$arg = str_replace ('"', '', $arg);


$arg = str_replace ('Ä', 'Ae', $arg);
$arg = str_replace ('Ö', 'Oe', $arg);
$arg = str_replace ('Ü', 'Ue', $arg);
$arg = str_replace ('ä', 'ae', $arg);
$arg = str_replace ('ö', 'oe', $arg);
$arg = str_replace ('ü', 'ue', $arg);


$arg = str_replace ('ß', 'ss', $arg);


return $arg;
}


?>
Bei Snom kann es nachher mit http://127.0.0.1/command.htm?key= F_MINIBROWSER_EXIT weggebracht werden beim Erreignis Hangup

http://picks.ch/voip-telefon-snom-370/
 

emons

Neuer User
Mitglied seit
7 Jul 2016
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Hallo,
Ich weiß mittlerweile sind einige Jahr vergangen - jedoch habe ich heute ein 6739i bekommen und würde auch gerne dieses feature nutzen.
Ähnliche Voraussetzungen mysql am NAS, genauso wie TFTP in Verbind mit Firmware 3.3.1.4358.

Jedoch möchte ich gerne dies nicht nur auf die Schweiz einsetzen sondern weltweit.
Dazu hätte https://github.com/punneetmehta/Truecaller-UnOfficial-API gefunden, wobei mir das php umbauen doch mehr Probleme verursacht, als gedacht.

Könntet Ihr mir hierzu helfen?
Besten Dank im voraus!
LG
 

hey01

Neuer User
Mitglied seit
17 Mrz 2017
Beiträge
1
Punkte für Reaktionen
0
Punkte
0
Hallo,
bei mir wird die Rufnummer so eingezeigt 0-061....

es wird immer angezeigt das er keine Anrufinformationen findet. Ich gehe davon aus das diese 0- das Problem an der Sache ist. Wenn die Nummer direkt im Browser eingegeben ist funktioniert alles.
Wie kann ich Zeichen von der Rufnummer entfernen?
besten Dank
 

3CX PBX - GRATIS
Linux / Win / Cloud

Statistik des Forums

Themen
231,876
Beiträge
2,016,249
Mitglieder
348,976
Neuestes Mitglied
peter.gr