; перенаправляем вызовы систем продаж по телефону на этот
; добавочный номер, чтобы занять их
exten => 123,1,Answer()
exten => 123,n,Playback(tt-allbusy)
Смотрите также
SetMusicOnHold(), WaitMusicOnHold(), MUSICCLASS
NBScat()
NBScat()
Использует программу nbscat8k для прослушивания локального потока NBS (Network Broadcast Sound - широковещательная сетевая передача звука). (Более подробную информацию можно найти в модуле nbs сервера Subversion компании Digium.) Вызывающий абонент может прекратить воспроизведение, нажав любую кнопку. При разрыве соединения возвращает -1. exten => 123,1,Answer()
NoCDR()
NoCDR()
Отключает запись CDR для текущего звонка.
; не протоколировать звонки на 555-1212
exten => 5551212,1,Answer()
exten => 5551212,3,Dial(Zap/4/5551212)
Смотрите также
AppendCDRUserField(), ForkCDR(), SetCDRUserField()
NoOp()
NoOp(
Ничего не делает, это просто заполнитель. Данное приложение часто используется как инструмент отладки. Если уровень детальности сообщений ядра Asterisk равен 3 или более, Asterisk обрабатывает и выводит каждую строку диалплана перед ее выполнением. Это означает, что любые аргументы, переданные в приложение NoOp() (в параметре
Нет необходимости заключать текст в кавычки. Если кавычки помещены в круглые скобки, они будут выведены в консоли.
Когда использовать 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() людям отвечать вызывающему абоненту.
q
Скрытый режим. Не воспроизводить звуковой сигнал вызывающему абоненту.
r
Записывать сообщение. Больше информации можно найти в описании опции r для команды MeetMe.
Смотрите также
MeetMe()
Park()
Park()
Выполняет парковку текущего вызова (обычно в сочетании с контролируемой переадресацией для определения номера парковочного слота). Это приложение всегда регистрируется системой внутренне и не требует явного введения в диалплан, хотя необходимо включить контекст parkedcalls. Настройки парковки задаются в файле features.conf. ; явно паркуем вызывающего абонента include => parkedcalls exten => 123,1,Answer()
Смотрите также