- •Основы технологий ip телефонии
- •7.91501, 8.915.01 – “Компьютерные системы и сети”
- •7.91502, 8.91502 - “Системное программирование”
- •Введение
- •Лабораторная работа №1 Пользовательское оборудование ip-телефонии. Настройка и использование
- •Задание на лабораторную работу
- •Краткие теоретические сведения
- •Введение в ip-телефонию
- •Принципы пакетной передачи речи
- •Сигнальные протоколы ip-телефонии
- •Виды соединений в сети ip-телефонии
- •Современные требования к ip-телефонии
- •Основные преимущества ip-телефонии
- •Порядок выполнения работы
- •Работа с ata.
- •Работа с ip-телефоном
- •Регистрация
- •Тестирование и демонстрация работы
- •Краткие теоретические сведения
- •Модули каналов
- •Модули форматов данных
- •Модули кодеров/декодеров
- •Дополнительные модули
- •Модули ресурсов
- •Модули функций плана набора
- •Модули приложений плана набора
- •Встроенные приложения плана набора
- •Порядок выполнения работы
- •Содержимое отчета
- •Контрольные вопросы
- •Лабораторная работа №3 Изучение протоколов ip телефонии
- •Задание на лабораторную работу
- •Краткие теоретические сведения
- •Сообщения протокола sip
- •Адресация
- •Запросы
- •Дополнительные типы запросов
- •Ответы на запросы
- •Порядок выполнения работы
- •Содержимое отчета
- •Контрольные вопросы
- •Команда Background()
- •Команда Playtones()
- •Порядок выполнения работы
- •Содержимое отчета
- •Контрольные вопросы
- •Лабораторная работа №5 Тестирование кодеков.
- •Задание на лабораторную работу
- •Краткие теоретические сведения
- •Кодирование речевой информации
- •Декодирование речевой информации
- •Механизмы оптимизации задержек в сети
- •Порядок выполнения работы
- •Содержимое отчета
- •Контрольные вопросы
- •Рекомендованная литература
Содержимое отчета
Схема соединений ПК и UA пользователя с IP адресами
Скриншоты настройки фильтра в Wireshark
Скриншоты результатов работы фильтров для 6 сценариев
Анализ и результаты выполнения пункта 9.
Анализ и результаты выполнения пункта 10.
Анализ полученных результатов:
использование SIP протокола для установки соединения,
особенности аутентификации SIP протокола,
особенности пере адресации и постановки вызова на удержание,
указать трудности, возникшие при выполнении работы.
Выводы.
Контрольные вопросы
Зачем нужна регистрация? Основные поля, задействованные при регистрации.
Как производиться дерегистрация UA на сервере?
Что такое SIP диалог? Запросы, характеризующие диалог.
Что такое SIP транзакция? Поля, характеризующие транзакцию.
Запросы установления соединения, поля запроса.
Запросы разрыва соединения, поля запроса.
ЛАБОРАТОРНАЯ РАБОТА №4 Изучение интерактивного голосового меню (IVR) и AGI-скриптов.
Цель работы:настроить и изучить возможности сервера Asterisk для создания интерактивного голосового меню (IVR). Научится создавать голосовое меню и настраивать его работу. Научится создавать AGI скрипты и изучить на практике работу AGI-скриптов.
Задание на лабораторную работу
В ходе выполнения лабораторной работы необходимо создать голосовое меню, согласно варианта задания. Настроить сервер Asterisk для записи звуковых сообщений. Проверить работоспособность полученного IVR. Написать простейшие AGI скрипты, которые произносят произвольно введенный символ. Проверить работоспособность полученных скриптов.
Краткие теоретические сведения
Полное расширение файла extensions.conf состоит из трех компонентов:
Название (или число) расширения
Приоритет (каждое расширение может включать множество шагов; номер шага называют "приоритетом")
Приложение (или команда), которое выполнит некоторое действие на звонок.
Эти три компонента разделяются запятыми:
exten => name,priority,application()
-
exten => login1,1,Dial(SIP/login1,10,t)
Рисунок 4.1 – Пример полного расширения файла extensions.conf
Команда Playback()
Проигрывает заданный звуковой файл. Звуковые файлы, по умолчанию, находятся в директории, путь к которой указан в файле asterisk.conf.
Команда Playback будет проигрывать звуковой файл и, по окончании, возвратит управление. Сравните с командой Background, которая начинает проигрывать файл и сразу же возвращает управление, позволяя выполнять дальнейшие команды для канала Asterisk, проигрывая в фоне музыку из заданного файла.
Обратите внимание: Опции не будут работать, если у вас, при задании аргументов, есть пробелы между именем файла и запятой, а так же между запятой и параметрами.
Команда Background()
Начинает проигрывать заданный звуковой файл и сразу же возвращает управление, проигрывая звуковой файл в фоновом режиме, пока исполняются следующие команды (если они есть). (Сравните с командой Playback, которая также проигрывает звуковой файл, но ожидает, пока не закончится проигрыш звукового файла, перед тем как возвратить управление.)
Если Вы повторно вызовете команду Background, пока проигрывается предыдущий звуковой файл, второй звуковой файл будет просто помещен в очередь и начнет проигрываться после окончания первого файла.
Одно из применений команды Background() - это проигрывание интерактивного выбора пунктов меню ("Нажмите 1, для соединения с отделом продаж, нажмите 2, для соединения с отделом поддержки, и т.д."), без дальнейших команд, определенных для данного екстеншена. Следовательно, Asterisk не имеет команд, которые нужно выполнить, и просто ждет любую DTMF последовательность, которые введет пользователь, пока проигрывается файл. Если пользователь набрал номер, который является правильным в данном контексте, проигрывание звукового файла заканчивается и Asterisk перейдет на номер набранного екстеншена. Если пользователь ничего не набрал, тогда Asterisk закончит проигрывание звукового файла, и в тишине будет ждать, определенное в ResponseTimeout время, ввода пользователя. Если и в течении этого времени пользователь ничего не набрал, управление будет передано на стандартный екстеншен "t" (если он определен в контексте, иначе соединение будет закончено). Если пользователь набрал номер, который является неправильным, в текущем контексте, управление будет передано на стандартный екстеншен "i" (если он определен в контексте, иначе соединение будет закончено).
-
[incoming]
exten => s,1,Answer
exten => s,2,ResponseTimeout(5)
exten => s,3,Background(mymenu)
exten => s,4,Background(chooseSomething)
exten => t,1,Goto(s,2)
exten => i,1,Playback(pbx-invalid)
exten => i,2,Goto(s,2)
exten => 1,1,DoSomething
exten => 2,1,DoSomethingElse
exten => 3,1,Dial(...)
Рисунок 4.2 – Пример команд Playback() и Background()
В данном примере, вызов поступает в контекст incoming и сразу же соединение переводится Asterisk в установленное состояние (шаг s,1). Устанавливается таймер ожидания ввода пользователя (ResponseTimeout) в значение 5 секунд (шаг s,2). Потом мы начинаем проигрывать звук из файла "mymenu.gsm" (шаг s,3). Потом мы помещаем в очередь еще один звук (из файла "chooseSomething.gsm"), который будет проигрываться в фоне, когда первый файл закончится (шаг s,4). Так как у нас нет команды с приоритетом s,5, то Asterisk будет продолжать проигрывать файл "mymenu.gsm" пока он не закончиться, а потом и звуковой файл "chooseSomething.gsm" до его окончания, а потом будет ждать ввода пользователя еще 5 секунд. Если в течении всего этого времени (пока проигрываются эти звуковые файлы и в течении заданного времени ожидания) пользователь наберет номер екстеншена ("1", "2" или "3"), тогда Asterisk прекратит проигрывать звуковые файлы и совершит переход на соответствующий екстеншен. А если пользователь наберет любой другой номер, тогда Asterisk перейдет на екстеншен "i" и будет проигран звуковой файл "pbx-invalid.gsm", и будет совершен переход на команду проигрывания первого файла. Если пользователь ничего не ввел, после 5 секунд ожидания ввода, тогда будет совершен переход на екстеншен "t", а уже оттуда вся операция повториться заново, т.к. отсюда совершается переход на проигрывание первого файла.
Если Вам нужно, чтобы Asterisk ждал ввода пользователя без проигрывания каких-либо звуковых файлов, можно сделать чтоб Asterisk проигрывал звуковой файл, содержащий тишину. В директории silence Вы найдете 10 фалов, содержащих от 1 до 10 секунд тишины.
-
; Ждем ввода в течении 5 секунд
exten => s,1,Background(silence/5)
Рисунок 4.3 – Пример. Asterisk ожидает ввода пользователя 5 секунд