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.
Hinterlasse einen Kommentar
Ich freue mich über jeden Kommentar, es sei denn, er ist blöd.
Deshalb sind die Kommentare auf dieser Seite auch generell moderiert.