function 'CDR'
Функция Asterisk CDR: Устанавливает или получает переменную CDR.
Описание Все поля CDR имеют статус «только для чтения», за исключением полей:
- 'accountcode'
- 'userfield'
- 'amaflags'
- 'recordingfile'
Однако вы можете создать собственные переменные и записать в CDR.
CDR может быть модифицирован только до завершения вызова. Например, CDR запись не может быть изменена, после того, как приложение Dial выполнено.
Пример - установить значение: exten ⇒ 1,1,Set(CDR(userfield)=test)
Пример - получить значение: exten ⇒ 1,1,Set(test=${CDR(dst)})
синтаксис
CDR(name[,options])
Аргументы
- name - наименование поля CDR.
- clid - Caller ID.
- lastdata - Последнее приложение обработки вызова.
- disposition - Финальное состояние обработки вызова (hangup не в счет).
- 0 - 'NO ANSWER'
- 1 - 'NO ANSWER' (NULL record)
- 2 - 'FAILED'
- 4 - 'BUSY'
- 8 - 'ANSWERED'
- 16 - 'CONGESTION'
- src - Источник вызова.
- start - Время получения вызова.
- amaflags - R/W the Automatic Message Accounting (AMA) flags on thechannel. When read from a channel, the integer value will always be returned. When written to a channel, both the string format or integer value is accepted.
- 1 - 'OMIT'
- 2 - 'BILLING'
- 3 - 'DOCUMENTATION'
Устарело. Используйте вместо amaflags функцию CHANNEL.
- dst - Назначение вызова (принимающая сторона).
- answer - Время ответа на вызов.
- accountcode - Аккаунт код канала.
Устарело. Используйте вместо accountcode функцию CHANNEL.
- dcontext - Контекст обработки вызова.
- end - Время завершения вызова.
- uniqueid - Уникальный идентификатор канала.
- dstchannel - Канал назначения.
- duration - Общая продолжительность вызова.
- userfield - Поле для назначения пользователем.
- lastapp - Последнее приложение, обработавшее вызов.
Например, в приведенном ниже контектсе, это будет Queue:
exten => s,1,Answer same => n,set(CALLERID(name)=from-perdu) same => n,Queue(perdu) exten => h,1,Hangup
- billsec - Продолжительность вызова с момента ответа.
- channel - Имя канала.
- sequence - CDR sequence number.
Опции
- f: Возвращает billsec или duration поля, как значения с плавающей точкой.
- u: Извлекает сырое, необработанное значение. Например значения, 'start', 'answer' и 'end' с параметром 'u' будут представлены как UNIX время(кол-во секунд прошедшее с полуночи (00:00:00 UTC) 1 января 1970 года), а не в формате YYYY-MM-DD HH:MM:SS.
См. также
Asterisk CDR - Статистика звонков
Пример
Поля CDR записей могут быть назначены в диалплане Asterisk функцией 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)})
~~socialite~~