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
При использовании FreePBX, не все изменения внесенные в features_general_custom.conf будут отображены командой features show. При этом, после применения изменений, они будут активны.
- 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
- atxfer – DTMF код сопровождаемого перевода. (Default: )
- blindxfer – DTMF код слепого перевода. (Default: #)
- disconnect – DTMF код разъединения вызова. (Default: *)
- parkcall – DTMF код парковки вызова. Начиная с версии Asterisk 12 конфигурация парковки вызова осуществляется в res_parking.conf
- automon – DTMF код раздельной записи входящего и исходящего каналов.
Данный DTMF код активирует приложение записи Monitor.
Формат файла определяется переменной канала <TOUCH_MONITOR_FORMAT>.
Если переменная не задана, по умолчанию wav.
Имя файла конструируется по схеме - prefix-timestamp-filename.
Где prefix задается переменной канала <TOUCH_MONITOR_PREFIX> или 'auto', если переменная не задана.
timestamp - UNIX timestamp.
filename - задается переменной канала <TOUCH_MONITOR> или callerid канала, если переменная не задана.
- automixmon – DTMF код микшированной записи вызова.
Данный 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].