Asterisk™: будущее телефонии Второе издание - Меггелен Джим Ван
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)