Quantcast
Channel: IP АТС Asterisk
Viewing all articles
Browse latest Browse all 1135

Asterisk CDR - Call Detail Records - Детализированный отчет о звонках

$
0
0

Asterisk CDR - Call Detail Records - Детализированный отчет о звонках

CDR - детализированный отчет о звонках. Лог вызовов через ODBC: MySQL, PostgreSQL, TDS и др. Детализированные отчеты о звонках используются для выставления счетов (биллинг), анализа объемов голосового трафика или для отладки Asterisk.

Поля CDR записей

  • R/O - read only
Option Value/Example Notes
accountcode 54321 Код аккаунта присвоенный абоненту, для биллинга например. По умолчанию не задан.
src 8129981138 Идентификатор вызывающего абонента(Caller ID). Источник вызова, сохраняется автоматически. R/O
dst 111 Пункт назначения вызова.Вызываемое расширение диалплана.
dcontext from-internal Контекст назначения обработки вызова. auto, R/O
clid "Olegus" <81239981138> Caller ID вызывающего абонента в полном формате - "name" <number>. auto, R/O
channel SIP/0004F2040808-a1bc23ef Канал инициатор вызова. A-leg(side).auto, R/O
dstchannel SIP/0004F2046969-9786b0b0 Канал назначения вызова. B-Leg(side).auto, R/O
lastapp Dial Приложениеобработки вызова выполненное последним в канале. auto, R/O
lastdata SIP/0004F2046969,30,tT Данные (например 'Dial(данные)') приложения выполненного последним.auto, R/O
start 2016-05-27 12:02:00 Время поступления вызова вызова. auto, R/O
answer 2016-05-27 12:02:15 Время ответа на вызов абонентом или ответ приложения. auto, R/O
end 2016-05-27 12:08:15 Время окончания соединения.Hangup. auto, R/O
duration 195 Общая продолжительность вызова в секундах.auto, R/O
billsec 180 Продолжительность соединения в секундах с момента ответа(снятия трубки или выполнения команды Asterisk app: Answerв диалплане).auto, R/O
disposition ANSWERED Состояние обработки вызова. Может быть: NO ANSWER, FAILED, BUSY, ANSWEREDили UNKNOWN.
amaflags DOCUMENTATION Automatic Message Accounting (AMA) flag. значения: OMIT, BILLING, DOCUMENTATION или Unknown.
userfield custom Пользовательское поле. Пусто по умолчанию, назначается в диалплане. set(CDR(userfield)=<value>). R/W
uniqueid 1288332400.1 Уникальный идентификатор канала. R/O

Помимо поля userfieldвы можете создавать собственные CDR переменные или модифицировать стандартные.

Поля CDRзаписей могут быть назначены в диалплане Asterisk функцией CDR() ().
Функция CDR() также может быть использована для установки полей CDR, которые определяются пользователем.

 exten => 177,1,Verbose(Call start time: ${CDR(start)})
       same => n,Set(CDR(userfield)=red_eyes)

Также можно добавить собственные поля:

   exten => 177,1,NoOp()
       same => n,Set(CDR(mycustomfield)=greentea)
       same => n,Verbose(I need some more ${CDR(mycustomfield)})

Если создано кастомное поле CDR, в базе данных тоже потребуется дополнительное поле.

Приложения и функции диалплана связанные с CDR

ForkCDR: Разделить запись CDRтекущего канала .
NoCDR: Не сохранять CDRдля текущего вызова.
ResetCDR: Сбросить CDRдля текущего канала.
function 'CDR': Задать пользовательское значение CDRв канале. Не работает для Read Onlyполей CDR.

cdr.conf

Содержит общие (глобальные) параметры CDRи конфигурацию бакендов cdr_scvи cdr_radius.
Файл конфигурации cdr.conf

Option Value/Example Notes
enable yes Включить лог CDR. По умолчанию включено.
unanswered no Сохранять или нет информацию о неотвеченных вызовах. Не касается внешних вызовов. О них сохраняется полная информация, независимо от значения данной опции.
endbeforehexten no Закрыть и сохранить запись CDRдо выполнения расширения 'h' (hangup). Если значение - 'no', закрытие CDRпроизойдет, только по завершению всех шагов диалплана. Если - 'yes', при завершении вызова, независимо от того продолжается выполнение диалплана в контексте или нет
initiatedseconds no По умолчанию 'billsec' вычисляется, просто как разница 'end' минус 'answer' в секундах. Включение опции initiatedseconds=yes, укажет Asterisk использовать точные значения до микросекунд
batch no Записывать CDRгруппой, вместо записи каждого вызова отдельно. Снижает нагрузку на Asterisk. Зависит от перечисленных ниже опций.
size 100 Кол-во строк CDRв буфере, при достижении которого, будет произведена запись.
time 300 Предел времени хранения данных в буфере. Запись будет произведена, независимо от порога строк в буфере, заданного параметром size.
scheduleronly no Set whether CDR batch processing should be done by spawning a new thread, or within the context of the CDR batch scheduler. The default value is no, and we recommend not changing it.
safeshutdown yes Блокировать остановку Asterisk, пока буфер не очищен (данные сохранены).Предотвращает потерю данных, при корректномвыключении Asterisk.

backends

Модули баз данных предоставляют различные бакенды для записи CDR. Все они требуют специфических настроек.

Проверка подключенных backends: CLI>cdr show status

Call Detail Record (CDR) settings
----------------------------------
  Logging:                    Enabled
  Mode:                       Simple
  Log unanswered calls:       No
  Log congestion:             No

* Registered Backends
  -------------------
    mysql
    Adaptive ODBC
    cdr-custom

cdr_adaptive_odbc

Как следует из названия, модуль cdr_adaptive_odbc сохраняет CDRв базу данных через ODBC.
«adaptive» в данном случае означает, что она пытается приспособиться к структуре таблицы: нет статической структуры таблиц, которые должны быть использованы с этим модулем.
Когда модуль загружен (или при перезагрузке), он читает структуру таблицы. Он ищет имя столбца, которому соответствует переменная CDR.
Это относится как к встроенным CDRпеременным, так и к пользовательским переменным.
Например, чтобы передавать данные из встроенной переменной 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 База данных. Параметры соединения настраиваются в 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_csv

Модуль cdr_csvпростейший бакенд, сохраняющий CDRданные в CSVфайл, разделяя запятой.
Конфигурация находится в файле cdr.conf

Для работы не требует конфигурации, тем не менее есть несколько параметров:

Option defaultNotes
usegmtime no Сохранять время GMT вместо локального. По умолчанию - no.
loguniqueid no Сохранять uniqueid переменную CDR. По умолчанию - no
loguserfield no Сохранять userfield CDRпеременную . По умолчанию - 'no'.
accountlogs yes Создавать отдельный csv файл для каждой переменной accountcode. По умолчанию - yes.

Порядок CDRпеременных в CSV файле созданном модулем CDR_CSV:

<accountcode>,<src>,<dst>,<dcontext>,<clid>,<channel>,<dstchannel>,<lastapp>, 
    <lastadata>,<start>,<answer>,<end>,<duration>,<billsec>,<disposition>, 
    <amaflags>[,<uniqueid>][,<userfield>]
cdr_custom

Данный модуль используется для создания пользовательского (custom) CSV файла.
Конфигурационный файл модуля cdr_custom.conf.
Единственная секция [mappings] может быть использована в этом файле. Шаблон задается с помощью функций диалплана Asterisk.

В следующем примере cdr_customсоздает файл /var/log/asterisk/cdr-custom/Master.csv. Шаблон использует функции function 'CDR'() для извлечения значений и function 'CSV_QUOTE'() обеспечивающую правильное форматирование CSV файла (${CSV_QUOTE(${CDR(lastdata)})}).

[mappings]

Master.csv => ${CSV_QUOTE(${CDR(clid)})},${CSV_QUOTE(${CDR(src)})},
   ${CSV_QUOTE(${CDR(dst)})},${CSV_QUOTE(${CDR(dcontext)})},
   ${CSV_QUOTE(${CDR(channel)})},${CSV_QUOTE(${CDR(dstchannel)})},
   ${CSV_QUOTE(${CDR(lastapp)})},${CSV_QUOTE(${CDR(lastdata)})},
   ${CSV_QUOTE(${CDR(start)})},${CSV_QUOTE(${CDR(answer)})},
   ${CSV_QUOTE(${CDR(end)})},${CSV_QUOTE(${CDR(duration)})},
   ${CSV_QUOTE(${CDR(billsec)})},${CSV_QUOTE(${CDR(disposition)})},
   ${CSV_QUOTE(${CDR(amaflags)})},${CSV_QUOTE(${CDR(accountcode)})},
   ${CSV_QUOTE(${CDR(uniqueid)})},${CSV_QUOTE(${CDR(userfield)})}

cdr_manager

Модуль cdr_manager интерпретирует данные CDR, как события Asterisk Manager Interface (AMI).
Конфигурационный файл - cdr_manager.conf.

Первая секция [general] содержит единственную опцию enabled, по умолчанию = no.

[general]
enabled = yes
В следующая секция cdr_manager.confэто [mappings]. Здесь назначается пользовательская CDRпеременная передаваемая менеджеру Asterisk.
<CDR variable> => <Header name>

пример:

 [mappings]
 rate => Rate
 carrier => Carrier

В данной конфигурации заданные переменные появятся как события в интерфейсе менеджера.
Источником событий станет следующий диалплан:

 exten => 177,1,Answer()
     same => n,Set(CDR(rate)=0.03)
     same => n,Set(CDR(carrier)=BВ&С)
     same => n,Hangup()

Следующая команда инициирует вызов:

*CLI> console dial 177@test

asterisk:alsa.conf

В итоге, следующее событие отобразится в Asterisk Call ManagerFinally:

Event: Cdr
Privilege: cdr,all
AccountCode: 
Source: 
Destination: 177
DestinationContext: test
CallerID: 
Channel: Console/dsp
DestinationChannel: 
LastApplication: Hangup
LastData: 
StartTime: 2016-05-23 08:29:21
AnswerTime: 2016-05-23 08:29:22
EndTime: 2016-05-23 08:29:23
Duration: 0
BillableSeconds: 0
Disposition: ANSWERED
AMAFlags: DOCUMENTATION
UniqueID: 1383680051.3
UserField: 
Rate: 0.03
Carrier: BВ&С

cdr_mysql

Файл конфигурации - cdr_mysql.conf
Данный модуль для сохранения CDRв MySQL. В новых системах рекомендуется, по возможности, использовать модуль cdr_adaptive_odbc.

cdr_odbc

Файл конфигурации - cdr_odbc.conf
Модуль для сохранения CDRчерез ODBC драйвер. В новых системах рекомендуется, по возможности, использовать модуль cdr_adaptive_odbc.

cdr_pgsql

Файл конфигурации - cdr_pgsql.conf
Модуль для сохранения CDRв базу данных PostgreSQL. В новых системах рекомендуется, по возможности, использовать модуль cdr_adaptive_odbc.

cdr_radius

cdr_radiusбакенд связывает CDRс Radius сервером.
Используется конфигурационный файл cdr.confв секции [radius].

Option Value/Default Notes
usegmtimeyesСохранять время GMT вместо локального.
loguniqueidyesСохранять uniqueid переменную CDR.
loguserfieldyesСохранять userfield CDRпеременную.
radiuscfg/etc/radiusclient-ng/radiusclient .confМестоположение конфигурационного файла radiusclient-ng.

cdr_sqlite

Устарело. Используйте cdr_sqlite3_custom.

cdr_sqlite3_custom

CDRбакенд для сохранения данных в SQLite БД версии 3. База данных создается модулем, как /var/log/asterisk/master.db
Данный модуль использует конфигурационный файл cdr_sqlite3_custom.conf.
Конфигурация указывает имя таблицы CDRи пользовательские переменные, если требуется.

Spoiler

cdr_syslog

Сохраняет CDRиспользуя syslog linux. Чтобы включить данную возможность, сперва добавьте запись в конфиг syslog, /etc/syslog.conf.
Например:

local.*      /var/log/asterisk/asterisk-cdr.log
Конфигурационный файл Asterisk - cdr_syslog.conf:
[cdr]

facility = local
priority = info
template = "Вызов от ${CDR(src)}"
пример записи syslog, для приведенной конфигурации:
 cat /var/log/asterisk/asterisk-cdr.log

Sep 17 18:15:57 pbx cdr: «Вызов от 8129981138»

cdr_tds

Конфигурационный файл - cdr_tds.conf

cdr_tdsмодуль использует FreeTDS библиотеку для отправки CDR Microsoft SQL Server или Sybase БД.
FreeTDS возможно использовать с unixODBC, так что конфигурация может быть сделана и в cdr_adaptive_odbc.

Файлы конфигурации Asterisk

Asterisk: Настройка


Viewing all articles
Browse latest Browse all 1135

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>