Anbindung von postgresql an asterisk
Eine weitere Übersicht: asterisk-1.4.4
an postgresql
knüppeln.
Installation der Abhängigkeiten
$ apt-get install zlib1g-dev zlib1g
$ apt-get install postgresql postgresql-client postgresql-contrib
$ apt-get install libpq-dev libpq
$ apt-get instal odbc-postgresql
$ apt-get unixodbc-dev unixodbc
asterisk
und die Datenbank
Danach asterisk-1.4.4
kompilieren, installieren (./configure, make, make install, make samples
). Dann einen User asterisk
und eine Datenbank asterisk
hinzufügen:
$ su - postgres
$ createuser -s -d -l -E asterisk
$ createdb asterisk
User asterisk
kann sich jetzt noch nicht unfallfrei einloggen; wenn er es versucht (psql -W -d asterisk -U asterisk
), erhält er eine Fehlermeldung:
psql: FATAL: IDENT authentication failed for user "asterisk"
Deshalb ist folgender Eintrag nötig in der Datei /etc/postgresql/8.2/main/pg_hba.conf
:
local asterisk asterisk password
host asterisk asterisk 127.0.0.1 255.255.255.255 password
Befüllen der Datenbank
Ist das geschafft, ist ein /etc/init.d/postgresql-8.2 restart
fällig. Und nun kann die Datenbank mit Inhalt gefüllt werden: der Reihe nach aufrufen:
$ psql -U asterisk -W -d asterisk -f extensions_conf
$ psql -U asterisk -W -d asterisk -f cdr.sql
$ psql -U asterisk -W -d asterisk -f sip_conf.sql
$ psql -U asterisk -W -d asterisk -f voicemail_users.sql
$ psql -U asterisk -W -d asterisk -f queue_table.sql
$ psql -U asterisk -W -d asterisk -f queue_member_table.sql
$ psql -U asterisk -W -d asterisk -f grants.sql
Jetzt steht die Datenbank und es geht eigentlich nur noch darum, diese auch wirklich an den asterisk
anzubinden; das ist vergleichsweise trivial.
/etc/asterisk/res_odbc.conf
[pg]
dsn => asterisk
username => asterisk
password => keins
pre-connect => yes
/etc/asterisk/extconfig.conf
[settings]
extensions => odbc,pg,extensions_conf
sipusers => odbc,pg,sip_conf
sippeers => odbc,pg,sip_conf
iaxusers => odbc,pg,sip_conf
iaxpeers => odbc,pg,sip_conf
queues => odbc,pg,queue_table
queue_members => odbc,pg,queue_member_tables
Abschließend
Nachdem der asterisk
gestartet wurde, kann man übers CLI prüfen, ob die Datenbankverbindung steht:
\*CLI> odbc show
Name: pg
DSN: asterisk
Pooled: no
Connected: yes
Sieht gut aus. Hierbei handelt es sich übrigens um ein Realtime-Setup; d.h. weder asterisk
noch Datenbank müssen wegen etwaiger Änderungen neu gestartet werden, jede Änderung wird on-the-fly aktiv. Nachteil: ist die Datenbank down, gehen auch die Telefone nicht. Daher ist hier ein repliziertes System zumindest anzudenken.
Hintergrundbild: 849x 500px, Bild genauer anschauen – © Marianne Spiller – Alle Rechte vorbehalten