cdr_adaptive_odbc.conf
Модуль cdr_adaptive_odbcпозволяет добавлять собственные переменные в CDR,
создавать псевдонимы (alias) и фильтровать данные. Добавлять альтернативные
таблицы CDR, с уникальным содержанием.
Список полей таблицы CDRсоздаваемой при установке FreePBX:
calldate, clid, src, dst, dcontext, channel, dstchannel, lastapp, lastdata, duration, billsec, disposition, amaflags, accountcode, uniqueid, userfield,
did, recordingfile, cnum, cnam, outbound_cnum, outbound_cnam, dst_cnam
Как и следует из названия, модуль cdr_adaptive_odbc сохраняет CDRв базу данных через ODBC.
«adaptive» в данном случае означает, что она пытается приспособиться к структуре таблицы:
нет статической структуры таблиц, которые должны быть использованы с этим модулем.
Когда модуль загружен (или при перезагрузке), он читает структуру таблицы. Он ищет имя столбца, которому соответствует переменная CDR.
Это относится как к встроенным CDRпеременным, так и к пользовательским переменным.
Например, чтобы передавать данные из встроенной (builtin) переменной CDRchannel, в таблице базы данных должен быть столбец channel.
пример:
Добавим в кастомную CDRпеременную useragentзначение равное номеру SIPтелефона.
exten ⇒ 177,n,Set(CDR(useragent)=${CHANNEL(useragent)})
Чтобы данные переменной useragentбыли занесены через cdr_adaptive_odbc, надо создать столбец useragentв БД.
В файле конфигурации cdr_adaptive_odbc можно создать множество таблиц. Имя секции может быть любым, модуль не использует его. Вот пример простой конфигурации таблицы:
[mytable] connection = asterisk table = asterisk_cdr
Option | Value/Example | Notes |
---|---|---|
connection | asterisk | База данных. Параметры соединения настраиваются в Asterisk: res_odbc.conf. Обязательный параметр. |
table | asterisk_cdr | Имя таблицы БД. Обязательное поле. |
usegmtime | no | Использовать время GMT вместо локального времени. По умолчанию -'no'. |
В дополнение к вышеперечисленным опциям cdr_adaptive_odbc.conf, можно задать ещё несколько.
Обычно, CDRищет столбец соответствующий имени переменной. Параметр aliasпозволяет соотнести имя переменной с отличным от него именем столбца.
alias <CDR variable> => <column name>
Например:
alias src => source
Также, можно отфильтровать определенное содержимое.
filter <CDR variable> => <content>
Например:
filter accountcode => 321
И наконец, можно добавить статические данные, дополнительно к поступающим из CDR.
static <"Static Content Goes Here"> => <column name>
Например:
static "My Data" => my_id
; The point of this module is to allow you log whatever you like in terms of ; the CDR variables. Do you want to log uniqueid? Then simply ensure that ; your table has that column. If you don't want the column, ensure that it ; does not exist in the table structure. If you'd like to call uniqueid ; something else in your table, simply provide an alias in the configuration ; file that maps the standard CDR field name (uniqueid) to whatever column ; name you like. ; Perhaps you'd like some extra CDR values logged that aren't ; in the standard repertoire of CDR variables (some that come to mind are ; certain values used for LCR: route, per_minute_cost, and per_minute_price). ; Simply set those CDR variables in your dialplan, i.e. Set(CDR(route)=27), ; ensure that a corresponding column exists in your table, and cdr_adaptive_odbc ; will do the rest. ; ; This configuration defines the connections and tables for which CDRs may ; be populated. Each context specifies a different CDR table to be used. ; ; The columns in the tables should match up word-for-word (case-insensitive) ; to the CDR variables set in the dialplan. The natural advantage to this ; system is that beyond setting up the configuration file to tell you what ; tables to look at, there isn't anything more to do beyond creating the ; columns for the fields that you want, and populating the corresponding ; CDR variables in the dialplan. For the builtin variables only, you may ; create aliases for the real column name. ; ; Please note that after adding columns to the database, it is necessary to ; reload this module to get the new column names and types read. ; ; Warning: if you specify two contexts with exactly the same connection and ; table names, you will get duplicate records in that table. So be careful. ; ;[first] ;connection=mysql1 ;table=cdr ;[second] ;connection=mysql1 ;table=extracdr ;[third] ;connection=sqlserver ;table=AsteriskCDR ;schema=public ; for databases which support schemas ;usegmtime=yes ; defaults to no ;alias src => source ;alias channel => source_channel ;alias dst => dest ;alias dstchannel => dest_channel ; ; Any filter specified MUST match exactly or the CDR will be discarded ;filter accountcode => somename ;filter src => 123 ; Negative filters are also now available ;filter src != 456 ; ; Additionally, we now support setting static values per column. The reason ; for this is to allow different sections to specify different values for ; a certain named column, presumably separated by filters. ;static "Some Special Value" => identifier_code ; ; Add quoted indentifiers for table and columns names. ;quoted_identifiers=" ; Default to null