355 500 произведений, 25 200 авторов.

Электронная библиотека книг » Джим Меггелен » Asterisk™: будущее телефонии Второе издание » Текст книги (страница 32)
Asterisk™: будущее телефонии Второе издание
  • Текст добавлен: 7 октября 2016, 17:17

Текст книги "Asterisk™: будущее телефонии Второе издание"


Автор книги: Джим Меггелен


Соавторы: Джаред Смит,Лейф Мадсен

Жанр:

   

ОС и Сети


сообщить о нарушении

Текущая страница: 32 (всего у книги 41 страниц)

Если включен аргумент URL, этот URL будет отправлен каналу (если поддерживается).

Если задать переменную канала OUTBOUND_GROUP перед вызовом Dial(), все каналы типа peer, созданные данным приложением, будут помещаться в эту группу вызовов. В следующем примере все каналы peer, созданные приложением Dial(), будут частью группы вызовов test:

; используем OUTBOUND_GROUP exten => 123,1,Set(OUTBOUND_GROUP=test) exten => 123,n,Dial(IAX2/anotherbox/12345) Если задана переменная OUTBOUND_GROUP_ONCE, все каналы peer, созданные данным приложением, будут помещены в эту группу. Однако, в отличие от OUTBOUND_GROUP, эта переменная будет сброшена после использования.

Приложение Dial() при выходе задает следующие переменные:

DIALEDTIME (время дозвона)

Общее время с момента начала выполнения Dial() до завершения.

ANSWEREDTIME (время ответа)

Общее время вызова.

DIALSTATUS (статус звонка)

Статус звонка, задается одним из следующих значений:

CHANUNAVAIL (канал недоступен) Канал недоступен.

CONGESTION (перегрузка)

Канал возвратил сигнал перегрузки, обычно свидетельствующий о невозможности завершить соединение.

NOANSWER (не отвечает)

Канал не ответил в течение времени, заданного опцией времяожи– дания-ответа.

BUSY (занят)

Вызываемый канал в настоящее время занят.

ANSWER(ответ)

Канал ответил на вызов.

CANCEL (отмена)

Вызов был отменен.

DONTCALL (не вызывать)

Вызов был переведен в состояние DONTCALL опциями экранирования или конфиденциальности.

TORTURE (отключение)

Вызов был переведен в состояние TORTURE опциями экранирования или конфиденциальности.

INVALIDARGS (недействительные аргументы)

В приложение Dial() были переданы недействительные аргументы.

; набираем семизначный номер по Zap-каналу 4 exten => 123,1,Dial(Zap/4/2317154)

; набираем тот же номер, но на этот раз дозвон будет ; осуществляться только в течение 10 с, ; после чего будет продолжено выполнение диалплана exten => 124,1,Dial(Zap/4/2317154,10)

exten => 124,2,Playback(im-sorry) exten => 124,3,Hangup()

; набираем тот же номер, но на этот раз без времени ; ожидания, и используем флаги t, T и m exten => 125,1,Dial(Zap/4/2317154,,tTm)

; набираем добавочный номер 500 на удаленном хосте ; (по протоколу IAX), используя заданные ; имя пользователя и пароль

exten => 126,1,Dial(IAX2/username:password@remotehost/500)

; набираем номер, но ограничиваем звонок 5 мин ; (300 000 мс), начинаем предупреждать вызывающего ; абонента через 4 мин (240 000 мс) разговора ; и повторяем предупреждение каждые 30 с (30 000 мс) exten => 127,1,Dial(Zap/4/2317154,,L[300000:240000:30000])

Смотрите также

RetryDial()

Dictate()

Виртуальный диктофон

Dictate([базовая_папка[, имяфайла]])

Это приложение обеспечивает возможность записи и воспроизведения файлов, аналогично традиционному диктофону. Параметр базовая_папка определяет папку, в которую Asterisk будет сохранять записываемые файлы. Если она не задана, по умолчанию файлы сохраняются в подпап– ку dictate папки очереди Asterisk (как задано в файле asterisk.conf).

Если задан параметр имяфайла, он будет использоваться при записи файла. Если он не задан, Asterisk предложит вызывающему абоненту ввести числовое имя файла.

Asterisk записывает файлы без сжатия, без заголовков, в формате signed-linear. Если потребуется преобразовать файл в другой формат, можно использовать внешнюю утилиту, такую как sox, или применить команду file convert из интерфейса командной строки Asterisk.

Приложение Dictate() имеет два основных режима: режим записи и режим воспроизведения. Для переключения режимов вызывающий абонент может нажать кнопку 1. В обоих режимах кнопка 0 используется для вызова справочной системы. Кнопка * служит для приостановки или продолжения записи либо воспроизведения. Кнопка # позволяет вызывающему абоненту выбрать новое имя файла. В режиме записи можно использовать кнопку 8, чтобы стереть всю запись и начать заново.

В режиме воспроизведения кнопка 7 обеспечивает перемотку на несколько кадров назад, а кнопка 8 – перемотку на несколько кадров вперед. Кнопка 2 используется для переключения скорости воспроизведения (1х, 2х, 3х или 4х).

; начинаем диктовку и сохраняем файлы в папке /tmp/dictate exten => 123,1,Dictate(/tmp/dictate)

Смотрите также

Playback(), Background(), ControlPlayback()

Directory()

Предоставляет справочник набираемых добавочных номеров

Directory(vm-к.онтек.с^, контекст-набора[,опции]])

Предоставляет пользователям справочник добавочных номеров, которые они могут выбирать по имени абонента. Список имен и добавочных номеров можно найти в файле voicemail.conf. Аргумент vm-контекст является обязательным; он определяет используемый контекст voicemail.conf. Аргумент контекст-набора – это контекст, используемый для выполнения звонков абонентам. Если не задан, по умолчанию принимается значение vm-контекст. Если для аргумента опции задано значение f, Asterisk будет искать соответствующий номер в справочнике на основании имени, указанного в файле voicemail.conf, а не фамилии абонента. Если задана опция e, кроме имени абонента, Asterisk будет выполнять поиск также и по добавочному номеру.

Если пользователь вводит 0 (нуль) и в текущем контексте есть добавочный номер o (или строчная буква о), управление вызовом перейдет в этот добавочный номер. Введение * обеспечит аналогичный выход, но только в добавочный номер a, что очень похоже на поведение Voicemail(). exten => *,1,Directory(default,incoming) exten => #,1,Directory(default,incoming,f) exten => 9,1,Directory(default,incoming,fe)

Смотрите также

voicemail.conf

DISA()

Direct Inward System Access (Прямой внутрисистемный доступ): позволяет внешним абонентам выполнять исходящие звонки

DISA(пароль[, контекст[, callerid[, почтовыйящик.[@утк.онтек.ст]]]]) DISA(файл-пароля[, callerid[, почтовыйящик[@утконтекст]]])

Позволяет внешним абонентам получать «внутренний» тональный сигнал системы и совершать вызовы с АТС так, как будто они являются ее локальными пользователями. Абоненту предоставляется тональный сигнал, после чего он должен ввести свой секретный код и нажать в конце кнопку #. Если секретный код правильный, абонент услышит тональный сигнал системы и сможет выполнять звонки.

Очевидно, что такой тип доступа создает серьезную угрозу безопасности. Его необходимо использовать чрезвычайно осторожно, чтобы не ухудшить безопасность своей системы телефонной связи.

Аргумент пароль – это числовой секретный код, который абонент должен ввести, чтобы получить возможность выполнять исходящие звонки. Используя этот синтаксис, все абоненты данного добавочного номера будут применять один пароль. Чтобы абоненты могли использовать DISA() без пароля, напишите вместо пароля строку no-password (пароль не нужен).

Аргумент контекст определяет контекст, в котором абонент будет набирать номер. Если контекст не задан, по умолчанию приложение DISA() использует контекст disa.

Аргумент callerid определяет новую строку Caller ID, которая будет использоваться для исходящего звонка.

Аргумент почтовыйящик – это номер почтового ящика (и необязательный контекст голосовой почты, утконтекст) голосовой почты. Если в указанном ящике голосовой почты есть новые сообщения, вызывающий абонент будет слышать прерывистый тональный сигнал. Кроме того, можно использовать альтернативный синтаксис и передавать вместо аргументов пароль и контекст имя глобального файла паролей. В каждой строке файла может содержаться или секретный код, или секретный код и контекст, разделенные символом вертикальной черты (| ). Если контекст не задан, приложение по умолчанию использует контекст disa.

Если регистрация абонента прошла успешно, приложение проводит синтаксический разбор набранного номера в заданном контексте:

; позволяем внешним абонентам звонить на номера 1-800, ; если они знают секретный код. Задаем им Caller ID, чтобы ; создать впечатление, что они звонят из компании [incoming]

exten => 123,1,DISA(4569,disa,"Company ABC" <(234) 123-4567>) [disa]

exten => _1800NXXXXXX,1,Dial(Zap/4/${EXTEN})

Смотрите также

Authenticate(), VMAuthenticate()

DumpChan()

Выводит информацию о вызывающем канале в консоль

DumpCha.n([минимaльный_уровень_детaльности])

Выводит на экран информацию о вызывающем канале, а также список всех переменных канала. Если задан параметр минимальный_уровень_де– тальности, вывод отображается, только когда текущий уровень детальности сообщений такой же или выше.

Если задано несколько переменных канала, DumpChan() покажет только первые 1024 символа списка переменных вашего канала.

exten => s,1,Answer() exten => s,2,DumpChan()

exten => s,3,Background(enter-ext-of-person)

Смотрите также

NoOp(), Verbose()

EAGI()

См. AGI().

Echo()

Воспроизводит вызывающему абоненту то, что он говорит

Echo()

Возвращает звуковой сигнал из канала назад в канал. Это приложение часто используется для тестирования задержки и качества голоса VoIP– линии. Вызывающий абонент может нажать кнопку #, чтобы выйти.

exten => 123,1,Echo()

exten => 123,2,Playback(vm-goodbye)

Смотрите также

Milliwatt()

EndWhile()

Завершает цикл while

EndWhile()

Возвращается к ранее вызванному приложению While(). Полную информацию о том, как использовать цикл while, можно найти в описании приложения While().

exten => 123,1,Set(COUNT=1) exten => 123,2,While($[ ${COUNT} < 5 ]) exten => 123,3,SayNumber(${COUNT}) exten => 123,4,Set(COUNT=$[${COUNT} + 1] exten => 123,5,EndWhile()

Смотрите также

While(), ExitWhile(), GotoIf()

Exec()

Динамически выполняет приложение Asterisk

Ex.ec(имяприложения(aргументы))

Позволяет вызывать любое приложение, даже если оно не указано в коде диалплана. Выполняет выход так же, как и базовое приложение, или аварийно, если это приложение не найдено. Значение аргументы передается в вызываемое приложение.

Это приложение позволяет динамически вызывать приложения, извлекая их из базы данных или другого внешнего источника.

exten => 123,1,Set(MYAPP=SayDigits(12345)) exten => 123,2,Exec(${MYAPP})

Смотрите также

EVAL, TryExec(), ExecIf()

ExecIf()

Выполняет приложение Asterisk по условию

ExecIf(выражение,приложение, аргументы)

Если выражение истинно, выполняет заданное приложение, передавая в него аргументы, и возвращает результат. Больше информации о выражениях Asterisk можно найти в главе 6 или в файле channelvariables. txt в подпапке doc/ папки исходного кода Asterisk. Если выражение ложно, выполнение продолжается со следующего приоритета.

exten => 123,1,ExecIf($[ ${CALLERIDNUM} = 101 ],SayDigits,12345) exten => 123,2,SayDigits(6789)

Смотрите также

EVAL, Exec(), TryExec()

ExitWhile()

Выполняет выход из цикла While() независимо от того, было удовлетворено условие или нет

ExitWhile()

Завершит цикл While() независимо от того, было ли удовлетворено условие в выражении.


exten => 123,1,Set(COUNT=1)123,1,Set(COUNT=1)
exten => 123,n,While($[${COUNT} < 5])
exten => 123,n,GotoIf($[${COUNT} != 3]?continue)
exten => 123,n,ExitWhile()
exten => 123,n(continue),NoOp()
exten => 123,n,SayNumber(${COUNT})
exten => 123,n,Set(COUNT=$[${COUNT} + 1])
exten => 123,n,EndWhile()

Смотрите также

While(), ContinueWhile(), EndWhile()

ExtenSpy()

Прослушивает аудиосигнал по добавочному номеру и может (опционально) посылать сигнал в вызывающий канал

ExtenSpy([добавочныйномер@контекст[, опции]])

Это приложение используется для прослушивания аудиосигнала, поступающего в канал и из канала Asterisk. Для прослушивания будут выбираться только каналы, созданные исходящими вызовами с заданного добавочного номера.

При прослушивании канала могут выполняться следующие действия:

• Набор # циклически меняет уровень громкости.

• Набор * заставит приложение перейти к прослушиванию следующего доступного канала.

Параметр опции может содержать нуль или более следующих опций: b

Прослушивать только соединенные каналы.

g(группа)

Прослушивать только каналы с переменной канала SPYGROUP, в которой в необязательном списке с разделяющими двоеточиями должна быть указана группа.

q

Скрытый режим. Указывает приложению, начиная прослушивание, не подавать звуковой сигнал или не читать имя выбранного канала.

r[(базовоеимя)]

Записывает разговор, ведущийся по каналу, в папку очереди для записей разговоров (обычно это /var/spool/asterisk/monitor). Необязательный аргумент базовоеимя задает базовое имя файла для записей, значение по умолчанию – chanspy.

v([значение])

Настраивает громкость прослушиваемого аудиосигнала. Значение должно быть в диапазоне от 4 до -4. Отрицательное значение сделает звук тише, тогда как положительное – громче.

w

Режим шепота. Позволяет прослушивающему каналу «говорить» с прослушиваемым каналом. При этом ни один другой соединенный канал не сможет слышать этот разговор.

W

Закрытый режим шепота. Позволяет прослушивающему каналу «говорить» с прослушиваемым каналом без возможности слышать аудиосигнал из прослушиваемого канала.

; Прослушиваем каналы, созданные добавочным номером 125 ; в контексте lab

exten => 123,1,ExtenSpy(125@lab,w)

Смотрите также

ChanSpy()

ExternalIVR()

Обеспечивает сопряжение с внешним IVR -приложением

ExternalIVR(команда[,аргумент1[,аргумент2...]])

Создает процесс для выполнения указанной совместимой с интерфейсом ExternallVR команды и запускает генератор для канала. Список воспроизведения генератора управляет внешним приложением, которое может добавлять и удалять записи посредством простых команд, передаваемых по STDOUT. Внешнее приложение будет получать уведомления обо всех DTMF-событиях, полученных по каналу, а также уведомление о том, что абонент повесил трубку. Приложение не будет принудительно завершаться, когда абонент повесил трубку. Спецификацию интерфейса ExternalIVR можно найти в папке исходного кода Asterisk в файле doc/externalivr.txt.

; Выполняем внешнюю программу IVR, передавая аргумент

exten => 123,1,ExternalIVR(test_program,${MYARGUMENT})

Смотрите также

AGI()

FastAGI()

Удаленно выполняет совместимый с AGI сценарий

FastAGI(agl://имяхоста[:порт][/сценарий], аргументы)

Выполняет совместимую с AGI программу по сети. Это приложение очень похоже на AGI(), за исключением того что вызывает специально написанный сценарий FastAGI по сетевому соединению. Основные цели использования FastAGI – перенести требующие интенсивной работы ЦП AGI-сценарии на удаленные серверы и сократить время запуска AGI-сце– нария (программа FastAGI выполняется уже до того, как Asterisk соединится с ней).

FastAGI() пытается подключиться прямо к выполняющейся программе FastAGI, которая должна слушать соединения по заданному порту сервера, заданного параметром имяхоста. Если порт не задан, по умолчанию используется порт 4573. Если сценарий задан, он передается в программу FastAGI как переменная agi_network_script (сетевой agi-сцена– рий). Параметр аргументы будет передан в программу.

Пример сценария FastAGI можно найти в папке исходного кода Asterisk agi/fastagi-test. Он должен послужить вам хорошим образцом для написания собственных программ FastAGI.

Возвращает -1, если приложение запросило разорвать соединение, или 0 при выходе без разрыва соединения.

; соединяемся с программой fastagi-test, которая уже ; должна выполняться на локальном компьютере exten => 123,1,Answer() exten => 123,2,FastAGI(agi://localhost)

; соединяемся со сценарием FastAGI на хосте calvin ; через порт 8000 и передаем имя сценария testing ; с аргументом 12345 exten => 124,1,Answer()

exten => 124,2,FastAGI(agi://calvin:8000/testing,12345)

Смотрите также

AGI(), DeadAGI()

Festival()

Использует механизм речевого воспроизведения текста Festival для чтения текста вызывающему абоненту

Festival^^^, кнопкипрерывания])

Подключается к выполняемому локально серверу Festival, посылает ему текст и воспроизводит результирующий звуковой файл абоненту. Это приложение позволяет вызывающему абоненту нажимать определенную кнопку (заданную параметром кнопкипрерывания), чтобы немедленно прекратить воспроизведение и возвратить значение кнопкипреры– вания. Если для параметра кнопкипрерывания задано значение any (любой), Festival() передаст управление каналом добавочному номеру, введенному пользователем.

Более подробную информацию об использовании Festival с Asterisk можно найти в главе 14 и в файле README.festival, находящемся в подпапке contrib/ папки исходного кода Asterisk. Сервер Festival должен быть запущен до запуска Asterisk, и, прежде чем вызывать Festival(), необходимо ответить каналу, используя приложение Answer().

exten => 123,1,Answer()

exten => 123,2,Festival('This is sample speech from Festival',#)

Flash()

Посылает мгновенное событие сброса в магистральный канал Zap

Flash()

Посылает мгновенное событие сброса в Zap-канал. Это инструмент для тех, кто хочет перадресовывать вызовы и выполнять другие действия, которые требуют мгновенного сброса, через AGI-сценарий. В целом это довольно бесполезное приложение.

В случае успешного выполнения возвращает 0 или -1, если это не магистральный канал Zap.

exten => 123,1,Flash()

FollowMe()

Функциональность «найди меня/следуй за мной»

FollowMe(followmeid[, опции])

Это приложение пытается определить местоположение вызываемого абонента, набирая множество разных номеров последовательно или одновременно, как определено в файле followme.conf. Параметр followmeid идентифицирует раздел файла followme.conf, в котором определено, как должен быть найден этот вызываемый абонент. Параметр опции может содержать нуль или более следующих значений: s

Перед выполнением шагов функции «следуй за мной» воспроизводится сообщение о состоянии на входе.

a

Записывается имя вызывающего абонента, чтобы оно могло быть объявлено вызываемому абоненту на каждом шаге.

n

Воспроизводится сообщение о состоянии «недоступен», если все шаги для установления связи с вызываемым абонентом исчерпаны или вызываемый абонент желает быть недоступным:

exten => 123,1,Answer() exten => 123,2,FollowMe(123,san) exten => 123,3,VoiceMail(123,u)

ForkCDR()

Создает дополнительную запись CDR из текущего вызова

ForkCDR([опции])

Создает дополнительную запись параметров вызова для оставшейся части текущего вызова.

Это приложение часто используется в приложениях телефонных карточек, чтобы отличить входящий вызов (исходная CDR) от оплачиваемого разговора (вторая CDR).

Если задана опция v, все переменные CDR из текущей записи будут унаследованы новой записью CDR.

exten => 123,1,Answer()

exten => 123,2,ForkCDR(v)

exten => 123,3,Playback(tt-monkeys)

exten => 123,4,Hangup()

Смотрите также

Функция CDR, NoCDR(), ResetCDR()

GetCPEID()

Получает CPE ID от телефона, поддерживающего ADSI

GetCPEID()

Получает CPE ID и другую информацию и отображает ее в консоли Asterisk. Эта информация часто нужна, чтобы правильно настроить в файле zapata.conf операции при неподнятой трубке для телефонов, поддерживающих ADSI.

Возвращает -1 только в случае разрыва связи.

; используем этот добавочный номер, чтобы получить ; необходимую информацию для настройки ADSI-телефонов exten => 123,1,GetCPEID()

Смотрите также

ADSIProg(), adsi.conf, zapata.conf

Gosub()

Переходит в новую точку, сохраняя адрес возврата

Gosub( контекст, добввочныйномер, приоритет) Gosub(добввочныйномер, приоритет) Gosub(приоритет)

Переходит в заданную точку, аналогично Goto(), за исключением того что Gosub() сохраняет адрес возврата, чтобы вернуться в него позже посредством вызова Return().

Смотрите также

GosubIf(), Macro(), Goto(), Return(), StackPop()

GosubIf()

Переходит в новую точку по условию, сохраняя адрес возврата

GosubIf(условие?меткаеслиистинно:меткаеслиложно)

На основании вычисленного условия Gosub будет передавать выполнение или в меткаеслиистинно, или в меткаеслиложно. Вернуться в эту точку диалплана можно, вызвав позднее Return.

Слово метка (label) часто используется, чтобы обозначить возможность задать приоритет; добавочный номер и приоритет или контекст, добавочный номер и приоритет. Мы используем слово метка, чтобы не повторять каждый раз все возможные варианты.

; Задаем исходящий Caller*ID по умолчанию, ; если он не задан конкретным каналом.

exten => _NXXXXXX,1,GosubIf($["${CALLERID(num)}" = ""]?setcallerid,1) exten => _NXXXXXX,n,Dial(Zap/g1/${EXTEN})

exten => _1NXXNXXXXXX,1,GosubIf($[„${CALLERID(num)}" = „"]?setcallerid,1)

exten => _1NXXNXXXXXX,n,Dial(Zap/g1/${EXTEN})

exten => setcallerid,1,Set(CALLERID(num)=6152345678)

exten => setcallerid,n,Return

Смотрите также

Gosub(), Return(), MacroIf(), IF, GotoIf(),

Goto()

Направляет вызов в заданный приоритет, добавочный номер и контекст

Goto([[к.онтек.ст)]добaвочныйномер)]приоритет) Goto( именованный_приоритет)

Передает управление текущим каналом в заданный приоритет, при этом могут быть заданы (необязательно) вызываемый добавочныйномер и контекст.

Можно (необязательно) использовать приложение для перехода в именованный приоритет, заданный аргументом именованный_приоритет. Применение именованных приоритетов возможно только в рамках текущего добавочного номера.

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(123@default)
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(123@default,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()

Протоколирует специальное сообщение из диалплана

Log(уровень| сообщение)

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

DEBUG (отладка)

Сообщение отладки. Обычно не регистрируется в системе, находящейся в производственной эксплуатации.

NOTICE (извещение)

Информационное сообщение. WARNING (предупреждение)

Обстоятельство, которое может быть серьезным, но не является ошибкой.

ERROR (ошибка)

Что-то пошло совсем не так.

Смотрите также

NoOp(), Verbose()

LookupBlacklist()

Осуществляет поиск имени/номера Caller ID в черном списке

LookupBlacklist([опции])

Это приложение признано устаревшим и заменено приложением GotoIf(${BLACKLIST()}?контекст| добавочныйномер|приоритет)

Выполняет поиск номера Caller ID для активного канала в базе данных Asterisk (в семействе blacklist). Если номер Caller ID обнаружен в черном списке, Asterisk задает для переменной канала LOOKUPBL STATUS значение FOUND (найден). В противном случае для переменной задается значение NOTFOUND (не найден).

Если в параметре опции используется опция j и номер найден и если существует приоритет n + 101 (где n – текущий приоритет), канал должен будет продолжить выполнение с этого приоритета.

Чтобы пополнить черный список из CLI Asterisk, введите команду database put blacklistимя / номер.

; направляем номера черного списка в бесконечный цикл, ; в противном случае набираем номер, заданный переменной ; ${JOHN} exten => 123,1,Answer() exten => s,2,LookupBlacklist()


    Ваша оценка произведения:

Популярные книги за неделю