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) переменной 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

cdr_adaptive_odbc

cdr_adaptive_odbc

; 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

  • asterisk/cf/cdr_adaptive_odbc.conf.txt
  • Последние изменения: 2018/03/12