- База знаний
- Пример файла конфигурации XML для Cisco 8851 phone
- Пример файла конфигурации XML для Cisco 7970 phone
- Пример файла конфигурации XML для Cisco 9971
- Отладка VoIP звонка с Wireshark
- Книги
- Использование поля Diversion в SIP пакете
- Астериск и Н.323
- ISDN release cause codes
- Пример файла конфигурации голосового шлюза Cisco
- Пример конфигурации интерфейса E1 PRI в голосовом шлюзе Cisco
- Аналоговое зло
- Интернациональные телефонные коды стран
- Практикум по интеграции Астериск в комплексе с OpenBSC/Osmocom
- Факс по IP
Файл конфигурации features.conf
Ранее назывался - parking.conf, переименован в features.conf в CVS версии, начиная с 17-07-2004.
Конфигурация парковки вызовов
parkext => 700 ; Номер екстеншена, набираемый для парковки вызова.
parkpos => 701-720 ; Номера екстеншенов, на которые будут парковаться вызовы.
context => parkedcalls ; Название контекста, где обрабатывается парковка вызовов, и который нужно включать директивой "INCLUDE " в план набора - extensions.conf.
parkingtime => 45 ; Количество секунд, определяющее максимальное время на которое может быть запаркован вызов (по умолчанию - 45 секунд).
; по истечении таймаута, будет вызываться оригинальный, первоначально вызванный, номер екстеншена.
Замечание: Вы должны перезапустить Asterisk или перегрузить модуль res_features.so, после внесения изменений в файл features.conf.
Добавлено в Asterisk начиная с версии 1.2:
Добавлена возможность использовать комбинацию, отличную от *8 для перехвата (pickup) поступающих вызовов в своей группе (call group) на свой телефон.
Для этого в файле features.conf используется следующий параметр:
pickupexten = *8 ; Конфигурация номера екстеншена для перехвата входящих вызовов (pickup extension). По умолчанию - *8.
В некоторых SIP телефонах и VOIP шлюзах такой код, как *8 может использоваться для внутренних сервисных функций, следовательно, Вам необходимо задать для параметра "pickupexten" некоторое другое значение. Например, если Ваши внутренние номера находятся в диапазоне: 201-299, то для этой функции удобно было бы назначить номер 200.
Добавлено в CVS HEAD (и в Asterisk, начиная с версии 1.2.0) в январе 2005
;transferdigittimeout => 3 ; Максимальное число секунд между набираемыми цифрами при осуществлении перевода вызова на другой номер.
;courtesytone = beep ; Звуковой файл, проигрываемый запаркованному абоненту,
; когда кто-либо "снимает" его вызов с парковки.
;xfersound = beep ; Звуковой файл, для индикации того, что перевод вызова с консультацией (attended transfer) успешно завершен.
;xferfailsound = beeperr ;Звуковой файл, для индикации неудачи при переводе вызова на другой номер.
;adsipark = yes ; Устанавливается, если Вы хотите получать анонс о номере, на который был запаркован вызов, по ADSI.
;findslot => next ; Парковать вызов на следующий свободный номер в выделенном диапазоне номеров для этих целей. По умолчанию - 'first' (первый доступный номер из диапазона).
;pickupexten = *8 ; Конфигурация номера екстеншена для перехвата входящих вызовов (pickup extension). По умолчанию - *8.
;featuredigittimeout = 500 ; Максимальное время (в миллисекундах) между набираемыми цифрами, набираемых для активации описываемых тут функций. По умолчанию - 500.
[featuremap]
;blindxfer => #1 ; Комбинация кнопок для слепого перевода вызова на другой номер (Blind transfer), по умолчанию - #
;disconnect => *0 ; Комбинация кнопок для прекращения соединения.
;automon => *1 ; Комбинация кнопок для включения функции записи разговора (One Touch Record).
;atxfer => *2 ; Комбинация кнопок для включения функции перевода вызова с консультацией (attended transfer).
[applicationmap]
; Не используйте комбинацию кнопок, такую как, например, #9 в секциях applicationmap или featuremap, только если Вы не поменяли комбинацию для параметра 'blindxfer' с значения # на какое-либо другое, например - #1 !
testfeature => *9,callee,Playback,tt-monkeys ;Проиграть файл tt-monkes вызываемому абоненту (callee), при наборе комбинации *9 - используйте опции 'callee' или 'caller', в зависимости от того, кому должен проигрываться файл.
Если Вы установите значение переменной __TRANSFER_CONTEXT , тогда оно будет использоваться в качестве контекста при переводе вызова на другой номер (обратите внимание на два ведущих символа подчеркивания).
Более того: Вы должны установить значение переменной TRANSFER_CONTEXT, как для канала, на котором производиться перевод вызова, так и для канала, куда попадает переведенный вызов. Не знаю почему, но res_features считает более приоритетной переменную TRANSFER_CONTEXT из канала, куда попадает переведенный вызов, а если она не определена, то используется переменная канала, который был инициатором перевода вызова. Этот контекст используется для поиска и обработки номера, на который производится переадресация вызова. Итак, Вы можете установить значение этой переменной в любом контексте, в котором хотите.
Использую директиву blindxfer в секции [featuremap], Вы можете переопределить комбинацию кнопок для слепого перевода вызова на другой номер. Например, если для параметра blindxfer установить значение "##", тогда вы сможете перевести вызов на другой номер только, если вы сначала два раза быстро нажмете кнопку "#". Это решает проблему при использовании голосового меню в сервере Asterisk, где может потребоваться эта клавиша для других целей, например, в случае с приглашением - "Введите Ваш код доступа и нажмите клавишу решетка (#)".
atxfer - позволяет совершать контролируемый перевод вызова на другой номер (attended transfer). Это работает примерно так:
В процессе разговора со своим собеседником, Вы можете набрать последовательность кнопок, определенную в директиве "atxfer". После этого Вы услышите звуковое приглашение от сервера Asterisk - "Transfer", далее будет генерироваться длинный тональный сигнал (КПВ). В это время Ваш собеседник будет переведен в режим ожидания и ему будет проигрываться музыка. Теперь Вы можете набрать номер, на который вы хотите перевести вызов и после соединения, можете сообщить этому абоненту, что он сейчас будет соединен с Вашим собеседником. После того, как Вы положите трубку, Ваш собеседник и абонент на которого вы перевели вызов, будут соединены между собой. В случае, когда абонент, на которого Вы переводите вызов, по каким-либо причинам не хочет говорить с Вашим собеседником, он может просто повесить трубку, и Вы снова соединитесь с ним.
Замечание: Вы ДОЛЖНЫ использовать в команде Dial() параметры T и/или t, чтобы эта функция могла работать у вызывающего и/или вызываемого абонента.
applicationmap
Вам необходимо назначить значение для переменной канала DYNAMIC_FEATURES, чтобы использовать функции, описанные в секции [applicationmap]:
Set(DYNAMIC_FEATURES=hangup#play#testfeature)
Замечание по поводу потоков медиаданных: Когда сервер Asterisk знает или предполагает, что он находиться не на пути потока с медиаданными, то он также предполагает, что не может принимать DTMF посылки. Однако, если используется метод SIP INFO для DTMF сигнализации, тогда прием DTMF должен работать и в этом случае, т.к., когда сервер Asterisk находит нужные DTMF посылки, он будет 'рассоединять', уже соединенные напрямую потоки медиаданных, и заново соединит их уже пропуская эти потоки через себя.
Пример
Начало записи разговора, нажатием одной кнопки.exten => 123,1,Set(DYNAMIC_FEATURES=automon) ; включаем функцию "One-touch".
exten => 123,2,Dial(SIP/phone100,,wW) ; параметры "wW" включают функцию "запись разговора, нажатием одной кнопки".
Входящий и исходящий звуковой поток записываются в два отдельных файла, и будут доступны в директории Вашего сервера asterisk:
/var/spool/asterisk/monitor
Эти два звуковых файла можно смикшировать в один, используя утилиту sox:
soxmix *in.wav *out.wav output.wav
При необходимости, полученный в результате файл можно конвертировать и ужать в другой формат, например, MP3, используя утилиту lame:
lame --preset voice -v -B 64 -a output.wav output.mp3
Фактически, Вам не надо использовать везде, где только можно функцию SET для установки значения этой переменной, оно требуется только перед директивой Dial, Вашего плана набора.
Вместо этого, можно глобально включить "automon", поместив следующую директиву в файл extensions.conf:
[globals]
DYNAMIC_FEATURES=>automon
При этом эта функция будет работать для всех команд Dial() или Queue(), с установленными параметрами "w" или "W".
По умолчанию, "automon" будет использовать формат "wav" для записи вызовов, но Вы можете указать другой формат, установив значение переменной TOUCH_MONITOR_FORMAT в нужное Вам значение.
Ссылки по теме:
- Команда Record и/или Команда Monitor
- Парковка вызовов в сервере Asterisk
- PBX CallTransfer
- Asterisk