Ergebnis 1 bis 7 von 7

Thema: Internes Telefonbuch?

  1. #1
    IPPF-Fünfhundert-Club
    Registriert seit
    14.10.2004
    Beiträge
    656

    Internes Telefonbuch?

    Hallo.

    Ich nutz ein kleines Script, damit auf meinem VDR eingehende Anrufe angezeigt werden.

    exten => 12345,1,agi(vdr-callerid.sh|${CALLERID},${EXTEN})

    Damit werden allerdings nur Nummern übermittel.

    Schöner wäre es, wenn man Namen zu den ${EXTEN} zuordnen könnte & ein Telefonbuch füren das anstatt der Nummer bei ${CALLERID} den Namen anzeigt.

    Hab hier schon gesucht, aber nichts gefunden.

    Einen Tipp wo ich suchen muss würde mich freuen.
    --
    cucu

  2. #2
    IPPF-Tausend-VIP
    Registriert seit
    22.08.2004
    Ort
    LE
    Beiträge
    1.950
    habe mir soeben mal gedanken darüber gemacht;

    füge einfach in folgende Zeilen in das script ein
    Code:
    require mySqlLib;
    my $DBH = connectDb();
    my %REQ2=readDbMore($DBH,"select `firstname`, `lastname` from telefonbuch WHERE $ARGV[0] =`phone` or $ARGV[0] =`mobile`");
    foreach my $zeile (sort keys %REQ2) {
    	foreach my $spalte (sort keys %{$REQ2{$zeile}}) {
    		print " ".$REQ2{$zeile}{$spalte};
    	}
    }
    diese zeilen bewirken eine Abfrage der DB nach der übergebenen telefonnummer;
    es wird noch das folgende Modul benötig in dem alle DB-Daten stehen

    Code:
    # mySqlLib.pm
    sub connectDb {
    	eval "use DBI 1.19;";
    
    	# exit to error eval
    	die $@ if $@;
    	
    	# database-driver
    	my %DB = (	driver		=>	'mysql',
    
    			# database-host
    			host		=>	'localhost',
    				
    			# database
    			name		=>	'asterisk',
    
    			# database-user
    			user		=>	'asterisk',
    
    			# database-user-passwort
    			passwort	=>	'',
    		);
    
    	# stelle Verbindung zur Datenbank her und gebe Datenbank-handle nach $DBH zurück
    	my $DBH = DBI->connect("DBI:$DB{driver}:$DB{name}:$DB{host}", $DB{user}, $DB{passwort});
    	
    	# Datenbank-Handle an Aufrufende zurückgeben
    	return $DBH;
    } 
    # <--------------------- sub connectDb
    
    
    
    # sub lesen aus Datenbank &#40;mit dieser sub ist auch
    # das schreiben in eine datenbank möglich&#41;
    #
    # SYNTAX&#58;
    # my %request = readDb&#40;"&#91;SQL-SYNTAX&#93;"&#41;;
    sub readDb &#123;
    	
    	# SQL-SYNTAX holen
    	my $SYNTAX = shift;
    
    	# Datenbank connect
    	my $DBH = connectDb&#40;&#41;;
    
    	# Datenbank auslesen, Daten in %DB_REQ zurückgeben
    	my %DB_REQ=&readDbMore&#40;$DBH,$SYNTAX&#41;;
    
    	# Datenbank disconnect
    	disconnectDb&#40;$DBH&#41;;
    
    	# %DB_REQ an Aufrufende zurückgeben
    	return %DB_REQ;
    &#125; # <--------------------- sub readDb
    
    
    # sub schreiben in Datenbank
    #
    # SYNTAX&#58;
    # doDb&#40;"&#91;SQL-SYNTAX&#93;"&#41;;
    sub doDb &#123;
    	
    	# SQL-SYNTAX holen
    	my $SYNTAX = shift;
    
    	# Datenbank connect
    	my $DBH = connectDb&#40;&#41;;
    
    	# SQL-Anfrage ausführen
    	$DBH->do&#40;$SYNTAX&#41;;
    
    	# Datenbank disconnect
    	disconnectDb&#40;$DBH&#41;;
    
    	# true zurückgeben &#40;ist nur der Form 
    	# halber oder wenn Abfragen, ob IO enthalen&#41;
    	return 1;
    &#125; # <--------------------- sub doDb
    
    
    # sub lesen aus Datenbank &#40;mit dieser sub ist auch 
    # das schreiben in eine datenbank möglich&#41;
    # Diese Sub ist anzuwenden, wenn man mehrere Anfragen 
    # an eine Datenbank hat und nicht jedesmahl neu connecten will &#40;Zeit&#41;
    #
    # SYNTAX&#58;
    # my %request = readDbMore&#40;$Datenbank-Handle,"&#91;SQL-SYNTAX&#93;"&#41;;
    sub readDbMore &#123;
    
    	# Datenbank-Handle holen
    	my $DBH = shift;
    
    	# SQL-SYNTAX holen
    	my $SYNTAX = shift;
    
    	# globale Variablen deklarieren &#40;sind nur in der Sub gültig&#41;
    	my &#40;@COLUMNS,$TABLE&#41;;
    
    	# SYNTAX parsen, um zu prüfen, ob eine select-Anweisung. Wenn ja, dann ...
    	if &#40;$SYNTAX=~/^select &#40;.*&#41; from &#40;&#91;\S&#93;*&#41;&#40; .*&#41;?/i&#41; &#123;
    
    		# Feldnamen und Tabellennamen holen ...
    		my $COLUMNS=$1; $TABLE=$2;
    
    		# wenn Feldnamen explizit angegeben, dann ...
    		unless &#40;$COLUMNS=~/\*/&#41; &#123;
    
    			# Feldnamen ...
    			$COLUMNS=~s/&#91; \`\"\'&#93;//g;
    
    			# holen und in ARRAY @COLUMNS zurückgeben
    			@COLUMNS=split&#40;/,/,$COLUMNS&#41;;
    
    		# wenn Feldnamen nicht explizit angegeben, als alle Felder
    		# &#40;SQL-SYNTAX&#58; select * from ....&#41;, dann ...
    		&#125; else &#123;
    
    			# die Feldnamen aus der Tabelle selbst abfragen
    			# &#40;hier SQL-SYNTAX vorbereiten&#41;
    			my $STH = $DBH->prepare&#40;"show columns from $TABLE"&#41;;
    
    			# hier Anfrage an die Datenbank senden
    			$STH->execute&#40;&#41;;
    
    			# Rückgabewerte der Datenbank in @FIELDS zurückgeben
    			while &#40;my @FIELDS = $STH->fetchrow_array&#40;&#41;&#41; &#123;
    
    				# Feldnamen in @COLUMNS speichern
    				push @COLUMNS ,$FIELDS&#91;0&#93;;
    			&#125;
    
    			# Datenbankabfrage beenden
    			$STH->finish&#40;&#41;;
    		&#125;
    	&#125;
    
    	# eigendliche Datenbankanfrage vorbereiten &#40;nur wenn $SYNTAX angegeben&#41;
    	my $STH = $DBH->prepare&#40;$SYNTAX&#41; if $SYNTAX;
    
    	# Hash für Rückgabewert an Aufrufende deklarieren
    	my %DB_REQ;
    
    	# hier Anfrage an die Datenbank senden
    	$STH->execute&#40;&#41;;
    
    	# internen Zähler für Zeilen mit 0 deklarieren
    	my $II=0;
    
    	# Rückgabe der Datenbank zeielenweise durchgehen
    	while &#40;my @FIELDS = $STH->fetchrow_array&#40;&#41;&#41; &#123;
    
    		# dabei die Anzahl der Feldnamen berücksichtigen
    		# &#40;dient zur Aufbereitung des Rückgabewertes für Aufrufende&#41;
    		for &#40;my $I=0;$I<=$#FIELDS ;$I++&#41; &#123;
    
    			# einzelne Felder in 2 Dimensionen
    			# &#40;1. Rückgabezeile/Datenbankzeile, 2. Feldname&#41;
    			# im Hash %DB_REQ speichern
    			$DB_REQ&#123;$II&#125;&#123;$COLUMNS&#91;$I&#93;&#125;=$FIELDS&#91;$I&#93;;
    		&#125;
    
    		# Zähler für Zeilen ikrementieren
    		$II++;
    	&#125;
    
    	# Datenbankabfrage beenden
    	$STH->finish&#40;&#41;;
    
    	# Mehrdimensionalen Hash an Aufrufende zurückgeben
    	return %DB_REQ;
    &#125; # <--------------------- sub readDbMore
    
    # sub connect Database
    sub disconnectDb &#123;
    
    	# Datenbank-Handle holen
    	my $DBH=shift;
    
    	# Datenbank disconnect
    	$DBH->disconnect&#40;&#41;;
    &#125; # <--------------------- sub disconnectDb
    
    # true für require
    1;
    # ----------------------------------------------------------------------------------------------------
    Anbindung: T-DSL 768/128, Arcor DSL-Flat 2 MBit/256kbits
    Router: Cisco 806
    Server: Asterisk branch 1.8
    Phone(s): Cisco 7970, Cisco 7971, Cisco 7906, Cisco 7912, Cisco 7921, Cisco 7940, iphone
    channel: chan-sccp-b v4 DeveloperPreview
    Provider: sipgate.de, sipphone.com

  3. #3
    IPPF-Fünfhundert-Club
    Registriert seit
    14.10.2004
    Beiträge
    656
    oh, danke für die Idee. Allerdings benutz ich Asterisk ohne DB.
    ibts keine einfachere Möglichkeit?
    --
    cucu

  4. #4
    Grandstream-Guru Avatar von betateilchen
    Registriert seit
    30.06.2004
    Ort
    am Letzenberg
    Beiträge
    12.888
    Der Asterisk hat doch eine eigene Datenbank integriert. Und das, was Du da machen willst, geht ganz einfach über die Funktion LookupCIDName

    http://www.voip-info.org/wiki-Asteri...+LookupCIDName

    Doku lesen vor dem Posten einer Frage würde helfen, einen Großteil der hier immer wiederkehrenden Grundsatzfragen zu vermeiden!

    Alles mit ...box am Ende ist mir suspekt. Egal ob Fritz... Trix... Horst... oder was anderes am Anfang steht. Einzige Ausnahme: Match...

    Jetzt erhältlich: Das Buch zum Kurs! Betateilchen's Asterisk Baukasten

    Bitte keine unaufgeforderten Supportanfragen per PN !

  5. #5
    IPPF-Tausend-VIP
    Registriert seit
    22.08.2004
    Ort
    LE
    Beiträge
    1.950
    Du kannst dieses auch benutzen ohne das deine Konfiguration in einer DB steht;
    Es gebe noch die Möglichkeit die asterisk eigenen DB zu verwenden oder die daten in einemn DB/TXT File zu speichern;
    Meiner Meinung nach ist dies aber recht umständlich und neigt leicht zu Fehler;

    cu
    Anbindung: T-DSL 768/128, Arcor DSL-Flat 2 MBit/256kbits
    Router: Cisco 806
    Server: Asterisk branch 1.8
    Phone(s): Cisco 7970, Cisco 7971, Cisco 7906, Cisco 7912, Cisco 7921, Cisco 7940, iphone
    channel: chan-sccp-b v4 DeveloperPreview
    Provider: sipgate.de, sipphone.com

  6. #6
    IPPF-Tausend-VIP
    Registriert seit
    22.08.2004
    Ort
    LE
    Beiträge
    1.950
    @betateilchen

    genau die idee hatte ich anfangs auch;
    Was mich dann davon abgebracht hatte ist das somit nur ein Datensatz pro Person angelegt werden muss; ausserdem hat man noch sein eigenes ENUM
    Anbindung: T-DSL 768/128, Arcor DSL-Flat 2 MBit/256kbits
    Router: Cisco 806
    Server: Asterisk branch 1.8
    Phone(s): Cisco 7970, Cisco 7971, Cisco 7906, Cisco 7912, Cisco 7921, Cisco 7940, iphone
    channel: chan-sccp-b v4 DeveloperPreview
    Provider: sipgate.de, sipphone.com

  7. #7
    IPPF-Fünfhundert-Club
    Registriert seit
    14.10.2004
    Beiträge
    656
    Zitat Zitat von betateilchen
    Der Asterisk hat doch eine eigene Datenbank integriert. Und das, was Du da machen willst, geht ganz einfach über die Funktion LookupCIDName

    http://www.voip-info.org/wiki-Asteri...+LookupCIDName
    Vielen Dank für den Tipp. Werd mir das ganze mal anschauen.
    --
    cucu

Ähnliche Themen

  1. Internes Telefonbuch anzeigen
    Von luchs3 im Forum snom
    Antworten: 21
    Letzter Beitrag: 27.10.2009, 14:45
  2. Antworten: 4
    Letzter Beitrag: 03.10.2009, 17:48
  3. Internes oder FBF Telefonbuch
    Von Wäldler im Forum FRITZ!Box Fon: Telefonie
    Antworten: 5
    Letzter Beitrag: 19.04.2009, 14:07
  4. internes Telefonbuch in Asteriskathome
    Von GTRDRIVER im Forum FreePBX, TrixBox (Asterisk@Home)
    Antworten: 2
    Letzter Beitrag: 09.11.2006, 21:09
  5. Internes Telefonbuch
    Von Laechler im Forum Asterisk Allgemein
    Antworten: 0
    Letzter Beitrag: 15.12.2005, 09:16

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •