Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otchet.doc
Скачиваний:
17
Добавлен:
18.03.2015
Размер:
2.48 Mб
Скачать

Хід заняття

1. ОРГАНІЗАЦІЙНА ЧАСТИНА

- привітання викладача зі студентами;

- виявлення відсутніх;

- перевірка підготовленості групи до заняття.

2. МОТИВАЦІЯ ТА СТИМУЛЮВАННЯ НАВЧАЛЬНОЇ ДІЯЛЬНОСТІ СТУДЕНТІВ

- повідомлення теми, мети та завдань.

- мотивація вивчення теми (бесіда, що передбачає з’ясування значущості теми і її професійну спрямованість).

- повідомлення плану заняття.

3. ВИКОНАННЯ ЗАВДАННЬ

Создание интерактивногодиалплана

Созданный в предыдущей работе диалплан был статическим; он всегда выполняет одни и те же действия для всех вызовов. Теперь мы собираемся добавить некоторую логику в диалплан, чтобы он осуществлял разные действия на основании ввода пользователя. Для этого необходимо рассмотреть еще некоторые приложения.

Приложения Background(), WaitExten() и Goto()

Один из самых важных ключей к построению интерактивных диалплановAsterisk - приложение BackgroundQ (Фон). Как и Playback(), это приложение воспроизводитзаписанный звуковой файл. Однако, в отличие от Playback(), если пользователь нажимает кнопку (или последовательность кнопок) на клавиатуре телефона, оно прерывает воспроизведение и переходит к добавочному номеру соответственно нажатым цифрам. Например, если абонент нажмет кнопку 5, Asterisk прекратит воспроизводить звуковое сообщение и передаст управление вызовом первому приоритету добавочного номера 5.

Чаще всего приложение Background() используется для создания голосовых меню (которые часто называют автоответчиками или интерактивными секретарями). Многие компании используют голосовые меню для направления абонентов на соответствующий добавочный номер, таким образом освобождая своих секретарей от необходимости отвечать на все звонки.

Синтаксис Background() аналогичен синтаксису Playback():

exten => 123,1,Answer()

exten => 123,n,Background(main-menu)

В более ранних версиях Asterisk, если приложение Background() завершало воспроизведение звукового сообщения и в текущем добавочном номере больше не было приоритетов, Asterisk ничего не делала и ожидала ввода абонента. Такое поведение больше не является для Asterisk принятым по умолчанию. Если требуется, чтобы Asterisk ожидала ввода абонента после завершения воспроизведения звукового сообщения, можно вызвать приложение WaitExten() (Ожидание добавочного номера). Приложение WaitExten() ожидает от абонента набора телефонного номера и часто вызывается сразу после приложения Background(), как в данном фрагменте диалплана:

exten => 123,1,Answer()

exten => 123,n,Background(main-menu)

exten => 123,n,WaitExten()

Если требуется, чтобы приложение WaitExten() ожидало ответа в течение определенного времени (вместо использования времени ожидания по умолчанию), просто укажите число, соответствующее необходимому количеству секунд, в качестве первого аргумента в WaitExten():

exten => 123,n,WaitExten(5)

И Background(), и WaitExten() позволяют абоненту производить набор номера. После этого Asterisk пытается найти в текущем контексте добавочный номер, соответствующий введенным абонентом цифрам. Если Asterisk находит однозначное соответствие, она направляет вызов на этот добавочный номер. Продемонстрируем это, добавив несколько строк в наш пример:

exten => 123,1,Answer()

exten => 123,n,Background(main-menu)

exten => 123,n,WaitExten()

exten => 2,1,Playback(digits/2)

exten => 3,1,Playback(digits/3)

exten => 4,1,Playback(digits/4)

Если вызвать добавочный номер 123 из примера выше, он воспроизведет звуковое сообщение с фразой «mainmenu» (главное меню) и после этого будет ожидать ввода цифр 2, 3 или 4. Если нажать одну из этих цифр, Asterisk воспроизведет ее для вас. Также вы обнаружите, что, если ввести другую цифру (например, 5), Asterisk не обеспечит ожидаемого результата.

Также возможна ситуация, когда Asterisk обнаружит неоднозначное соответствие. Это можно легко продемонстрировать, введя в предыдущий пример добавочный номер под именем 1:

exten => 123,1,Answer()

exten => 123,n,Background(main-menu)

exten => 123,n,WaitExten()

exten => 1,1,Playback(digits/1)

exten => 2,1,Playback(digits/2)

exten => 3,1,Playback(digits/3)

exten => 4,1,Playback(digits/4)

Наберите добавочный номер 123 и затем по подсказке главного меню введите 1. Почему Asterisk сразу же не воспроизводит этот номер? Потому, что цифра 1 неоднозначна; Asterisk не понимает, какой добавочный номер вызывается, 1 или 123. Он ожидает несколько секунд ввода другой цифры (например, 2 для вызова добавочного номера 123). Если набора никаких других цифр не последовало, по завершении времени ожидания Asterisk направляет вызов на добавочный номер 1. Прежде чем двигаться дальше, посмотрим, что было сделано на данный момент. Вызвав нашдиалплан, абоненты услышат приветствие. Если они нажмут 1, то услышат номер 1, если 2 - то номер 2 и т. д. Для начала это неплохо, но давайте это все немного усовершенствуем. С помощью приложения Goto() (Перейти к) заставим диалплан повторять приветствие после воспроизведения номера.

Как следует из его имени, приложение Goto() используется для перенаправления вызова в другую часть диалплана. Синтаксис Goto() требует передачи в него в качестве аргументов целевого контекста, добавочного номера и приоритета:

exten => 123,n,Goto(контекст,добавочныйномер,приоритет)

Теперь давайте применим приложение Goto() в нашемдиалплане:

[incoming]

exten => 123,1,Answer()

exten => 123,n,Background(main-menu)

exten => 1,1,Playback(digits/1)

exten => 1,n,Goto(incoming,123,1)

exten => 2,1,Playback(digits/2)

exten => 2,n,Goto(incoming,123,1)

Две новые строки (выделенные курсивом) обеспечат возвращение управления над вызовом добавочному номеру 123 после воспроизведения выбранного номера.

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

В данном примере были переданы все три аргумента для наглядности, но, если бы мы задали только добавочный номер и приоритет, результат был бы аналогичным.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]