Asterisk™: будущее телефонии Второе издание - Меггелен Джим Ван
Если нет веских оснований не делать этого, Answer() рекомендуется использовать для канала перед вызовом всех остальных приложений. Существует несколько ключевых приложений, которые требуют, чтобы перед их выполнением было выполнено приложение Answer(). В противном случае они могут работать некорректно: exten => 123,1,Answer(750) exten => 123,n,Playback(tt-weasels)
Смотрите также
Hangup()
AppendCDRUserField()
Добавляет значение в поле пользователя записи Call Detail Record
AppendCDRUserField( .значение)
Добавляет значение в поле пользователя записи Call Detail Record (CDR). Поле пользователя часто используется для хранения произвольных данных о вызове, которые не подходят для всех остальных полей:
; задаем в поле пользователя значение 'abcde' exten => 123,1,SetCDRUserField(abcde) ; теперь добавлям в конец 'xyz' exten => 123,1,AppendCDRUserField(xyz)
Это приложение было признано устаревшим и заменено CDR- функцией.
exten => 123,1,Set(CDR(userfield)=${CDR(userfield)}12345)
Смотрите также
SetCDRUserField(), ForkCDR(), NoCDR(), ResetCDR(), CDR
Authenticate()
Требует от вызывающего абонента введения правильного пароля для продолжения выполнения
Authenticate(пaроль[,опции[, максимумсимволов]])
Требует от вызывающего абонента ввести заданный пароль, чтобы продолжать выполнение следующего приоритета диалплана. Authenticate() дает вызывающему абоненту три попытки для правильного введения пароля. Если за эти три попытки вызывающий абонент так и не смог ввести правильный пароль, выполняется разрыв соединения.
Если пароль начинается с символа /, он трактуется как файл, содержащий список действительных паролей (по одному в строке). Пароли также могут храниться в базе данных Asterisk (AstDB); см. опцию d ниже. Параметр максимумсимволов задает максимальное число символов, которое может ввести вызывающий абонент. Если этот параметр не задан, приложение будет принимать неограниченное число символов и станет ожидать от вызывающего абонента нажатия кнопки # после введения кода аутентификации.
Может быть задана одна или несколько опций из следующего списка:
a
Присваивает CDR-полю accountcode, а переменной канала ACCOUNTCODE - значение введенного пароля.
d
Трактует путь не как файл, а как ключ базы данных Asterisk, в которой следует искать пароль. При использовании ключа базы данных значением, ассоциированным с ключом, может быть все что угодно.
j
Поддерживает переход к приоритету n + 101 в случае неудачной аутентификации.
m
Трактует заданный путь как файл, содержащий список кодов учетных записей и хешей паролей, разделенных символом : (двоеточие), по одному в строке. При совпадении одного из паролей для канала будет задан код учетной записи, соответствующий коду, указанному в файле.
r
Удаляет ключ базы данных после успешного входа (действительна только с опцией d).
; вынуждаем вызывающего абонента ввести пароль,
; прежде чем выполнять остальные действия,
; и сохраняем введенный пароль в CDR-поле 'accountcode'
exten => 123,1,Answer()
exten => 123,n,Authenticate(1234,a)
exten => 123,n,Playback(pin-number-accepted)
exten => 123,n,SayDigits(${ACCOUNTCODE})
Смотрите также
VMAuthenticate(), DISA(), главу 6
Background()
Воспроизводит файл, принимая при этом сигналы тонального набора (DTMF)
Background(имяфайла1[&имяфайла2...][,опции[, язык]])
Воспроизводит заданные аудиофайлы в процессе ожидания введения пользователем DTMF-кодов. Как только пользователь начинает вводить DTMF-коды, воспроизведение прекращается. Asterisk пытается найти соответствующий добавочный номер в целевом контексте (или текущем контексте, если целевой контекст не задан), и, как только будет найдено однозначное соответствие, выполнение диалплана продолжится в соответствующем добавочном номере.
имяфайла должно быть задано без расширения файла, поскольку Asterisk автоматически выбирает формат файла с минимальными затратами на преобразование.
Допустимыми опциями являются следующие:
s
Сообщение воспроизводиться не будет, если канал находится не в состоянии «соединен» (то есть еще не получен ответ на вызов). Если s задана, приложение будет возвращаться сразу же, как только канал окажется не в состоянии «соединен».
n
Не отвечать на вызов до воспроизведения заданного файла. Без этой опции ответ на вызов будет произведен автоматически перед воспроизведением звука. Не все каналы поддерживают воспроизведение сообщений до ответа на вызов.
m
Прерывать воспроизведение, только если введенный код соответствует одноразрядному добавочному номеру в целевом контексте.
Аргумент язык может использоваться для задания языка воспроизводимого приглашения, если он отличается от используемого языка канала.
exten => 123,1,Answer()
exten => 123,2,Background('exter-ext-of-person');
Смотрите также
ControlPlayback(), WaitExten(), BackgroundDetect(), TIMEOUT
BackgroundDetect()
Воспроизводит файл в фоновом режиме и выявляет разговор
BackgroundDetect(имяфайла[, sil[,min[, max]]])
Аналогично Background(), но пытается выявить разговор.
Во время воспроизведения файла выполняется отслеживание аудиосигналов во входящем потоке. Если период отсутствия тишины длится больше min миллисекунд, но еще меньше max миллисекунд и за ним следует пауза продолжительностью как минимум sil миллисекунд, воспроизведение звука прерывается и выполнение переходит в добавочный номер talk (разговор), если таковой доступен.
Если не заданы, параметры sil, min и max по умолчанию принимают значения 1000 мс, 100 мс и бесконечное количество соответственно.
exten => 123,1,BackgroundDetect(tt-monkeys) exten => 123,2,Playback(im-sorry) exten => talk,1,Playback(yes-dear)
Смотрите также
Playback(), Background()
Busy()
Обозначает состояние занятости канала
Busy([времяожидaния])
Указывает каналу обозначить состояние «занято», а затем ожидает, когда пользователь повесит трубку или разрыва соединения по истечении времени ожидания (заданного необязательным параметром вре- мяожидания в секундах).
Это приложение сигнализирует о состоянии занятости только для соединенных каналов. У каждого типа каналов имеется собственный
способ оповещения вызывающего абонента о состоянии занятости. Можно использовать Playtones(busy) для воспроизведения сигнала «занято».
exten => 123,1,Playback(im-sorry) exten => 123,2,Playtones(busy) exten => 123,3,Busy()
Смотрите также
Congestion(), Progress(), Playtones(), Hangup()
ChangeMonitor()
Меняет имя файла для записи разговора по каналу
ChangeMonitor(базовое_имяфайла)
Меняет имя записанного файла для канала, созданного приложением Monitor(). Это приложение не оказывает никакого эффекта, если на канале не производится запись разговора. Аргумент базовое_имяфайла - это новое базовое имя файла, которое должно использоваться для записи разговора в канале.
; начинаем запись разговора в данном канале, ; используя базовое имя файла 'sample' exten => 123,1,Monitor(sample) ; меняем базовое имя файла на 'example' exten => 123,2,ChangeMonitor(example)
Смотрите также
Monitor(), StopMonitor(), MixMonitor()
ChanIsAvail()
Определяет, доступен ли в настоящее время заданный канал
ChanIsAvall(технология1/ресурс1[&технолоигя2/ресурс2...][, опции])