Джим Меггелен - Asterisk™: будущее телефонии Второе издание
Можно (необязательно) использовать приложение для перехода в именованный приоритет, заданный аргументом именованный_приоритет. Применение именованных приоритетов возможно только в рамках текущего добавочного номера.
exten => 123,1,Answer()
exten => 123,2,Set(COUNT=1)
exten => 123,3,SayNumber(${COUNT})
exten => 123,4,Set(COUNT=$[ ${COUNT} + 1 ])
exten => 123,5,Goto(3)
; то же самое, но с использованием именованного приоритета
exten => 124,1,Answer()
exten => 124,2,Set(COUNT=1)
exten => 124,3(repeat),SayNumber(${COUNT})
exten => 124,4,Set(COUNT=$[ ${COUNT} + 1 ])
exten => 124,5,Goto(repeat)
Смотрите также
GotoIf(), GotoIfTime(), Gosub(), Macro()
GotoIf()
Выполняет переход по условию в заданный приоритет
GotoIf(условие? метка1:метка2)
Направляет вызов в метка1, если условие истинно, или в метка2, если условие ложно. Параметры метка1 и метка2 могут быть опущены (в этом случае просто не выполняется переход при том или ином условии), но не оба одновременно.
В качестве метки может использоваться одно из нижеперечисленного:
• Приоритет, например 10.
• Добавочный номер и приоритет, например 123,10.
• Контекст, добавочный номер и приоритет, например incoming,
123,10.
• Именованный приоритет в рамках того же добавочного номера, например passed.
Все типы меток описаны в данном примере:
[globals]
; присвоим TEST какое-то значение, кроме 101, чтобы ; увидеть, что делает GotoIf(), когда условие ложно TEST=101
[incoming] ; задаем переменную
; переходим в приоритет 10, если ${TEST} равна 101, ; в противном случае переходим в приоритет 20 exten => 123,1,GotoIf($[ ${TEST} = 101 ]?10:20) exten => 123,10,Playback(the-monkeys-twice) exten => 123,20,Playback(tt-somethingwrong)
; то же самое, что было сделано выше, но на этот раз ; зададим добавочный номер и приоритет для каждой метки exten => 124,1,GotoIf($[ ${TEST} = 101 ]?123,10:123,20)
; то же самое, что было сделано выше, но эти метки имеют ; контекст, добавочный номер и приоритет
exten => 125,1,GotoIf($[ ${TEST} = 101 ]?incoming,123,10:incoming,123,20)
; то же самое, что было сделано выше, но на этот раз ; будем переходить в именованные приоритеты exten => 126,1,GotoIf($[ ${TEST} = 101 ]?passed:failed) exten => 126,15(passed),Playback(the-monkeys-twice) exten => 126,25(failed),Playback(the-monkeys-twice)
Смотрите также
Goto(),GotoIfTime(), GosubIf(), MacroIf()
GotoIfTime()
Выполняет переход по условию на основании времени и дня
GotoIfTime(время,дни_недели,дни_месяца,месяцы?метка)
Выполняет переход в заданный добавочный номер, если текущее время соответствует заданному. Каждый элемент может быть определен или как * (для всех случаев), или как диапазон. Аргументы приложения: время
Диапазоны времени в 24-часовом формате.
дни_недели
Дни недели (mon, tue, wed, thu, fri, sat, sun).
дни_месяца
Дни месяца (1-31).
месяцы
Месяцы (jan, feb, mar, apr и т. д.).
; Если мы открыты, переходим в контекст open ; Мы открыты с 9 утра до 6 вечера ; с понедельника по пятницу
exten => s,1,GotoIfTime(09:00-17:59,mon-fri,*,*?open,s,1)
; Также мы задерживаемся по вторникам и четвергам
exten => s,n,GotoIfTime(09:00-19:59,tue&thru,*,*?open,s,1)
; Также мы открыты с 9 утра до полудня по субботам exten => s,n,GotoIfTime(09:00-11:59,sat,*,*?open,s,1)
; Во все остальное время мы закрыты exten => s,n,Goto(closed,s,1)
Смотрите также
GotoIf(), IFTIME
Hangup()
Безусловный разрыв связи по текущему каналу
Hangup( код-причина)
Безусловно разъединяет текущий канал. Для удаленного конца соединения будет задан параметр код-причина как причина завершения вызова, если он поддерживается каналом. По умолчанию параметр код-причина принимает значение 16 (нормальное завершение вызова). Допустимые значения параметра код-причина: 16
Нормальное завершение вызова.
17
Занято.
19
Нет ответа.
21
Вызов отклонен.
34
Линия перегружена.
exten => 123,1,Answer()
exten => 123,2,Playback(im-sorry)
exten => 123,3,Hangup()
Смотрите также
Answer(), Busy(),Congestion()
HasNewVokemail()
Проводит проверку на наличие нового сообщения голосовой почты в указанном ящике голосовой почты
HasNewVoicemail(утящик[@контекст][:папка][, имяпеременной[, опции]])
Приложение было признано устаревшим и заменено функцией VMC0NNK ).
Л ^
Аналогично приложению HasVoicemail(). Это приложение задает для VMSTATUS значение 1 или 0, чтобы обозначить наличие нового (непрослу- шанного) сообщения в ящике голосовой почты, заданном аргументом утящик. Аргумент контекст соответствует контексту голосовой почты, а папка соответствует папке голосовой почты. Если папка голосовой почты не задана, используется папка по умолчанию, INBOX. Если присутствует аргумент имяпеременной, HasNewVoicemail() сохраняет в заданную переменную количество сообщений в заданной папке.
Если для аргумента опции задано значение j, Asterisk в случае наличия нового сообщения голосовой почты будет направлять вызов в приоритет n + 101.
; проверяем наличие непрослушанного сообщения ; голосовой почты в INBOX почтового ящика 123 ; в контексте голосовой почты по умолчанию
exten =>=> 123,1,Answer() exten => 123,n,HasNewVoicemail( [email protected]) exten => 123,n,GotoIf($[${HASVMSTATUS} > 0]?newvm) exten => 123,n,Playback(vm-youhave) exten => 123,n,Playback(vm-no) exten => 123,n,Playback(vm-messages) exten => 123,n,Goto(done) exten => 123,n(newvm),Playback(vm-youhave) exten => 123,n,SayNumber(${HASVMSTATUS}) exten => 123,n,Playback(vm-INBOX) exten => 123,n,Playback(vm-messages) exten => 123,n(done),NoOp()Смотрите также
HasVoicemail(), MailboxExists(), VMCOUNT
HasVoicemail()
Показывает, имеются ли сообщения голосовой почты в указанном ящике голосовой почты
HasVoicemail(vmящик[@контекст][:папка][|имяпеременной[, опции]])
Задает значение переменной канала HASVMSTATUS, чтобы информировать о наличии сообщений в ящике голосовой почты утящик. Аргумент контекст соответствует контексту голосовой почты, а папка - папке голосовой почты. Если папка не задана, используется папка по умолчанию, INBOX. Если передается аргумент имяпеременной, приложение сохраняет в этой переменной количество сообщений в указанной папке. Если для аргумента опции задано значение j, Asterisk в случае наличия голосовой почты в заданной папке будет направлять вызов в приоритет n + 101.
; проверяем, есть ли хотя бы одно сообщение ; голосовой почты в INBOX почтового ящика 123 ; в контексте голосовой почты по умолчанию exten => 123,1,Answer()
exten => 123,2,HasVoicemail( [email protected],COUNT) exten => 123,3,GotoIf(${VMSTATUS}?1000) exten => 123,4,Playback(vm-youhave) exten => 123,5,Playback(vm-no) exten => 123,6,Playback(vm-messages) exten => 123,1000,Playback(vm-youhave) exten => 123,10O1,SayNumber($COUNT) exten => 123,1002,Playback(vm-messages)
Смотрите также
HasNewVoicemail(), MailboxExists()
IAX2Provision()
Выполняет подготовку вызывающего IAXy-устройства
IAX2Provlslon([шаблон])
Выполняет подготовку к работе вызывающего устройства IAXy (предполагая, что вызывающий субъект - это IAXy) с использованием заданного шаблона. Если шаблон не задан, используется шаблон по умолчанию. Шаблоны подготовки IAXy описаны в конфигурационном файле iaxprov.conf.
; выполняем подготовку IAXy-устройств с использованием ; шаблона по умолчанию, когда они набирают этот ; добавочный номер
exten => 123,1,IAX2ProviSion(default)
ICES()
Выполняет потоковую передачу аудиоданных на сервер Icecast
ICES([конфигурация])
Выполняет потоковую передачу аудиоданных на сервер Icecast (или
совместимый) с помощью приложения ices.
См. файл-образец config в contrib/asterisk-ices.xml.
exten => 123,1,Answer()
exten => 123,n,ICES(/tmp/my-ices-config.xml)
ImportVar()
Задает переменную на основании переменной канала, полученной от другого канала
ImportVar(новаяпеременная=канал, .значение)
Задает переменной новаяпеременная значение, вычисленное для заданного канала (не текущего канала). Если новаяпеременная начинается с символа _, предполагается простое наследование. Если она начинается с символов _ _, предполагается множественное наследование. ; читаем информацию Caller ID из канала Zap/1 exten => 123,1,Answer()
exten => 123,n,ImportVar(cidinfo=Zap/1,CALLERID(all))
Смотрите также
Set()
Log()
Протоколирует специальное сообщение из диалплана