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