Anbindung von postgresql an asterisk

Diesen Beitrag schrieb ich 16 Jahre und 9 Monate zuvor; die nachfolgenden Ausführungen müssen heute weder genau so nach wie vor funktionieren, noch meiner heutigen Meinung entsprechen. Behalte das beim Lesen (und vor allem: beim Nachmachen!) bitte stets im Hinterkopf.

Geschätzte Lesezeit: 1 Minute

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.

Alle Bilder dieser Seite: © Marianne Spiller – Alle Rechte vorbehalten
Hintergrundbild: 849x 500px, Bild genauer anschauen – © Marianne Spiller – Alle Rechte vorbehalten

Eure Gedanken zu „Anbindung von postgresql an asterisk“

Ich freue mich über jeden Kommentar, es sei denn, er ist blöd. Deshalb behalte ich mir auch vor, die richtig blöden kurzerhand wieder zu löschen. Die Kommentarfunktion ist über GitHub realisiert, weshalb ihr euch zunächst dort einloggen und „utterances“ bestätigen müsst. Die Kommentare selbst werden im Issue-Tracker und mit dem Label „✨💬✨ comment“ erfasst – jeder Blogartikel ist ein eigenes Issue. Über GitHub könnt ihr eure Kommentare somit jederzeit bearbeiten oder löschen.