Asterisk™: будущее телефонии Второе издание
Шрифт:
Нет необходимости заключать текст в кавычки. Если кавычки помещены в круглые скобки, они будут выведены в консоли.
Когда использовать 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. Если аргумент имяочереди не задан, интерфейс блокируется во всех очередях, участником которых он является.