[Anleitung] Trixbox: Reverese Lookup / Caller name Lookup für Schweizer Nummern

dajo

Neuer User
Mitglied seit
25 Mrz 2006
Beiträge
5
Punkte für Reaktionen
0
Punkte
1
Wir haben da für die Trixbox eine Lösung gezimmert für die Namensanzeige des Anrufenden (nur für Schweizer Nummern). Vielleicht nicht so elegant und perfekt - aber es funktioniert. Die Anleitung findet ihr auf der guest-voip.ch Seite.

Es basiert auf den folgenden freePBX Modulen:
Caller Name Lookup: http://www.freepbx.org/trac/ticket/946
Phonebook: http://www.freepbx.org/trac/ticket/893

Das Modul Caller Name Lookup ruft ein lokales PHP Script auf, dieses holt die Daten von tel.search.ch, formatiert diese etwas um und gibt als Resultat den Anrufernamen raus.

Gruss
Daniel
 
Hallo Daniel

Super Anleitung. Allerding muss in der index.php
include "snoopy.class.php"; in
include "Snoopy.class.php"; unbenannt werden.

Gruss
Stefan
 
Hoi Stefan

Super Anleitung. Allerding muss in der index.php
include "snoopy.class.php"; in
include "Snoopy.class.php"; unbenannt werden.

Ja danke. Habe wohl die Datei bei mir umbenannt... Werde das korrigieren.
Übrigens hat tel.search.ch noch einige Veränderungen im Code gemacht und ich habe das aktualisiert auf der guest-voip.ch Seite.

Gruss
Daniel
 
hallo daniel,

besten dank für die tolle anleitung. allerdings hat wahrscheinlich irgendwas im script von telsearch geändert in der letzten zeit...

bei mir erscheint immer:
Notice: Undefined index: tel in D:\HTML\test\index.php on line 12

dies wenn ich den test über den browser ausführe. irgendwie kann der parameter "tel" nicht korrekt erkannt werden.

hast du ev. eine idee?

merci und beste grüsse
callonme78
 
Zuletzt bearbeitet:
Hallo Daniel

Ich denke nicht dass tel.search.ch was geändert hat - bei mir klappts wunderbar.

Hast du eventuell beim kopieren des Codes die Formatierung mit übernommen? Es tönt ganz danach dass in deinem Code was nicht stimmt. Was genau kann ich aber nicht sagen.

Gruss
Daniel
 
hallo daniel,

besten dank für deine antwort. ich habe den code für die index.php mittels copy/paste (also 1 zu 1) kopiert... also genau so:
<?
/*************************************************************
Caller Name Lookup / CallerID reverse lookup for Swiss Numbers
(c) 2006 by it factory ag / www.guest-voip.ch
May be freely distributed without modification
Version: V1.2 / 17.8.06, Daniel Jörg
Link: http://www.guest-voip.ch/VoIP_Client_Setup
**************************************************************/

include "Snoopy.class.php";
$snoopy = new Snoopy;
$snoopy->fetch("http://tel.search.ch/" . $HTTP_GET_VARS['tel']);

$GrabStart = '<div class="rname">';
$GrabEnd = '<td class="changelink">';
$GrabData = eregi("$GrabStart(.*)$GrabEnd", $snoopy->results, $output1);
$output1[1] = str_replace("ö", "oe", $output1[1]);
$output1[1] = str_replace("Ö", "Oe", $output1[1]);
$output1[1] = str_replace("ä", "ae", $output1[1]);
$output1[1] = str_replace("Ä", "Ae", $output1[1]);
$output1[1] = str_replace("ü", "ue", $output1[1]);
$output1[1] = str_replace("Ü", "Ue", $output1[1]);
$output1[1] = str_replace(",", "", $output1[1]);
$output1[1] = str_replace("</div>", "ZZZ</div>", $output1[1]);


# HTML Code entfernen und Zeilenumbruch einfügen
$output1[1] =preg_replace('/(\\s+)/', ' ',$output1[1] );
$output1[1] = strip_tags($output1[1]);
$output1[1] = str_replace("ZZZ", "\n", $output1[1]);
$name= explode("\n", wordwrap($output1[1], 20));

echo $name[0];
?>

habe ich da was übersehen?

grüsse
callonme78
 
Zuletzt bearbeitet:
Bei mir funktioniert es auch nicht. Wenn ich aber wie hier beschrieben die Abfrage mit dem Web-Browser mache, erhalte ich das gewünschte Resultat. Nur beim Amrufen wird nichts angezeigt und die Konsole enthält auch keine hilfreichen Informationen. Ich finde nirgens einen Hinweis, dass «CID Lookup» überhaupt ausgeführt wird.
 
Mir ist klar, dass dies Umlaute ersetzen soll:
Code:
$output1[1] = str_replace("ö", "oe", $output1[1]); 
$output1[1] = str_replace("Ö", "Oe", $output1[1]); 
$output1[1] = str_replace("ä", "ae", $output1[1]); 
$output1[1] = str_replace("Ä", "Ae", $output1[1]); 
$output1[1] = str_replace("ü", "ue", $output1[1]); 
$output1[1] = str_replace("Ü", "Ue", $output1[1])
Leider werden bei mir die Umlaute nicht dargestellt, obwohl ich /etc/sysconfig/i18n angepasst habe
Code:
LANG="de_DE.ISO8859-1"
SUPPORTED="de_DE.ISO8859-1:de_DE:de"
SYSFONT="lat0-sun16"
Was ist hier falsch? Noch besser wäre es natürlich, man könnte Umlaute verwenden – irgendeine Idee, wie das zu machen wäre?
 
Zuletzt bearbeitet:
So jetzt funktioniert es wie gewünscht. – Zumindest auf meiner privaten Trixbox. Auf einer zweiten (praktisch gleich aufgebauten) Trixbox will es einfach nicht klappen. Die Nummern-Auflösung im Browser funktioniert; aber immer wenn ich bei einer «Inbound Route» die Quelle auf «telsearch» stelle, landet der Anrufer entweder in einer Warteschlange oder sucht eine nichtdefinierte Mailbox.

Es ist zum Verzweifeln.

Ich glaube den Grund gefunden zu haben. Es werden keine Anrufe durchgestellt, deren Nummer nicht im Telefonbuch gespeichert ist, bzw. nicht im Internet gefunden werden kann.
 
Zuletzt bearbeitet:
Hab das Script mal ein bisschen angepasst, damit auch Firmennamen eruiert werden können. Wenn also ein Mitarbeiter einer Firma von seiner Direktnummer anruft, also z.B. 032XXX6073 - und bei tel.search kein dazugehöriger Eintrag gefunden wird, wird die jeweils letzte Ziffer mit einer 0 ersetzt, um die möglicherweise eingetragene Nummer der Zentrale zu finden. In diesem Beispiel wäre das 032XXX6070. Falls auch hier nichts gefunden wird, werden die letzten zwei Stellen durch 0 ersetzt und bei wiederum keinem Erfolg die letzten drei.

Bei einer Anpassung der Rufnummer wird vor den Namen jeweils ein (V) gesetzt, um anzugeben, dass der angezeigte Name möglicherweise nicht korrekt ist.

Code:
<?
include "Snoopy.class.php";
$telefonnr = $HTTP_GET_VARS['tel'];
$snoopy = new Snoopy;
$snoopy->fetch("http://tel.search.ch/" . $telefonnr);

$GrabStart = '<div class="rname">';
$GrabEnd = '<td class="changelink">';
$GrabData = eregi("$GrabStart(.*)$GrabEnd", $snoopy->results, $output1);

$changeoutput = 0;

if($output1[1] == "")
{
	$changeoutput = 1;
	$ziffern = strlen($telefonnr)-1;
	$telefonnr = substr($telefonnr, 0, $ziffern).'0';
	$snoopy2 = new Snoopy;
	$snoopy2->fetch("http://tel.search.ch/" . $telefonnr);
	$GrabData = eregi("$GrabStart(.*)$GrabEnd", $snoopy2->results, $output2);
	if($output2[1] == "")
	{
		$ziffern = strlen($telefonnr)-2;
		$telefonnr = substr($telefonnr, 0, $ziffern).'00';
		$snoopy3 = new Snoopy;
		$snoopy3->fetch("http://tel.search.ch/" . $telefonnr);
		$GrabData = eregi("$GrabStart(.*)$GrabEnd", $snoopy3->results, $output3);
		if($output2[1] == "")
		{
			$ziffern = strlen($telefonnr)-3;
			$telefonnr = substr($telefonnr, 0, $ziffern).'000';
			$snoopy4 = new Snoopy;
			$snoopy4->fetch("http://tel.search.ch/" . $telefonnr);
			$GrabData = eregi("$GrabStart(.*)$GrabEnd", $snoopy4->results, $output4);
			$output = $output4[1];
		}
		else
		{
			$output = $output3[1];
		}
	}
	else
	{
		$output = $output2[1];
	}
}
else
{
	$output = $output1[1];
}

$output = str_replace("ö", "oe", $output);        
$output = str_replace("Ö", "Oe", $output);        
$output = str_replace("ä", "ae", $output);        
$output = str_replace("Ä", "Ae", $output);        
$output = str_replace("ü", "ue", $output);        
$output = str_replace("Ü", "Ue", $output);        
$output = str_replace(",", "", $output);        
$output = str_replace("</div>", "ZZZ</div>", $output);        


# HTML Code entfernen und Zeilenumbruch einfügen
$output =preg_replace('/(\\s+)/', ' ',$output ); 
$output = strip_tags($output);
$output = str_replace("ZZZ", "\n", $output);        
$name= explode("\n", wordwrap($output, 20));

if ($changeoutput == 0)
{
	echo '(V) '.$name[0];
}
else
{
	echo $name[0];
}
?>
 
Hi Gifty43

Wäre es dir möglich alle nötigen Dateien zur Verfügung zu stellen?
Leider kann ich die ursprünglichen Daten nicht mehr finden.

Vielen herzlichen Dank.

Gruess Raffi
 
Anpassung nötig

HiHo Folks

Habe soeben das Modul eingebaut und festgestellt, dass im Script noch eine Anpassung notwendig ist:

Code:
<?
include "Snoopy.class.php";
$telefonnr = $HTTP_GET_VARS['tel'];
$snoopy = new Snoopy;
$snoopy->fetch("http://tel.search.ch/" . $telefonnr);

$GrabStart = '<div class="rname">';
#$GrabEnd = '<td class="changelink">';
$GrabEnd = '<div id="moreresults"></div>';
$GrabData = eregi("$GrabStart(.*)$GrabEnd", $snoopy->results, $output1);

$changeoutput = 0;

if($output1[1] == "")
{
	$changeoutput = 1;
	$ziffern = strlen($telefonnr)-1;
	$telefonnr = substr($telefonnr, 0, $ziffern).'0';
	$snoopy2 = new Snoopy;
	$snoopy2->fetch("http://tel.search.ch/" . $telefonnr);
	$GrabData = eregi("$GrabStart(.*)$GrabEnd", $snoopy2->results, $output2);
	if($output2[1] == "")
	{
		$ziffern = strlen($telefonnr)-2;
		$telefonnr = substr($telefonnr, 0, $ziffern).'00';
		$snoopy3 = new Snoopy;
		$snoopy3->fetch("http://tel.search.ch/" . $telefonnr);
		$GrabData = eregi("$GrabStart(.*)$GrabEnd", $snoopy3->results, $output3);
		if($output2[1] == "")
		{
			$ziffern = strlen($telefonnr)-3;
			$telefonnr = substr($telefonnr, 0, $ziffern).'000';
			$snoopy4 = new Snoopy;
			$snoopy4->fetch("http://tel.search.ch/" . $telefonnr);
			$GrabData = eregi("$GrabStart(.*)$GrabEnd", $snoopy4->results, $output4);
			$output = $output4[1];
		}
		else
		{
			$output = $output3[1];
		}
	}
	else
	{
		$output = $output2[1];
	}
}
else
{
	$output = $output1[1];
}

$output = str_replace("ö", "oe", $output);
$output = str_replace("Ö", "Oe", $output);
$output = str_replace("ä", "ae", $output);        
$output = str_replace("Ä", "Ae", $output);
$output = str_replace("ü", "ue", $output);
$output = str_replace("Ü", "Ue", $output);
$output = str_replace(",", "", $output);
$output = str_replace("</div>", "ZZZ</div>", $output);


# HTML Code entfernen und Zeilenumbruch einfuegen
$output =preg_replace('/(\\s+)/', ' ',$output );
$output = strip_tags($output);
$output = str_replace("ZZZ", "\n", $output);
$name= explode("\n", wordwrap($output, 20));

if ($changeoutput == 0)
{
	echo '(V) '.$name[0];
}
else
{
	echo $name[0];
}
?>

Übrigens die Daten gibts hier.

Gruss

Zöbi
 
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.