Extconfig

From AstriPedia

Jump to: navigation, search

The Asterisk external configuration engine is the result of work by Anthony Minessale II, Mark Spencer and Constantine Filin.

It is designed to provide a flexible, seamless integration between Asterisk's internal configuration structure and external SQL other other databases (maybe even LDAP one day).

The external configuration engine is the basis for the ARA, the Asterisk Realtime Architecture (see README.realtime for more information).

Configuration

External configuration is configured in /etc/asterisk/extconfig.conf allowing you to map any configuration file (static mappings) to be pulled from the database, or to map special runtime entries which permit the dynamic creation of objects, entities, peers, etc. without the necessity of a reload.

Generally speaking, the columns in your tables should line up with the fields you would specify in the given entity declaration. If an entry would appear more than once, in the column it should be separated by a semicolon. For example, an entity that looks like:

[foo]
host=dynamic
secret=bar
context=default
context=local

could be stored in a table like this:

+------+--------+-------+--------------+----------+-----+-----------+
| name | host   | secret| context      | ipaddr   | port| regseconds|
+------+--------+-------+--------------+----------+-----+-----------+
| foo  | dynamic|  bar  | default;local| 127.0.0.1| 4569| 1096954152|
+------+--------+-------+--------------+----------+-----+-----------+

Note that for use with IAX or SIP, the table will also need the "name", 
"ipaddr", "port", "regseconds" columns.  If you wanted to be able to 
configure the callerid, you could just add a callerid column to the 
table, for example.

A SIP table would look more like this:

+------+--------+-------+----------+-----+------------+----------+
| name | host   | secret| ipaddr   | port| regseconds | username |
+------+--------+-------+----------+-----+------------+----------+
| foo  | dynamic|  bar  | 127.0.0.1| 4569| 1096954152 |   1234   |
+------+--------+-------+----------+-----+------------+----------+

in order to store appropriate parameters required for SIP.

A Voicemail table would look more like this:

+----------+---------+----------+----------+-----------+---------------+
| uniqueid | mailbox | context  | password |email      |   fullname    | 
+----------+---------+----------+----------+-----------+---------------+
|        1 |   1234  | default  |  4242    | a@b.com   | Joe Schmoe    | 
+----------+---------+----------+----------+-----------+---------------+

The uniqueid should be unique to each voicemail user and can be 
autoincrement.  It need not have any relation to the mailbox or context.

An extension table would look more like this:

+----------+---------+----------+-------+-----------+
| context  |  exten  | priority |  app  |  appdata  |
+----------+---------+----------+-------+-----------+
|  default |    1234 |        1 |  Dial |     Zap/1 |
+----------+---------+----------+-------+-----------+

In the dialplan you just use the Realtime switch:

[foo]
switch => Realtime

or:

[bar]
switch => Realtime/bar@extensions


Example extconfig.conf

;
; Static and realtime external configuration
; engine configuration
;
; Please read doc/README.extconfig for basic table
; formatting information.
;
[settings]
;
; Static configuration files: 
;
; file.conf => driver,database[,table]
;
; maps a particular configuration file to the given
; database driver, database and table (or uses the
; name of the file as the table if not specified)
;
;uncomment to load queues.conf via the odbc engine.
;
;queues.conf => odbc,asterisk,ast_config
;
; The following files CANNOT be loaded from Realtime storage:
;	asterisk.conf
;	extconfig.conf (this file)
;	logger.conf
;
; Additionally, the following files cannot be loaded from
; Realtime storage unless the storage driver is loaded
; early using 'preload' statements in modules.conf:
;	manager.conf
;	cdr.conf
;	rtp.conf
;
;
; Realtime configuration engine
;
; maps a particular family of realtime
; configuration to a given database driver,
; database and table (or uses the name of
; the family if the table is not specified
;
;example => odbc,asterisk,alttable
;iaxusers => odbc,asterisk
;iaxpeers => odbc,asterisk
;sipusers => odbc,asterisk
;sippeers => odbc,asterisk
;voicemail => odbc,asterisk
;extensions => odbc,asterisk
;queues => odbc,asterisk
;queue_members => odbc,asterisk
Personal tools