Asterisk features

Asterisk коды абонентских функций - features.conf

В файле features.conf назначаются пользовательские коды и опции абонентских функций Asterisk, такие как: перевод вызова (transfer); перехват вызова (pickup); запись по требованию (record on demand); таймауты набора и переадресации (digit timeout); паркинг (park) и др.

[general]

Общие параметры абонентских функций Asterisk.

В чистом Asterisk данные параметры определяются в секции [general] конфига features.conf.
При использовании FreePBX - в файле features_general_custom.conf.
Полный список параметров можно получить прямо из консоли Asterisk (CLI) командой:
config show help features globals
Подробную информацию о каком-либо параметре, командой:
config show help features globals <parameter_name>
Информацию о текущих значениях параметров feartures.conf, командой:
features show

features show

features show

CLI> features show
Builtin Feature           Default Current
---------------           ------- -------
Pickup                    *8      *8
Blind Transfer            #       ##
Attended Transfer                 *2
One Touch Monitor
Disconnect Call           *       **
Park Call
One Touch MixMonitor

Dynamic Feature           Default Current
---------------           ------- -------
(none)

Feature Groups:
---------------
(none)

При использовании FreePBX, не все изменения внесенные в features_general_custom.conf будут отображены командой features show. При этом, после применения изменений, они будут активны.

[general] features.conf пример

[general] features.conf пример

[general]
;transferdigittimeout => 3      ; Number of seconds to wait between digits when transferring a call
                                ; (default is 3 seconds)
;xfersound = beep               ; to indicate an attended transfer is complete
;xferfailsound = beeperr        ; to indicate a failed transfer
;pickupexten = *8               ; Configure the pickup extension. (default is *8)
;pickupsound = beep             ; to indicate a successful pickup (default: no sound)
;pickupfailsound = beeperr      ; to indicate that the pickup failed (default: no sound)
;featuredigittimeout = 1000     ; Max time (ms) between digits for
                                ; feature activation  (default is 1000 ms)
;recordingfailsound = beeperr   ; indicates that a one-touch monitor or one-touch mixmonitor feature failed
                                ; to be applied to the call. (default: no sound)
;atxfernoanswertimeout = 15     ; Timeout for answer on attended transfer default is 15 seconds.
;atxferdropcall = no            ; If someone does an attended transfer, then hangs up before the transfer
                                ; target answers, then by default, the system will try to call back the
                                ; person that did the transfer.  If this is set to "yes", the ringing
                                ; transfer target is immediately transferred to the transferee.
;atxferloopdelay = 10           ; Number of seconds to sleep between retries (if atxferdropcall = no)
;atxfercallbackretries = 2      ; Number of times to attempt to send the call back to the transferer.
                                ; By default, this is 2.
;transferdialattempts = 3       ; Number of times that a transferer may attempt to dial an extension before
                                ; being kicked back to the original call.
;transferretrysound = "beep"    ; Sound to play when a transferer fails to dial a valid extension.
;transferinvalidsound = "beeperr" ; Sound to play when a transferer fails to dial a valid extension and is out of retries.
;atxferabort = *1               ; cancel the attended transfer
;atxfercomplete = *2            ; complete the attended transfer, dropping out of the call
;atxferthreeway = *3            ; complete the attended transfer, but stay in the call. This will turn the call into a multi-party bridge
;atxferswap = *4                ; swap to the other party. Once an attended transfer has begun, this options may be used multiple times

  • featuredigittimeout – лимит времени в миллисекундах между вводом цифр кода абонентской функции. (Default: 1000)
  • courtesytone – звуковой сигнал активации записи вызова (automon или automixmon). (Default: )
  • recordingfailsound – звуковой сигнал о неудачной попытке активировать запись вызова. (Default: )
  • transferdigittimeout – Максимальное время в секундах между вводом цифр, при переводе вызова. (Default: 3)
  • atxfernoanswertimeout – Время ожидания ответа при сопровождаемом переводе вызова, прежде чем удерживаемый вызов вернется к инициатору перевода или будет отключен. (Default: 15)
  • atxferdropcall – определяет действия с входящим вызовом, в случае неудачной переадресации. (Default: no)

Если данный параметр = 'no', тогда Asterisk в случае неудачи, пытается повторить перевод, через период заданный параметром atxferloopdelay, предпринимая кол-во попыток заданное параметром atxfercallbackretries. Если же установлено 'yes', то все каналы участвующие в переводе отключаются.

  • atxferloopdelay – Время в секундах между повторными попытками перевода.(Default: 10)
  • atxfercallbackretries – Кол-во попыток перевода.(Default: 2)
  • xfersound – Звук сигнализирующий о успешной переадресации. Воспроизводится также, при выполнении команды Asterisk app: Bridge (Default: beep)
  • xferfailsound – Звуковой сигнал проигрываемый инициатору перевода, при неудачной переадресации. (Default: beeperr)
  • atxferabort – Код завершения перевода вызова. (Default: *1). При сопровождаемом переводе, набор данного кода возвращает удерживаемый вызов инициатору передресации.
  • atxfercomplete – Код завершения сопровождаемого перевода. (Default: *2)

В результате инициатор перевода отключается, а удерживаемый канал и адресат перевода соединяются.

  • atxferthreeway – код создания трехсторонней конференции между всеми участниками переадресации. (Default: *3)
  • atxferswap – Код переключения между двумя объектами переадресации. (Default *4) При сопровождаемом переводе инициатор переадресации может дождаться ответа адресата перевода и переключаться между ним и вызовом на удержании. Если потребуется соединить каналы, то можно использовать код atxfercomplete, создать трехстороннюю конференцию - код atxferthreeway, а код atxferabort вернет удерживаемый вызов к инициатору, завершив выполнение переадресации.
pickupexten
  • pickupexten – Код функции перехвата вызова в группе. (Default: *8)

Для перехвата в группе абонентам должны быть назначены одинаковые номера pickupgroup и callgroup в настройках драйвера канала. Например для pjsip endpoint:

 [endpoint]
 call_group=1
 pickup_group=1

для chan_sip:

 [peer]
 callgroup=1
 pickupgroup=1
  • pickupsound – сигнализация о успешном перехвате
  • pickupfailsound – сигнализация о неудачном перехвате
  • transferdialattempts – кол-во попыток набора для перевода вызова (Default: 1)
  • transferretrysound – оповещение о том, что лимит попыток перевода исчерпан. (Default: pbx-invalid)
  • transferinvalidsound – Оповещение о некорректном вводе екстеншена. (Default: pbx-invalid)

[featuremap]

DTMF коды для активации функций во время вызова. Обратите внимание, что данные коды могут быть использованы, только когда два канала в состоянии Answer и соединены друг с другом. В состоянии вызова (ringing или progress) они не действуют.

В чистом Asterisk данные параметры определяются в секции [featuremap] конфига features.conf.
При использовании FreePBX - в файле features_fearturemap_custom.conf.

Asterisk featuremap пример

[featuremap]
blindxfer => #1
disconnect => *0
automon => *1
atxfer => *2 
parkcall => #72
automixmon => *3 
  • atxferDTMF код сопровождаемого перевода. (Default: )
  • blindxferDTMF код слепого перевода. (Default: #)
  • disconnectDTMF код разъединения вызова. (Default: *)
  • parkcallDTMF код парковки вызова. Начиная с версии Asterisk 12 конфигурация парковки вызова осуществляется в res_parking.conf
  • automonDTMF код раздельной записи входящего и исходящего каналов.

Данный DTMF код активирует приложение записи Monitor.
Формат файла определяется переменной канала <TOUCH_MONITOR_FORMAT>.
Если переменная не задана, по умолчанию wav.
Имя файла конструируется по схеме - prefix-timestamp-filename.
Где prefix задается переменной канала <TOUCH_MONITOR_PREFIX> или 'auto', если переменная не задана.
timestamp - UNIX timestamp.
filename - задается переменной канала <TOUCH_MONITOR> или callerid канала, если переменная не задана.

  • automixmonDTMF код микшированной записи вызова.

Данный DTMF код активирует приложение записи MixMonitor.
Формат файла записи определяется переменной канала <TOUCH_MIXMONITOR_FORMAT>.
Если переменная не задана, по умолчанию wav.
Имя файла конструируется по схеме - prefix-timestamp-filename.
Где prefix всегда 'auto'.
timestamp - UNIX timestamp
filename - задается переменной канала <TOUCH_MIXMONITOR> или callerid канала, если переменная не задана.
Директория записи определяется в конфиге asterisk.conf параметром: astspooldir ⇒ .

[applicationmap]

DYNAMIC_FEATURES

Раздел для назначения пользовательских функций используемых во время вызова.

При помощи applicationmap можно создать собственные функции.
Для использования функций назначенных здесь, переменная канала DYNAMIC_FEATURES должна быть определена в диалплане :

 Set(__DYNAMIC_FEATURES=myfeature1#myfeature2#myfeature3)

Функции разделяются знаком решетки- '#'

Два нижних подчеркивания перед переменной (__DYNAMIC_FEATURES), разрешают использование заданных функций удаленной стороне. Иначе, только оригинатор вызова имеет к ним доступ.

Следующий синтаксис используется для объявления функций. Аргументы в квадратных скобках - необязательны:

<FeatureName> => <DTMF_sequence>,<ActivateOn>[/<ActivatedBy>],<Application>[,<AppArguments>[,MOH_Class]]
<FeatureName> => <DTMF_sequence>,<ActivateOn>[/<ActivatedBy>],<Application>[,"<AppArguments>"[,MOH_Class]]
<FeatureName> => <DTMF_sequence>,<ActivateOn>[/<ActivatedBy>],<Application>([<AppArguments>])[,MOH_Class]
  • FeatureName - Имя функции используемое в дальнейшем для переменной канала DYNAMIC_FEATURES (Set(__DYNAMIC_FEATURES=FeatureName)
  • DTMF_sequence - DTMF код активации функции.
  • ActivateOn - Определяет канал в котором будет выполнено приложение:
    • self - выполнить приложение в канале активировавшем функцию.
    • peer - выполнить приложение (application) в противоположном канале.
  • ActivatedBy - Данный параметр указывает, какой из сторон разрешена активация заданной функции. Вместо "ActivatedBy" рекомендуется использовать «двойное нижнее подчеркивание» перед переменной DYNAMIC_FEATURES (см. выше). Возможные значения: caller, callee и both
  • Application - Вызываемое приложение (application).
  • AppArguments - Аргументы приложения.
  • MOH_Class - Класс Музыки на Удержании (MoH) проигрываемой, пока канал ожидает выполнения функции. Если не задано, музыка не прогрывается.

Applicationmap не предназначено для использования любого приложения Asterisk.
В диалплане приложения выполняются в ядре PBX.
При использовании applicationmap приложения выполняются вне ядра PBX.
Это значит, что такие приложения как Goto, Background, WaitExten и другие, которые должны использовать другие расширения плана набора, не смогут правильно функционировать при вызове из applicationmap.
Исключение составляют приложения GoSub и Macro, которые должны быть выполнены для продолжения вызова.

Использование абонентских функций предполагает, что Asterisk контролирует медиа-потоки, т.е. не используется re-invite.

Примеры:

 testfeature => #9,peer,Playback,tt-monkeys

Разрешить сторонам (вызывающей или вызываемой) проиграть звуковой файл (tt-monkeys) противоположной стороне (peer).

  retrieveinfo => #8,peer,Set(ARRAY(CDR(mark),CDR(name))=${ODBC_FOO(${CALLERID(num)})})

Сохранить в CDR пользовательские данные, на основании номера CALLERID.

  pauseMonitor   => #1,self/callee,PauseMonitor     

Разрешить вызываемой стороне, поставить запись своего канала на паузу.

  unpauseMonitor => #3,self/callee,UnPauseMonitor 

Разрешить вызываемой стороне, снять запись своего канала с паузы.

[featuregroup]

Группирует функции назначенные в [applicationmap] Для получения доступа к группе функций добавьте имя группы, как значение переменной DYNAMIC_FEATURES в диалплане.
Например:

extensions.conf

 [globals]
 DYNAMIC_FEATURES => AppsMapsGroupName

features.conf

 [AppsMapsGroupName]    ; имя группы
 testfeature => #9      ; код '#9' назначенный в разделе [applicationmap].
 pauseMonitor => #1     ; код pauseMonitor назначенный [applicationmap].

Настройка Asterisk

  • asterisk/cf/features.conf.txt
  • Последние изменения: 2019/04/18