GS/* Telefonbuch

Chaotux

Neuer User
Mitglied seit
10 Nov 2005
Beiträge
198
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich habe ein kleines AJAX Telefonbuch programmiert, was hauptsaechlich auf Grandstream Telefone abzielt evtl. zusammen mit einer Asterisk Installation. Theoretisch laeuft es aber auch ganz ohne SIP-Telefon.

Neue Homepage: http://lxtek.de/gsphonebook/

Features
* Neu in 0.8a - Syncmoeglichkeit mit Android-Geraeten (ab Android 2.0)
* Neu in 0.8 - Direktanwahl (Telefonnummer per Tastatur eingeben)
* Neu in 0.7 - Idlescreen wird jetzt flexibler per PHP generiert.
* Neu in 0.6 - Anzeige der Anrufinformationen andere Telefone auf GS Idlescreen.
* Neu in 0.5 - Klickbare BLFs (Waehlen, Heranholen, "Stehlen")
* Neu in 0.5 - Unterstuetzung fuer unterschiedliche GS Telefon Konten
* Neu in 0.5 - Zusaetzliche konfigurierbare Felder fuer die Webansicht
* Neu in 0.4 - Busy-Lamp-Fields fuer Extensions, Asterisk Hints und SIP-Server.
* Neu in 0.3 - Benachrichtigung bei eingehenden Anrufen incl. CallerID und Name (sofern bekannt)
* Neu in 0.3 - Anruferliste
* Frei (GPL)
* Gettext-Unterstuetzung. Beinhaltet bereits eine deutsche und englische Uebersetzung.
* Multi-User-faehig. Jeder Eintrag kann einer Gruppe zugewiesen werden und nur Mitglieder dieser Gruppe sehen dann den entsprechenden Eintrag.
* Grandstream-Telefone koennen so konfiguriert werden, dass sie automatisch das Telefonbuch herunterladen.
* Jeder Benutzer kann sich per Webfrontend drei Klingeltoene aussuchen, die das Telefon herunterladen soll.
* Click-to-dial-Funktion (erfordert Asterisk)
* Anwahl auch per URL moeglich ".../dial.php?dest=..." (erfordert Asterisk)

Falls es jemanden interessiert: http://lxtek.de/gsphonebook/

Lars
 
Zuletzt bearbeitet:
Hallo,

ich habe ein kleines AJAX Telefonbuch programmiert, was hauptsaechlich auf Grandstream Telefone abzielt evtl. zusammen mit einer Asterisk Installation. Theoretisch laeuft es aber auch ganz ohne SIP-Telefon.

Nicht schlecht... Kann man evtl. bei so manchen Installationen verwenden... Nur wo ist da eine Interaktion des Browsers über AJAX??? sehe nur normale dynamisch PHP Seiten.
 
Nur wo ist da eine Interaktion des Browsers über AJAX??? sehe nur normale dynamisch PHP Seiten.

Aeh. Alles geht ueber AJAX :). Na ja. Nicht alles. Die Anmeldung und Abmeldung sind seperat. Hast Du mal gesucht und Eintraege editiert/geloescht/neu angelegt? Es werden immer nur die Teile der Seite aktualisiert, die aktualisiert werden muessen. Daher fuehlt es sich fuer mich viel schneller an als "normale" PHP-Seiten. Allerdings habe ich es hier natuerlich auch lokal installiert. :). Ueber's Internet ist es evtl. etwas langsamer.

Falls Du mir nicht glauben solltest, kannst Du Dir in Firefox den Seitenquelltext anzeigen lassen. Der liefert Dir immer die Startseite mit dem Telefonbuch direkt nach dem Einloggen, da dies der einzige regulaere HTTP-Request ist (ausser Du markierst Seitenteile und laesst Dir nur den Quelltext der Markierung anzeigen).

Wobei ich das ganze natuerlich nicht wegen AJAX programmiert habe, sondern weil ich das Telefonbuch in den Grandstream Telefonen vernuenftig nutzbar machen und den Usern die Kontrolle ueber deren eigenen Klingeltoene geben wollte.
 
cooles Ding !!

Jetzt müsste man den GS Entwicklern nur noch beibringen das es Leute gibt die mehr als 70 Telfonbucheinträge benötigen ..... ;-)
 
Version 0.3 ist jetzt fertig. Es werden jetzt eingehende Anrufe angezeigt und man hat eine Anruferliste (sofern man Asterisk einsetzt).

Jetzt müsste man den GS Entwicklern nur noch beibringen das es Leute gibt die mehr als 70 Telfonbucheinträge benötigen ..... ;-)

Ist das bei den neuen Telefonen (GXP-2010 und 2020) auch noch der Fall? Ich bin bei 87 Eintraegen und habe (noch?) keine Problem. Ich hoffe mal, dass die dem Telefonbuch da ein bisschen mehr Platz eingeraeumt haben.

Irgendwo habe ich gelesen, dass das GXP-2000 bis zu 200 Eintraege verwalten soll. Wobei das wohl weniger wird, wenn die Eintraege zu lang sind. Wenn man ans Limit stoesst, vielleicht die Namen etwas kuerzen, falls moeglich.
 
ich kriege ein :

"Fatal error: Call to undefined function pg_pconnect() in /var/www/htdocs/gsphonebook/init.php on line 32"

habe bis anhin wenig Erfahrung mit PostgreSQL ...

Ich habe die Tabelle via pgAdmin(xp) auf meinem Apache erstellt. Jedoch konnte ich keinen User hinzufügen .. ?
Nun hab ich in der config.php unter $dsn user=postgres eingetragen.

Owner der gsphonebook ist auch postgres.

Dies sollte doch kein Problem darstellen ?
 
"Fatal error: Call to undefined function pg_pconnect() in /var/www/htdocs/gsphonebook/init.php on line 32"

Das bedeutet, dass PHP die Funktion "pg_pconnect" nicht finden kann. Wenn die Funktion nicht fest in PHP einkompiliert ist, dann muss man sie laden. Das kann man entweder PHP automatisch machen lassen (in die php.ini die Zeile "extension=pgsql.so" hinzufuegen) oder man kann es bei Bedarf machen, wenn das Script die PostgreSQL-Befehle benoetigt. Bei dem Telefonbuch kannst Du dazu in der 'config.php' (die wird auf jeder Seite included) die Zeile "dl('pgsql.so');" einfuegen.

habe bis anhin wenig Erfahrung mit PostgreSQL ...

Ich habe die Tabelle via pgAdmin(xp) auf meinem Apache erstellt. Jedoch konnte ich keinen User hinzufügen .. ?
Nun hab ich in der config.php unter $dsn user=postgres eingetragen.

Owner der gsphonebook ist auch postgres.

Dies sollte doch kein Problem darstellen ?

Also von der Funktion her ist das kein Problem. Allerdings ist das extrem unschoen. 'postgres' ist der Superuser der Datenbank. Ich wuerde den Benutzer nicht fuer eine Webanwendung (oder irgendeine Anwendung ausser zur Administration) benutzen.

Wenn Du das Kommandozeilen-Tool 'psql' benutzt, dann bekommst Du Hilfe zu den Befehlen ("\h <befehl>" tippen, z.B. "\h create" oder "\h create user") und ausserdem verfuegt es ueber eine Tab-Vervollstaendigung. pgAdmin habe ich selber noch nie benutzt, weiss also nicht ob das sowas auch intergriert hat.

Es gibt aber auch sehr gute Online-Dokumentation unter http://www.postgresql.org/docs/. Vor allem Kapitel "Reference->SQL commands" ist Gold wert.

Der SQL-Befehl fuer das Anlegen eines neuen Benutzers lautet folgendermassen:

Code:
CREATE USER gsphonebook WITH ENCRYPTED PASSWORD 'blah123';

Falls Du den User doch noch anlegen solltest, musst Du ihm Berechtigung auf alle gsphonebook-Tabellen geben. Am einfachsten duerfte das wahrscheinlich sein, wenn Du dazu die Datenbank nochmal neu anlegst und den User direkt als Besitzer eintraegst.
 
Hallo Chaotux,

vielen Dank für deine Anleitung.
Ich bin ein wenig weiter gekommen...
Mit der Anmeldung klappt's noch nicht ganz.

Code:
Warning: pg_pconnect() [function.pg-pconnect]: 
Unable to connect to PostgreSQL server: 
FATAL: no pg_hba.conf entry for host "127.0.0.1", user "postgres", database "gsphonebook", SSL off in /var/www/htdocs/gsphonebook/init.php on line 32

Warning: pg_query() [function.pg-query]: No PostgreSQL link opened yet in /var/www/htdocs/gsphonebook/init.php on line 11

Warning: pg_fetch_result(): supplied argument is not 
a valid PostgreSQL result resource in
 /var/www/htdocs/gsphonebook/init.php on line 13

meine pg_hba.conf

Code:
# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
local   all         all                               trust 
host    all         all         192.168.100.0/24      trust 
local   gsphonebook postgres                          trust
 
vielen Dank für deine Anleitung.

Kein Problem.

Code:
Warning: pg_pconnect() [function.pg-pconnect]: 
Unable to connect to PostgreSQL server: 
FATAL: no pg_hba.conf entry for host "127.0.0.1", user "postgres", database "gsphonebook", SSL off in /var/www/htdocs/gsphonebook/init.php on line 32
[/quote]

Jo. PHP kann keine Verbindung zum Server aufbauen.
(Weitere Bemerkungen zum Verbinden als 'postgres' knicke ich mir lieber :-))

[quote]
meine pg_hba.conf

[code]
# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
local   all         all                               trust 
host    all         all         192.168.100.0/24      trust 
local   gsphonebook postgres                          trust

Da liegt der Hase begraben bzw. in der DSN.

Ich vermute, dort steht 'host=localhost' oder 'host=127.0.0.1' drin. localhost (oder 127.0.0.1) ist aber keine lokale Unix-Socket-Verbindung, wie sie PostgreSQL mit 'local' meint.

Es gibt drei unterschiedliche Moeglichkeiten das zu beheben:

1. Du kannst die DSN anpassen, so dass sich PHP per Unix-Socket verbindet und die 'local'-Regel in der pg_hba.conf greifen (wobei ich nicht weiss, ob Windows sowas wie Unix-Sockets kennt). Dafuer kannst Du einfach aus der DSN den "host=..."-Teil rausstreichen.

2. Du konfigurierst PostgreSQL so, dass er Verbindungen von localhost zulaesst.
Dazu fuegst Du die Zeile
Code:
host    all         all         127.0.0.1/8      trust
in die pg_hba.conf ein.

3. Du sagst PHP, dass es sich nicht mit localhost, sondern mit der 192.168.100.0/24er-IP, die Dein Rechner hat, verbindet. D.h. wenn Dein Rechner die 192.168.100.10 hat, dann in die DSN "host=192.168.100.10" eintragen. (Wobei die entsprechende Regel in der pg_hba.conf auch extrem unsicher ist. Ueber's Netz sollte man evtl. schon ein verschluesseltes Passwort benutzen, ansonsten kommt jeder Rechner in Deinem LAN als Superuser auf den Datenbank-Server ohne sich ausweisen zu muessen.)

Falls Du noch weitere Fragen haben solltest, kannst Du mich auch per eMail direkt anschreiben.

Tschuess,
Lars
 
Version 0.4 ist fertig.

Jetzt kann man sich rechts Busy-Lamp-Fields hinbasteln, die einem den Status von Extensions anzeigen, wer anruft bzw. welche Gespraeche verbunden sind. Ausserdem kann man damit auch Asterisk Hints anzeigen und SIP-Server ueberwachen, d.h. ob Asterisk dort registriert ist oder Verbindungsprobleme hat.
 
kannst du viell. noch ne Select-Box bei neuen Kontakten einfügen, so dass dort gleich der Account gespeichert werden kann, über den man rauswählt? Also Line 1 bis 4...
 
kannst du viell. noch ne Select-Box bei neuen Kontakten einfügen, so dass dort gleich der Account gespeichert werden kann, über den man rauswählt? Also Line 1 bis 4...

Kann ich bei der naechsten Version mit einbauen.

Habe ich bisher nicht gemacht, weil ich das im Zusammenhang mit ner Asterisk-Installation nicht als sinnvoll empfunden habe. Kannst Du mir ein Anwendungsbeispiel geben, wofuer man da unterschiedliche Accounts braucht?
 
Naja z.B. hab ich 2 Accounts um über verschiedene MSNs rauszutelefonieren. Im Telefonbuch kann ich dann den Einträgen den jeweiligen Account fest zuweisen, so dass er den automatisch verwendet. Im XML-File ist das der Parameter "accountindex", wobei dieser wohl von 0 - 3 geht.
 
Naja z.B. hab ich 2 Accounts um über verschiedene MSNs rauszutelefonieren. Im Telefonbuch kann ich dann den Einträgen den jeweiligen Account fest zuweisen, so dass er den automatisch verwendet. Im XML-File ist das der Parameter "accountindex", wobei dieser wohl von 0 - 3 geht.

Das das geht, weiss ich :) Ich habe mich nur gefragt, wofuer das gut ist. Least-Cost-Routing kann man ja viel praktischer im Asterisk Dial-Plan einrichten. Aber ohne Asterisk ist das sicherlich sehr sinnvoll oder wenn man verschiedene Kostenstellen hat fuer privat/geschaeftlich oder so.

Ich habe das jetzt eingebaut. Fuer Leute, die das nicht benutzen, kann man global einen festen Kontoindex angeben. Wird also bei der naechsten Version mit drin sein. Zusammen mit klickbaren BLFs (Anrufen, Kanaele klauen, fremde eingehende Gespraeche annehmen) und der Moeglichkeit noch zusaetzliche Felder ins Telefonbuch aufzunehmen, die nicht ans Telefon geschickt werden.

Da das schaetzungsweise vorerst erstmal die letzte Version sein wird, werde ich den Code noch ein bis zwei Tage oder so testen und dann veroeffentlichen.
 
ich hab es hinbekommen .. vielen dank Chaotux


gibt es evtl. einmal eine MYSQL Version?

duck und wech ...... ;-)
 
ich hab es hinbekommen .. vielen dank Chaotux

Das freut mich zu hoeren.

gibt es evtl. einmal eine MYSQL Version?

Also nicht von mir :) Der Quelltext ist aber frei verfuegbar. Wenn sich jemand berufen fuehlen sollte, das auf PDO oder ADOdb zu portieren, wuerde ich die Aenderungen sicherlich dankend entgegennehmen.

Ich benutze aber garkein MySQL und so ist der Anreiz fuer mich das zu tun extrem gering. (Ausserdem ist PostgreSQL sowieso viel besser ;-))
 
So. Version 0.5 ist draussen. Folgendes ist neu:

* BLFs sind jetzt klickbar. (Waehlen, Ranholen, Kanal "klauen")
* Telefonbucheintraege koennen jetzt unterschiedliche GS-Konten haben.
* Zusaetzliche konfigurierbare Felder fuer die Webansicht, die nicht an die Telefone geschickt werden.

Wenn nicht irgendwas boese kaputt ist, wird das wohl erstmal die letzte Version sein.
 
hi!

cooles Tool...

aber ich bin in xajax leider eine 0 und hab daher ein Problem.

Bisher geht (soweit) nichts ausser anmelden, da scheinbar der xajax pfad, der in der config.php ja relativ angegeben wird, sich nicht auf einen URI Pfad ändert: ergo:

eine lustige Fehlermeldung

Error: the xajax Javascript component could not be included.
Perhaps the URL is incorrect?
URL: /var/www/tel/xajax/xajax_js/xajax_core.js

den Pfad hab ich wie gesagt im config.php eingetragen... aber wo kann ich den WebPfad für die xajax_core.js einfügen?

Hoffe es kann mir jemand helfen!

LG
Joe

*****

Sorry... Wer hat den was von relativem Pfad gesagt?
 
Zuletzt bearbeitet:

Nicht, wenn's nicht laeuft :)

Bisher geht (soweit) nichts ausser anmelden, da scheinbar der xajax pfad, der in der config.php ja relativ angegeben wird, sich nicht auf einen URI Pfad ändert:

Wie sieht denn Deine Verzeichnisstruktur aus? Also ich wuerde vermuten, dass es eine von zwei Moeglichkeiten ist: Telefonbuch- und 'xajax'-Verzeichnis sind beide im Webroot. Dann muss die Variable $xajaxdir auf '../xajax' gesetzt werden. Telefonbuch-Verzeichnis im Webroot, 'xajax' unterhalb davon. Dann sollte $xajaxdir auf 'xajax' stehen.

den Pfad hab ich wie gesagt im config.php eingetragen... aber wo kann ich den WebPfad für die xajax_core.js einfügen?

Garnicht. Telefonbuch-Verzeichnis + $xajaxdir + 'xajax_js/xajax_core.js' muss zur der entsprechenden Datei zeigen.

Sorry... Wer hat den was von relativem Pfad gesagt?

INSTALL.txt hat was von relativem Pfad gesagt :)

Wenn das alles nicht helfen sollte, dann schau mal, ob die xajax-Installation vielleicht fehlerhaft ist. Mal folgende URL testen:

http://localhost/xajax/examples/multiply/multiply.php

Natuerlich evtl. anpassen, falls xajax nicht im Webroot installiert ist.

Viel Erfolg,
Lars
 
Anmeldung an der Datenbank funktioniert nicht

Nach vielen Stunden Mühe; die Anmeldung an der Datenbank scheitert immer:

Wrong username or password!
Username:
...............
Password:
..............
Login

Es existieren die Datenbanken: 'gsphonebook' und 'postgres'.

Wie könnte ich weiterkommen?
 
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.