Джим Меггелен - Asterisk™: будущее телефонии Второе издание
w
Режим шепота. Позволяет прослушивающему каналу «говорить» с прослушиваемым каналом. При этом ни один другой соединенный канал не сможет слышать этот разговор.
W
Закрытый режим шепота. Позволяет прослушивающему каналу «говорить» с прослушиваемым каналом без возможности слышать аудиосигнал из прослушиваемого канала.
; Прослушиваем каналы, созданные добавочным номером 125 ; в контексте lab
exten => 123,1,ExtenSpy( [email protected],w)
Смотрите также
ChanSpy()
ExternalIVR()
Обеспечивает сопряжение с внешним IVR-приложением
ExternalIVR(команда[,аргумент1[,аргумент2...]])
Создает процесс для выполнения указанной совместимой с интерфейсом ExternallVR команды и запускает генератор для канала. Список воспроизведения генератора управляет внешним приложением, которое может добавлять и удалять записи посредством простых команд, передаваемых по STDOUT. Внешнее приложение будет получать уведомления обо всех DTMF-событиях, полученных по каналу, а также уведомление о том, что абонент повесил трубку. Приложение не будет принудительно завершаться, когда абонент повесил трубку. Спецификацию интерфейса ExternalIVR можно найти в папке исходного кода Asterisk в файле doc/externalivr.txt.
; Выполняем внешнюю программу IVR, передавая аргумент
exten => 123,1,ExternalIVR(test_program,${MYARGUMENT})
Смотрите также
AGI()
FastAGI()
Удаленно выполняет совместимый с AGI сценарий
FastAGI(agl://имяхоста[:порт][/сценарий], аргументы)
Выполняет совместимую с AGI программу по сети. Это приложение очень похоже на AGI(), за исключением того что вызывает специально написанный сценарий FastAGI по сетевому соединению. Основные цели использования FastAGI - перенести требующие интенсивной работы ЦП AGI-сценарии на удаленные серверы и сократить время запуска AGI-сце- нария (программа FastAGI выполняется уже до того, как Asterisk соединится с ней).
FastAGI() пытается подключиться прямо к выполняющейся программе FastAGI, которая должна слушать соединения по заданному порту сервера, заданного параметром имяхоста. Если порт не задан, по умолчанию используется порт 4573. Если сценарий задан, он передается в программу FastAGI как переменная agi_network_script (сетевой agi-сцена- рий). Параметр аргументы будет передан в программу.
Пример сценария FastAGI можно найти в папке исходного кода Asterisk agi/fastagi-test. Он должен послужить вам хорошим образцом для написания собственных программ FastAGI.
Возвращает -1, если приложение запросило разорвать соединение, или 0 при выходе без разрыва соединения.
; соединяемся с программой fastagi-test, которая уже ; должна выполняться на локальном компьютере exten => 123,1,Answer() exten => 123,2,FastAGI(agi://localhost)
; соединяемся со сценарием FastAGI на хосте calvin ; через порт 8000 и передаем имя сценария testing ; с аргументом 12345 exten => 124,1,Answer()
exten => 124,2,FastAGI(agi://calvin:8000/testing,12345)
Смотрите также
AGI(), DeadAGI()
Festival()
Использует механизм речевого воспроизведения текста Festival для чтения текста вызывающему абоненту
Festival^^^, кнопкипрерывания])
Подключается к выполняемому локально серверу Festival, посылает ему текст и воспроизводит результирующий звуковой файл абоненту. Это приложение позволяет вызывающему абоненту нажимать определенную кнопку (заданную параметром кнопкипрерывания), чтобы немедленно прекратить воспроизведение и возвратить значение кнопкипреры- вания. Если для параметра кнопкипрерывания задано значение any (любой), Festival() передаст управление каналом добавочному номеру, введенному пользователем.
Более подробную информацию об использовании Festival с Asterisk можно найти в главе 14 и в файле README.festival, находящемся в подпапке contrib/ папки исходного кода Asterisk. Сервер Festival должен быть запущен до запуска Asterisk, и, прежде чем вызывать Festival(), необходимо ответить каналу, используя приложение Answer().
exten => 123,1,Answer()
exten => 123,2,Festival('This is sample speech from Festival',#)
Flash()
Посылает мгновенное событие сброса в магистральный канал Zap
Flash()
Посылает мгновенное событие сброса в Zap-канал. Это инструмент для тех, кто хочет перадресовывать вызовы и выполнять другие действия, которые требуют мгновенного сброса, через AGI-сценарий. В целом это довольно бесполезное приложение.
В случае успешного выполнения возвращает 0 или -1, если это не магистральный канал Zap.
exten => 123,1,Flash()
FollowMe()
Функциональность «найди меня/следуй за мной»
FollowMe(followmeid[, опции])
Это приложение пытается определить местоположение вызываемого абонента, набирая множество разных номеров последовательно или одновременно, как определено в файле followme.conf. Параметр followmeid идентифицирует раздел файла followme.conf, в котором определено, как должен быть найден этот вызываемый абонент. Параметр опции может содержать нуль или более следующих значений: s
Перед выполнением шагов функции «следуй за мной» воспроизводится сообщение о состоянии на входе.
a
Записывается имя вызывающего абонента, чтобы оно могло быть объявлено вызываемому абоненту на каждом шаге.
n
Воспроизводится сообщение о состоянии «недоступен», если все шаги для установления связи с вызываемым абонентом исчерпаны или вызываемый абонент желает быть недоступным:
exten => 123,1,Answer() exten => 123,2,FollowMe(123,san) exten => 123,3,VoiceMail(123,u)
ForkCDR()
Создает дополнительную запись CDR из текущего вызова
ForkCDR([опции])
Создает дополнительную запись параметров вызова для оставшейся части текущего вызова.
Это приложение часто используется в приложениях телефонных карточек, чтобы отличить входящий вызов (исходная CDR) от оплачиваемого разговора (вторая CDR).
Если задана опция v, все переменные CDR из текущей записи будут унаследованы новой записью CDR.
exten => 123,1,Answer()
exten => 123,2,ForkCDR(v)
exten => 123,3,Playback(tt-monkeys)
exten => 123,4,Hangup()
Смотрите также
Функция CDR, NoCDR(), ResetCDR()
GetCPEID()
Получает CPE ID от телефона, поддерживающего ADSI
GetCPEID()
Получает CPE ID и другую информацию и отображает ее в консоли Asterisk. Эта информация часто нужна, чтобы правильно настроить в файле zapata.conf операции при неподнятой трубке для телефонов, поддерживающих ADSI.
Возвращает -1 только в случае разрыва связи.
; используем этот добавочный номер, чтобы получить ; необходимую информацию для настройки ADSI-телефонов exten => 123,1,GetCPEID()
Смотрите также
ADSIProg(), adsi.conf, zapata.conf
Gosub()
Переходит в новую точку, сохраняя адрес возврата
Gosub( контекст, добввочныйномер, приоритет) Gosub(добввочныйномер, приоритет) Gosub(приоритет)
Переходит в заданную точку, аналогично Goto(), за исключением того что Gosub() сохраняет адрес возврата, чтобы вернуться в него позже посредством вызова Return().
Смотрите также
GosubIf(), Macro(), Goto(), Return(), StackPop()
GosubIf()
Переходит в новую точку по условию, сохраняя адрес возврата
GosubIf(условие?меткаеслиистинно:меткаеслиложно)
На основании вычисленного условия Gosub будет передавать выполнение или в меткаеслиистинно, или в меткаеслиложно. Вернуться в эту точку диалплана можно, вызвав позднее Return.
Слово метка (label) часто используется, чтобы обозначить возможность задать приоритет; добавочный номер и приоритет или контекст, добавочный номер и приоритет. Мы используем слово метка, чтобы не повторять каждый раз все возможные варианты.
; Задаем исходящий Caller*ID по умолчанию, ; если он не задан конкретным каналом.
exten => _NXXXXXX,1,GosubIf($["${CALLERID(num)}" = ""]?setcallerid,1) exten => _NXXXXXX,n,Dial(Zap/g1/${EXTEN})
exten => _1NXXNXXXXXX,1,GosubIf($[„${CALLERID(num)}" = „"]?setcallerid,1)
exten => _1NXXNXXXXXX,n,Dial(Zap/g1/${EXTEN})
exten => setcallerid,1,Set(CALLERID(num)=6152345678)
exten => setcallerid,n,Return
Смотрите также
Gosub(), Return(), MacroIf(), IF, GotoIf(),
Goto()
Направляет вызов в заданный приоритет, добавочный номер и контекст
Goto([[к.онтек.ст)]добaвочныйномер)]приоритет) Goto( именованный_приоритет)
Передает управление текущим каналом в заданный приоритет, при этом могут быть заданы (необязательно) вызываемый добавочныйномер и контекст.