User Tools

Site Tools


snom_tel.search.ch_lookup

Snom tel.search.ch lookup

Snom Phones are able to call Action URLs on incomin calls.

Just put this line into: Setup → Action URL Settings → Incoming call:

http://www.spacerat.ch/call.php?caller=$remote&line=$local

<?php
// Adressabfrage via tel.search.ch v1.0
// Siehe http://picks.ch/voip-telefon-snom-370/

// Server interessiert nicht. Wir brauchen die Rufnummer.
$tmp = explode('@', $_GET['caller']);
$caller = $tmp[0];
$origin = $caller;

askTelsearch($caller);

// Falls wir keine Resultate haben verkürzen wir die Rufnummer um max. 3 Ziffern.
// Eventuell stammt der Anruf aus einem Durchwahlbereich.
for ($i = 1; $i <= 3 && count($name[1]) == 0; $i++) {
	$caller = substr($caller, 0, strlen($caller)-1);
	$modcaller = true;
	askTelsearch($caller);
}

$body = '';
$title = 'Anruf von '.$origin;
// Mehrere Resultate für diese Rufnummer.
// Wir zeigen alle Namen als Liste.
if (count($name[1]) > 1) {
	$title .= ' ('.count($name[1]).' Resultate)';
	$i = 0;
	if ($modcaller) { $body .= 'Keine exakten Treffer!!!<br/>'; }
	foreach ($name[1] as $eintrag) {	
		$body .= $eintrag;
		if ($modcaller) { $body .= ' ('.$phone[1][$i].')'; }
		$body .= '<br/>';
		$i++;
	}
// Nur 1 Resultat für diese Rufnummer.
// Wir zeigen die vollständige Adresse.
} elseif (count($name[1]) == 1) {
	preg_match_all('/<content\ type=\"text\">(.*?)<\/content>/i', $atom, $single);
	if ($modcaller) { $body .= 'Keine exakten Treffer!!!<br/>'; }
	$body .= $single[1][0];
} else {
	$body = 'Keine Resultate gefunden :-(';
}

// XML für das SNOM 370 ausgeben
echo '<?xml version="1.0" encoding="UTF-8"?>';
?><SnomIPPhoneText>
<Title><?=$title?></Title>
<Prompt><?=$title?></Prompt>
<Text>
<?=$body?>
</Text>
</SnomIPPhoneText>
<?php

// Funktion zur API-Abfrage von tel.search.ch
function askTelsearch($caller) {
	global $atom, $name, $phone;
	$atom = file_get_contents("http://tel.search.ch/api/?was=$caller");
	$atom = str_replace("\n", '<br/>', $atom);
	$atom = utf8_encode($atom);
	
	$offset = strpos($atom, '<entry>', $offset);
	if ($offset) {
		preg_match_all('/<title\ type=\"text\">(.*?)<\/title>/i', $atom, $name, PREG_PATTERN_ORDER, $offset);
		preg_match_all('/<br\/>\ *\*{0,1}([0-9 ]*?)<\/content>/i', $atom, $phone, PREG_PATTERN_ORDER, $offset);
	}
}

credits goes to: http://geekbox.ch/voip-telefon-snom-370/ Author: Matthias.

snom_tel.search.ch_lookup.txt · Last modified: 2016/09/15 13:34 by admin