Читаем Asterisk™: будущее телефонии Второе издание полностью

exten => 678,n,GotoIf($[${ISNULL(${COUNT})}]?:continue)

exten => 678,n,Set(DB(test/count)=1)

exten => 678,n,Goto(1)

exten => 678,n(continue),NoOp

exten => 678,n,SayNumber(${COUNT})

exten => 678,n,Set(COUNT=$[${COUNT} + 1]

exten => 678,n,Set(DB(test/count)=${COUNT})

exten => 678,n,Goto(1)

Попробуйте этот пример. Послушайте немного, как приложение считает, и повесьте трубку. Когда вы наберете этот добавочный номер снова, счет должен быть продолжен с той цифры, на которой вы остановились. Значение, хранящееся в базе данных, будет постоянным даже при перезагрузке Asterisk.

В следующем примере логика диалплана будет организована вокруг функции BLACKLIST, которая проверяет наличие Caller ID (ID звонящего) текущего абонента в черном списке. (Черный список - это просто семейство AstDB, называемое blacklist.) Если функция BLACKLIST находит номер в черном списке, она возвращает значение 1, в противном случае возвращается 0. Эти значения в сочетании с приложением GotoIf могут использоваться для управления выполнением приложения Dial при вызове:

exten => 124,1,GotoIf($[${BLACKLIST]?blocked,1) exten => 124,n,Dial(${JOHN})

exten => blocked,1,Playback(privacy-you-are-blacklisted) exten => blocked,n,Playback(vm-goodbye) exten => blocked,n,Hangup

Чтобы добавить номер в черный список, выполните команду database put blacklist номер 1 из интерфейса командной строки Asterisk.

Полезные функции Asterisk

Теперь, рассмотрев дополнительные базовые возможности, давайте перейдем к ряду популярных функций, включенных в Asterisk.

Zapateller

Zapateller - это простое приложение Asterisk, которое воспроизводит специальный информационный тон в начале звонка. Устройства автоматического набора (обычно используемые в системах продаж по телефону) принимают этот тон за сигнал разъединения линии. Причем они не только прекратят вызов, но также пометят данный номер как не обслуживаемый, что поможет избежать всех видов телемаркетинговых звонков. Чтобы использовать эту функциональность в своем диалпла- не, вам надо просто вызвать приложение Zapateller.

Также применим необязательную опцию nocallerid, чтобы тон воспроизводился только в случае, если входящий вызов не предоставляет информации о Caller ID (ID звонящего). Вот пример использования приложения Zapateller в добавочном номере контекста [incoming]:

[incomimg]

exten => s,1,Zapateller(nocallerid) exten => s,n,Playback(enter-ext-of-person)

Парковка вызова

Еще одна удобная функция - парковка вызова. Она обеспечивает возможность перевести вызов в состояние ожидания, поставить его на «парковку», чтобы он мог быть принят на другом добавочном номере. Все параметры парковки вызовов (такие, как используемые добавочные номера, количество мест и т. д.) задаются в конфигурационном файле features.conf. Раздел [general] файла features.conf содержит четыре настройки, касающиеся парковки вызовов: parkext

Это добавочный номер для парковки. Передайте вызов на этот добавочный номер - и система сообщит, в какой парковочный слот он помещен. Добавочный номер для парковки по умолчанию - 700.

parkpos

Эта опция определяет количество парковочных слотов. Например, задав номера 701-720, вы создадите 20 парковочных слотов с нумерацией от 701 до 720.

context

Это имя контекста парковки. Чтобы иметь возможность парковать вызовы, необходимо включить этот контекст.

parkingtime

Если эта опция задана, она определяет, как долго (в секундах) вызов может оставаться на парковке. Если вызов не принят в течение заданного времени, выполняется звонок на добавочный номер, с которого вызов поступил на парковку.

После редактирования файла features.conf необходимо перезагрузить Asterisk, потому что чтение этого файла выполняется только при запуске системы. Выполнение команды reload не обеспечит чтения файла features.conf.

Также обратите внимание, что, поскольку пользователю необходимо иметь возможность переводить вызовы на добавочный номер парковки, в приложении Dial должны использоваться опции t и/или T. Итак, давайте создадим простой диалплан для демонстрации парковки вызовов: [incoming]

include => parkedcalls

exten => 103,1,Dial(SIP/Bob,,tT) exten => 104,1,Dial(SIP/Charlie,,tT)

Проиллюстрируем принцип работы парковки вызовов. Скажем, Элис звонит в систему и набирает добавочный номер 103, чтобы поговорить с Бобом. Через некоторое время Боб переводит вызов на добавочный номер 700, который сообщает ему, что звонок от Элис был припаркован в слот 701. После этого Боб звонит Чарли на добавочный номер 104 и говорит ему, что Элис ожидает по номеру 701. Чарли набирает добавочный номер 701 и разговаривает с Элис. Это простой и эффективный способ обеспечить возможность переключения вызывающих абонентов между пользователями системы.

Аргументы t и T приложения Dial нужны не для всех типов каналов. Например, многие SIP-телефоны реализуют это с помощью функциональной или обычной кнопки и обмена сигналами по протоколу SIP.

Организация конференц-связи с помощью MeetMe

Перейти на страницу:

Похожие книги

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT