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

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

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


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


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

Жанр:

   

ОС и Сети


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

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

; если номер Caller ID обнаружен в черном списке, переходим к метке goaway exten => 123,n,GotoIf($["${LOOKUPBLSTATUS}" = "FOUND"]?goaway) ; в противном случае продолжаем и звоним Джону exten => 123,n,Dial(${JOHN}) exten => 123,n(goaway),Busy(5) exten => 123,n,Hangup()

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

BLACKLIST

LookupCIDName()

Выполняет поиск имени Caller ID в AstDB

LookupCIDName()

Это приложение было признано устаревшим и заменено приложением Set(CALLERID(имя)=${DB(cidname/${CALLERID(номер)})}).

Использует номер Caller ID активного канала для извлечения имени Caller ID из AstDB (семейство cidname). Это приложение не делает ничего, если по каналу не получен Caller ID. Это полезно, если вы не подписаны на доставку имени Caller ID или хотите менять имена Caller ID для некоторых входящих вызовов.

; ищем информацию Caller ID в AstDB и передаем ее ; на телефон Джейн exten => 123,1,Answer()

exten => 123,2,LookupCIDName() exten => 123,3,Dial(SIP/Jane)

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

DB

Macro()

Вызывает заранее определенный макрос диалплана

Macro( имямакроса, arg1, arg2...)

Выполняет макрос, определенный в контексте macro- имямакроса, переходя в добавочный номер s этого контекста и выполняя каждый шаг. Возвращается после того, как все шаги были выполнены. Вызывающий добавочный номер, контекст и приоритет хранятся в переменных ${MACRO_EXTEN}, ${MACRO_CONTEXT} и ${MACRO_PRIORITY} соответственно. Аргументы arg1, arg2 и т. д. становятся в контексте макроса переменными ${ARG1}, ${ARG2} и т. д.

Macro() завершается аварийно, если на любом из шагов макроса возник сбой или выявлен разрыв соединения. Если по завершении работы макроса задана переменная ${MACRO_OFFSET}, это приложение попытается продолжить выполнение с приоритета MACRO_OFFSET + n + 1, если таковой существует, или с n + 1 в противном случае. (В обоих случаях n означает текущий приоритет.)

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

; определяем макрос для обратного счета

; от заданного значения

[macro-countdown]

exten => s,1,Set(COUNT=${ARG1})

exten => s,2,While($[ ${COUNT} > 0])

exten => s,3,SayNumber(${COUNT})

exten => s,4,Set(COUNT=$[ ${COUNT} – 1 ])

exten => s,5,EndWhile()

; вызываем наш макрос с двумя разными значениями [example]

exten => 123,1,Macro(countdown,10) exten => 124,1,Macro(countdown,5)

На время выполнения макрос становится текущим контекстом. Это означает, что в случае разрыва соединения, например, поиск добавочного номера h будет выполняться в макросе, а не в контексте, из которого этот макрос был вызван. Поэтому в макросе должны быть обязательно описаны все соответствующие добавочные номера (в AEL можно использовать catch).

Из-за способа реализации Macro() (оно выполняет содержащиеся в нем приоритеты через вспомогательный механизм) и выделения фиксированного стека памяти на каждый поток макрос ограничен семью уровнями вложенности (макрос, вызывающий макрос, вызывающий макрос и т. д.). Приложения, интенсивно использующие стек, в глубоко вложенном макросе могут привести к сбою в работе Asterisk раньше достижения этого предельного уровня вложенности.

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

MacroExit(), Goto(), Gosub(), главу 6

MacroExclusive()

Выполняет макрос исключительно для одного канала

MacroExclusive(имямакроса[,аргументы])

Выполняет заданный макрос, гарантируя, что одновременно этот макрос выполняется только одним каналом. Если другой канал уже выполняет этот макрос, MacroExclusive() приостановит выполнение данного канала до тех пор, пока тот канал не выйдет из макроса.

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

Macro()

MacroExit()

Явный выход из макроса

MacroExit()

Выполняет явный выход из макроса. Обычно Macro() автоматически завершается, выполнив все приоритеты. MacroExit() обеспечивает возможность завершить макрос раньше.

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

Macro()

MacroIf()

Вызывает заранее определенный макрос по условию

MacroIf(условие?макросеслиистинно, аргументы:макросеслиложно, аргументы)

Вычисляет условие, а затем выполняет макросеслиистинно или макросеслиложно. Во всем остальном, кроме вычисления условия, MacroIf() ведет себя идентично Macro().

; определяем макрос для обратного счета ; от заданного значения [macro-countdown]

exten => s,1,Set(COUNT=${ARG1})

exten => s,2,While($[ ${COUNT} > 0])

exten => s,3,SayNumber(${COUNT})

exten => s,4,Set(COUNT=$[ ${COUNT} – 1])

exten => s,5,EndWhile()

; определяем макрос для прямого счета

; от заданного значения

[macro-countup]

exten => s,1,Set(COUNT=1)

exten => s,2,While($[ ${COUNT} < ${ARG1}])

exten => s,3,SayNumber(${COUNT})

exten => s,4,Set(COUNT=$[ ${COUNT} + 1])

exten => s,5,EndWhile()

; вызываем наш макрос с двумя разными значениями [example]

exten => 123,1,MacroIf($[ ${foo} < 5 ]?countup,${foo}:countdown,${foo})

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

GotoIf(), GosubIf(), IF, глава 6

MailboxExists()

Выполняет переходы по условию,

если заданный ящик голосовой почты существует

MailboxExists(почтовыйящик[@контекст[, опции]])

Проверяет, существует ли в системе голосовой почты Asterisk почтовый ящик, определенный аргументом почтовыйящик. Если почтовый ящик находится не в контексте голосовой почты default, можно передать контекст для голосовой почты.

Это приложение задает переменную канала VMBOXEXISTSSTATUS. Если почтовый ящик существует, ей будет задано значение SUCCESS (успех). В противном случае она получит значение FAILED (неудача). Если в качестве параметра опции передается опция j, в случае существования почтового ящика, указанного аргументом почтовыйящик, приложение перейдет к приоритету n + 101 (где n – текущий приоритет).

exten => 123,1,Answer()

exten => 123,n,Set(MYMAILBOX=123@default)

exten => 123,n,MailboxExists(${MYMAILBOX})

exten => 123,n,GotoIf($["${VMBOXEXISTSSTATUS}" = "SUCCESS"]?exists)

exten => 123,n,Playback(im-sorry)

exten => 123,n,Hangup()

exten => 123,n(exists),Voicemail(u123)

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

HasVoicemail(), HasNewVoicemail()MeetMe()

Добавляет звонящего в конференцию MeetMe

MeetMe([номерконференции[, опции[, ПИН]]])

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

Если передается аргумент ПИН, звонящий для входа в конференцию должен ввести ПИН-код.

Строка опции может содержать нуль или более символов из следующего списка:

a

Задается режим администрирования.

A

Задается маркированный режим.

b

Выполняется AGI-сценарий, заданный в переменной ${MEETME_AGI_ BACKGROUND}; по умолчанию это conf-background.agi. (Примечание: это не работает для ^-Zap-каналов в той же конференции.)

c

При входе в конференцию нового пользователя анонсируется количество пользователей.

d

Динамически добавляет пользователя в конференцию.

D

Динамически добавляет пользователя в конференцию, предлагая ввести ПИН-код.

e

Выбирается пустая конференция.

E

Выбирается пустая конференция, для входа в которую не требуется вводить ПИН-код.

F

DTMF-коды передаются через конференцию другим участникам. DTMF-коды, используемые для активации функций конференции, передаваться не будут.

Анонсируется вход/выход пользователя с суммарной информацией.

Анонсируется вход/выход пользователя без суммарной информации.

Устанавливается режим «только для прослушивания» (можно только слушать, не говорить).

Участник вводится в конференцию с изначально выключенным микрофоном.

Если в конференции всего один участник, активируется музыка во время ожидания.

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

Пользователь может выйти из конференции, нажав кнопку #.

Всегда предлагается ввести ПИН-код, даже если он задан.

Задается скрытый режим. В скрытом режиме Asterisk не подает звуковых сигналов при входе или выходе участников конференции.

Конференция записывается (как ${MEETME_RECORDINGFILE}, используя формат ${MEETME_RECORDINGFORMAT}). Имя файла по умолчанию – meetme-conf-rec-${CONFNO}-{UNIQUEID}, а формат по умолчанию – .wav.

При получении * предоставляется меню (меню пользователя или администратора в зависимости от того, отмечен ли пользователь как администратор).

t

Устанавливается режим «только для разговора» (можно только говорить, но не слушать).

T

Устанавливается выявление говорящего. Asterisk будет передавать в интерфейс Manager события, идентифицирующие канал говорящего. Говорящий также будет обозначен в выводе CLI-команды

meetme list.

w[(количествосекунд)]

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

Конференция закрывается, когда ее покидает последний маркированный пользователь.

X

Позволяет пользователю выходить из конференции, вводя действительный одноразрядный добавочный номер (задается посредством переменной ${MEETME_EXIT_CONTEXT}) или добавочный номер в текущем контексте, если эта переменная не определена.

1

Не воспроизводить начальное сообщение при входе в конференцию первого участника.

exten => 123,1,Answer()

; добавляем звонящего в конференцию номер 501 с ПИН-кодом 1234 exten => 123,2,MeetMe(501,DpM,1234)

Для обеспечения работы конференц-связи MeetMe должен быть установлен подходящий интерфейс синхронизации Zaptel.

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

MeetMeAdmin(), MeetMeCount()

MeetMeAdmin()

Осуществляет администрирование конференции MeetMe

MeetMeAdmin(номерконференции,команда[, пользователь])

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

e

Исключить пользователя, присоединившегося к конференции последним.

Исключить из конференции указанного пользователя.

K

Исключить из конференции всех пользователей.

Снять блокировку конференции.

Блокировать конференцию.

Включить микрофон заданного пользователя.

Выключить микрофон заданного пользователя.

Включить микрофоны всех участников конференции.

Выключить микрофоны всех участников конференции, не являющихся администраторами.

Сбросить все настройки громкости для заданного пользователя. Сбросить все настройки громкости для всех участников. Уменьшить громкость разговора для всей конференции.

S

Увеличить громкость разговора для всей конференции. Уменьшить громкость разговора для заданного пользователя. Увеличить громкость разговора для заданного пользователя. Уменьшить громкость прослушивания для заданного пользователя.

U

Увеличить громкость прослушивания для заданного пользователя.

Уменьшить громкость прослушивания для всей конференции.

Увеличить громкость прослушивания для всей конференции.

; выключить звук конференции 501 exten => 123,1,MeetMeAdmin(501,N)

; исключить пользователя 1234 из конференции 501 exten => 124,1,MeetMeAdmin(501,k,1234)

Список участников конференции можно получить с помощью CLI-команды Asterisk meetme list или используя интерфейс Asterisk Manager.

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

MeetMe(), MeetMeCount()

MeetMeCount()

Подсчитывает количество пользователей,

принимающих участие в конференции MeetMe

MeetMeCount(номерк.онференции[, переменная])

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

; подсчитываем количество пользователей, принимающих ; участие в конференции 501, и присваиваем это число ; переменной ${COUNT} exten => 123,1,MeetMeCount(501,C0UNT)

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

MeetMe(), MeetMeAdmin()

Milliwatt()

Генерирует тональный сигнал частотой 1000 Гц

Milliwatt()

Это приложение генерирует постоянный тональный сигнал частотой 1000 Гц с уровнем 0 дБм (plaw). Это приложение часто используется для тестирования звуковых характеристик конкретного канала.

; генерируем тональный сигнал частотой 1000Гц exten => 123,1,Milliwatt()

Пожалуйста, обратите внимание, что существует сервис, ис– I пользуемый поставщиками услуг связи для тестирования потерь в линиях и получивший в отрасли название «1000 циклов» . Суть в том, что частота тонального сигнала, передаваемого оборудованием поставщика услуг, на самом деле составляет 1004 Гц, поэтому, если необходимо протестировать потери в аналоговой линии из Asterisk, Milliwatt() может не обеспечить точных результатов.

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

Echo(), Playtones()

MixMonitor()

Записывает разговор по каналу в фоновом режиме, синхронно объединяя оба направления разговора

MixMonitor(имяфайла.ext, опции, команда)

Записывает аудиосигнал в текущем канале в заданный файл. Если в качестве аргумента имяфайла задан полный путь, MixMonitor() использует этот путь; в противном случае создает файл в заданной в asterisk.conf папке для записи разговоров.

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

a

Разговор дописывается в конец файла, перезаписи файла при этом не происходит.

b

Разговор сохраняется, только если канал соединен.

Сюда не относятся конференции или звуковые файлы, воспроизводимые для каждой соединенной стороны.

v(x)

Громкость прослушивания меняется в x раз (диапазон от -4 до 4).

V(x)

Громкость речи меняется в x раз (диапазон от -4 до 4).

W(x)

Громкость прослушивания и речи меняется в x раз (диапазон от -4 до 4).

; Записываем разговор по каналу

exten => 123,1,MixMonitor(/var/lib/asterisk/sounds/123.wav)

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

Monitor(), StopMixMonitor(), PauseMonitor(), UnpauseMonitor()

Monitor()

Отслеживает (записывает) разговор по текущему каналу

Monitor([формат_файла[:базовыйиг1][, базовое_имяфайла][, опции]])

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

StopMonitor().

Monitor() принимает следующие аргументы:

формат_файла

Определяет формат файла. Если не задан, по умолчанию используется wav.

базовое_имяфайла

Если задан, меняет используемое имя файла на заданное.

опции

Может быть задана одна опция из двух:

m

Когда запись закончится, выполнить слияние двух файлов, содержащих список приоритетов, в один и удалить их. Если задана переменная ${MONITOR_EXEC}, вместо soxmix будет выполнено указанное в ней приложение, и исходные файлы не будут удалены автоматически. soxmix (или ${MONITOR_EXEC}) принимает три аргумента: два файла приоритетов и имя создаваемого объединенного файла, которое аналогично именам исходных файлов, но без указателей in/out. Если задана переменная ${MONITOR_EXEC_ARGS}, в качестве дополнительных аргументов в ${MONITOR_EXEC} будет передано содержимое. И ${MONITOR_EXEC}, и флаг m можно задать из интерфейса администратора.

b

Не начинать запись, пока канал не будет соединен с другим каналом.

exten => 123,1,Answer() ; записываем разговор по текущему каналу ; и объединяем звуковые каналы в конце записи exten => 123,2,Monitor(wav,monitor_test,mb) exten => 123,3,SayDigits(12345678901234567890) exten => 123,4,StopMonitor()

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

ChangeMonitor(), StopMonitor(), MixMonitor(), PauseMonitor(), UnpauseMonitor()

MorseCode()

Воспроизводит код Морзе

MorseCode(строка)

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

MORSEDITLEN

Длина ТОЧКИ в миллисекундах. Значение по умолчанию – 80 мс.

Длительность всех остальных тональных сигналов и пауз определена в международном стандарте кода Морзе относительно длительности ТОЧКИ, и поэтому все остальные длительности будут настраиваться соответствующим образом.

MORSETONE

Частота, в герцах (Гц), которая будет использоваться. Значение по умолчанию – 800 Гц.

; тире-точка-тире точка-точка точка-точка-точка-точка-тире

; тире-точка-тире точка-точка-тире точка-тире

exten => 123,1,Answer()

exten => 123,2,MorseCode(KI4KUA)

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

SayAlpha(), SayPhonetic()

MP3Player()

Воспроизводит MP3-фaйл или поток

MP3Player(местоположение)

Использует программу mpg123 для воспроизведения вызывающему абоненту файла из заданного местоположения. В качестве местоположения может быть задано или имя файла, или действительный URL. Вызывающий абонент может прекратить воспроизведение, нажав любую кнопку.

Чтобы это приложение работало правильно, должна быть установлена соответствующая версия mpg123. В настоящее время Asterisk лучше всего работает с mpg123-0.59r. Другие версии могут обеспечить результаты, не вполне соответствующие тому, что требуется.

exten => 123,1,Answer()

exten => 123,2,MP3Player(test.mp3)

exten => 123,1,Answer()

exten => 123,2,MP3Player(http://example.com/test.mp3)

MusicOnHold()

Неопределенно долго воспроизводит музыку во время ожидания

MusicOnHold(класс)

Воспроизводит музыку во время ожидания, заданную аргументом класс, соответственно настройкам файла musiconhold.conf. Если аргумент опущен, будет использоваться музыка во время ожидания по умолчанию. Задать класс музыки по умолчанию для канала можно с помощью функции диалплана MUSICCLASS.

; перенаправляем вызовы систем продаж по телефону на этот

; добавочный номер, чтобы занять их

exten => 123,1,Answer()

exten => 123,n,Playback(tt-allbusy)

exten => 123,n,MusicOnHold(default)

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

SetMusicOnHold(), WaitMusicOnHold(), MUSICCLASS

NBScat()

Воспроизводит локальный NBS -поток

NBScat()

Использует программу nbscat8k для прослушивания локального потока NBS (Network Broadcast Sound – широковещательная сетевая передача звука). (Более подробную информацию можно найти в модуле nbs сервера Subversion компании Digium.) Вызывающий абонент может прекратить воспроизведение, нажав любую кнопку. При разрыве соединения возвращает -1. exten => 123,1,Answer() exten => 123,2,NBScat()

NoCDR()

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

NoCDR()

Отключает запись CDR для текущего звонка.

; не протоколировать звонки на 555-1212

exten => 5551212,1,Answer()

exten => 5551212,2,NoCDR()

exten => 5551212,3,Dial(Zap/4/5551212)

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

AppendCDRUserField(), ForkCDR(), SetCDRUserField()

NoOp()

Не производит никаких действий

NoOp(текст)

Ничего не делает, это просто заполнитель. Данное приложение часто используется как инструмент отладки. Если уровень детальности сообщений ядра Asterisk равен 3 или более, Asterisk обрабатывает и выводит каждую строку диалплана перед ее выполнением. Это означает, что любые аргументы, переданные в приложение NoOp() (в параметре текст), выводятся в консоли. Опытный администратор Asterisk может использовать вывод консоли для отладки диалплана. exten => 123,1,NoOp(CallerID is ${CALLERID})

Нет необходимости заключать текст в кавычки. Если кавычки помещены в круглые скобки, они будут выведены в консоли.

Когда использовать NoOp() и Verbose()

Разница между Verbose() и NoOp() невелика. Приведем здесь некоторые соображения по поводу того, как разобраться, в какой ситуации следует использовать эти приложения. Приложение Verbose() пригодится, если надо что-то вывести в консоль. Используя команду set verbose (с указанием требуемого уровня детальности, от 0 до 4), можно настроить вывод так, чтобы на экране отображались не все операции системы, а лишь те, которые имеют такой же или меньший уровень детальности. (На самом деле можно задать любую детальность. Команда set verbose 999 будет прекрасно работать, но мы не нашли вывода с уровнем детальности выше, чем 4, поэтому на данный момент задавать детальность больше 4 просто не имеет смысла.) Это означает, что можно выводить всевозможную информацию, имеющую отношение к тестируемому разделу кода, без необходимости просматривать другие сообщения системы. Если записать в диалплане следующее:

exten => _X.,n,Verbose(2, ${SOME_VAR}) можно будет в CLI задать детальность 2 или меньше (core set verbose 2) и просматривать вывод различных вызовов Verbose(), но очень мало другой информации.

Подробнее об использовании Verbose() можно будет прочитать в данном приложении ниже, в посвященном ему разделе. При-

ложение NoOp() лучше всего использовать как заполнитель. Например, если в диалплане имеется Goto() с использованием метки приоритета, NoOp() можно применять как точку перехода из этого приложения. Например,

exten => _X.,n(call_forward),NoOp()

является превосходным маркером для указания перехода в ди– алплане в определенную точку. Из этой точки можно продолжать выполнение любой логики, которую требуется применить к этой части добавочного номера (судя по метке, речь идет о пересылке вызова). NoOp() применяется, когда вы не знаете, какие действия придется выполнять за этой меткой, и чтобы гарантированно не менять в коде саму метку. Оно никогда не будет делать ничего другого, кроме как предоставлять точку перехода для Goto(). Поэтому NoOp() можно помещать куда угодно и быть увереннным, что это не станет причиной какого-либо неожиданного поведения.

Если вы ничего не поняли, виною наша неспособность правильно описать ситуацию. Поэкспериментируйте с Verbose() и NoOp() в своем диалплане (их можно использовать где угодно) – и вы быстро разберетесь в том, как они могут помочь (особенно если вы, как и мы, допускаете много синтаксических ошибок).

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

Verbose(), Log()

Page()

Открывает одностороннюю аудиосвязь с несколькими телефонами

Page(технология/канал1[&технология/канал2]&[...][&технология/каналN][опции])

Размещает исходящие вызовы абонентов в каналах, заданных аргументами технология/канал, и вводит их в конференцию как участников с выключенными микрофонами. Исходный вызывающий абонент помещается в эту конференцию как единственный участник, который может говорить. Когда он покидает конференцию, она уничтожается. Могут быть заданы следующие опции: d

Двусторонняя аудиосвязь. Обеспечивает возможность перечисленным в приложении Page() людям отвечать вызывающему абоненту.

q

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

r

Записывать сообщение. Больше информации можно найти в описании опции r для команды MeetMe.

exten => 123,1,Page(SIP/101&SIP/102&IAX2/iaxy123)

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

MeetMe()

Park()

Выполняет парковку текущего вызова

Park()

Выполняет парковку текущего вызова (обычно в сочетании с контролируемой переадресацией для определения номера парковочного слота). Это приложение всегда регистрируется системой внутренне и не требует явного введения в диалплан, хотя необходимо включить контекст parkedcalls. Настройки парковки задаются в файле features.conf. ; явно паркуем вызывающего абонента include => parkedcalls exten => 123,1,Answer() exten => 123,n,Park()

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

ParkAndAnnounce(), ParkedCall()

ParkAndAnnounce()

Выполняет парковку текущего вызова и объявляет о вызове по

заданному каналу

PaгkAndAnnounce(шаблон, времяожидания, к.анал[, котекст_возврата])

Выполняет парковку текущего вызова в парковочный слот и объявляет о вызове по заданному каналу. Шаблон – это разделенный двоеточиями список файлов, которые должны быть воспроизведены; слово PARKED (припаркован) заменяется номером слота парковки вызова. Аргумент времяожидания – это время в секундах, через которое вызов возвратится в контекст_возврата. Аргумент канал определяет канал, на который необходимо позвонить, чтобы сделать объявление. Console/dsp вызывает консоль. контекст_возврата – это метка в стиле Goto() для возвращения вызова по истечении времени ожидания, которой по умолчанию является приоритет n + 1 (где n – текущий приоритет) в контексте контекст_возврата.

include => parkedcalls exten => 123,1,Answer()

exten => 123,2,ParkAndAnnounce(vm-youhave:a:pbx-transfer:at:vm-extension: PARKED,120,Console/dsp)

exten => 123,3,Playback(vm-nobodyavail) exten => 123,4,Playback(vm-goodbye) exten => 123,5,Hangup()

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

Park(), ParkedCall()

ParkedCall()

Отвечает на припаркованный вызов

ParkedCall(парковочныйслот)

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

; ответить на вызов, припаркованный ; в парковочном слоте 701 exten => 123,1,Answer() exten => 123,2,ParkedCall(701)

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

Park(), ParkAndAnnounce()

PauseMonitor()

Приостанавливает запись разговора по каналу

PauseMonitor()

Временно приостанавливает отслеживание (запись) текущего канала

exten => 123,1,Answer()

exten => 123,n,Monitor(wav,monitor_test)

exten => 123,n,Playback(demo-congrats)

; временно приостанавливаем запись, пока собираем секретную информацию exten => 123,n,PauseMonitor() exten => 123,n,Read(NEWPASS,vm-newpassword) exten => 123,n,SayDigits(${NEWPASS}) exten => 123,n,UnpauseMonitor() exten => 123,n,Dial(${JOHN})

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

Monitor(),StopMonitor(), UnpauseMonitor()

PauseQueueMember()

Временно блокирует участника обработки очереди входящих вызовов

PauseQueueMember([имяочереди],интерфейс[, опции])

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

Это приложение по завершении выполнения задает для переменной канала PQMSTATUS значение PAUSED (приостановлен) или NOTFOUND (не найден). Если для параметра опции задано значение j и данного интерфейса нет в указанной очереди или если очередь не задана и интерфейса нет ни в одной очереди, выполнение перейдет в приоритет n + 101 (где n – текущий приоритет), если таковой существует. exten => 123,1,PauseQueueMember(,SIP/300) exten => 124,1,UnpauseQueueMember(,SIP/300)

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

UnpauseQueueMember()

Pickup()

Отвечает на звонок с другого телефона

Pickup(добавочныйномер[@контекст][&добавочныйномер2[@контекст2][...])

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

Существует также специальный контекст PICKUPMARK. Если он задан, Pickup будет находить первый вызывающий канал, для которого значение переменной канала PICKUPMARK соответствует значению аргумента

добавочныйномер.

Playback()

Воспроизводит заданный аудиофайл вызывающему абоненту

Playback(имяфайла[&имяфайла2...][, опции])

Воспроизводит заданный посредством аргумента имяфайла файл вызывающему абоненту. Значение имяфайла не должно включать расширения файла, поскольку Asterisk автоматически выберет аудиофайл, преобразование которого пройдет с минимальными затратами. Также может быть включено нуль или более опций. Если задана опция skip (пропустить), сообщение воспроизводится только для канала, находящегося в состоянии «отвечено» (то есть если установлено соединение). При заданной опции skip приложение немедленно возвращается, если канал не соединен. В противном случае, если не задана опция noanswer, канал будет переведен в состояние «отвечено» и после этого будет воспроизведен аудиофайл. (Не все каналы поддерживают воспроизведение сообщений, когда соединение еще не установлено.) Если в качестве одной из опций передана j и указанного файла не существует, это приложение переходит в приоритет n + 101 (где n – текущий приоритет), если таковой существует. exten => 123,1,Answer() exten => 123,n,Playback(tt-weasels)

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

Background(), ControlPlayback()

Playtones()

Воспроизводит набор тонов

Playtones(набортонов)

Воспроизводит набор тонов. После начала воспроизведения тонов выполнение немедленно продолжается со следующего шага. Аргумент набортонов – это или имя тона, определенное в конфигурационном файле indications.conf, или заданный список частот и длительностей. Описание спецификации набора тонов приведено в indications.conf.

Для прекращения воспроизведения тонов используется приложение

StopPlaytones().

; воспроизводить сигнал "занято" в течение двух секунд,

; a затем еще две секунды – сигнал перегрузки линии

exten => 123,1,Playtones(busy)

exten => 123,2,Wait(2)

exten => 123,3,StopPlaytones()

exten => 123,4,Playtones(congestion)

exten => 123,5,Wait(2)

exten => 123,6,StopPlaytones()

exten => 123,7,Goto(1)

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

StopPlaytones(), indications.conf, Busy(), Congestion(), Progress(), Ringing()

PrivacyManager()

Требует от вызывающего абонента ввода номера телефона, если не

получена информация Caller ID

PrivacyManager([maxretries[,minlength[, опции]]])

Если Caller ID (ID звонящего) не получен, это приложение отвечает каналу и просит вызывающего абонента ввести его номер телефона. По умолчанию абоненту дается три попытки.

PrivacyManager() задает для переменной канала PRIVACYMGRSTATUS значение SUCCESS или FAILURE. Если Caller ID поступает по каналу, PrivacyManager() не выполняет никаких действий.

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

Конфигурационный файл privacy.conf меняет функциональность приложения PrivacyManger(). Он содержит следующие две строки: maxretries (максимум попыток)

Задает максимальное число попыток, которое может сделать вызывающий абонент для ввода номера Caller ID (по умолчанию 3).

minlength (минимальная длина)

Задает минимально допустимое количество символов во вводимом номере Caller ID (по умолчанию 10).

Настройки maxretries и minlength также могут быть переданы в приложение в качестве параметров. Параметры, передаваемые в приложение, переопределяют любые настройки в файле privacy.conf.


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

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