Модуль 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) переменной CDR channel, в таблице базы данных должен быть столбец channel.
пример:
Добавим в кастомную CDR переменную useragent значение равное номеру SIP телефона.
exten ⇒ 177,n,Set(CDR(useragent)=${CHANNEL(useragent)})
Чтобы данные переменной useragent были занесены через cdr_adaptive_odbc, надо создать столбец useragent в БД.
В файле конфигурации cdr_adaptive_odbc можно создать множество таблиц. Имя секции может быть любым, модуль не использует его. Вот пример простой конфигурации таблицы:
[mytable]
connection = asteriskcdrdb
table = cdr
loguniqueid=yes
usegmtime = no
alias start => calldate
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
Asterisk CDR - Статистика звонков
Файлы конфигурации Asterisk