Информация к новости
  • Просмотров: 2374
  • Автор: sulicompany
  • Дата: 20-12-2012, 02:27
 (голосов: 0)
20-12-2012, 02:27

Основы ip-телефонии на базе VoIP сервера Asterisk

Категория: IT » Сети » IP-телефония (VoIP-телефония)


Asterisk

—  решение  (в том числе, ) с  исходным кодом от компании , первоначально разработанное . Приложение работает на операционных системах  и . Имя проекта произошло от названия символа «*» ( asterisk — «звездочка»).

Asterisk в комплексе с необходимым оборудованием обладает всеми возможностями классической , поддерживает множество -протоколов и предоставляет богатые функции управления звонками, среди них:

  • .
  • Конференции.
  • Интерактивное голосовое меню ().
  • Центр обработки вызовов (постановка звонков в очередь и распределение их по агентам используя различные алгоритмы).
  • Запись ().

Для создания дополнительной функциональности можно воспользоваться собственным языком Asterisk для написания плана нумерации, написав модуль на языке , либо воспользовавшись  — гибким и универсальным интерфейсом для интеграции с внешними системами обработки данных. Модули, выполняющиеся через AGI, могут быть написаны на любом языке программирования.

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

Благодаря свободной лицензии Asterisk активно развивается и поддерживается тысячами людей со всей планеты. В течение последних двух лет[] рынок Asterisk-приложений активно развивается в США.

 

SIP ( Session Initiation Protocol — протокол установления сеанса)

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

В  SIP является  .

Протокол описывает, каким образом клиентское приложение (например, ) может запросить начало соединения у другого, возможно, физически удалённого клиента, находящегося в той же сети, используя его уникальное имя. Протокол определяет способ согласования между клиентами об открытии каналов обмена на основе других протоколов, которые могут использоваться для непосредственной передачи информации (например, ). Допускается добавление или удаление таких каналов в течение установленного сеанса, а также подключение и отключение дополнительных клиентов (то есть допускается участие в обмене более двух сторон — конференц-связь). Протокол также определяет порядок завершения сеанса.

Важно: Сам SIP протокол не занимается передачей голоса, он лишь управляет сеансами связи.

 

Задача:

Установить и настроить SIP-сервер Asterisk для обслуживания 4 SIP-клиентов. 

Дополнительное задание: 

Используя стандартные средства Asterisk реализовать систему “Автосекретать” с автоматическим переводом звонков выбранным клиентам.

Установка:

Для установки сервера телефонии Asterisk потребуется уже готовая система Ubuntu 12.04 (Server или Desktop). 

Откройте файл /etc/apt/sources.list выполнив в терминале команду nano /etc/apt/sources.list
Удалите или закомментируйте все строки в этом файле.
(удалить строку, в которой находится курсор в программе nano можно, используя сочетания клавишь Ctrl+K)
(закомментировать строку можно, поставив в её начале знак # (решётка))
Добавьте в начало файла следующие строки
## [local NTC repository server] Ubuntu 12.04 Precise

deb ftp://repo.nntc.nnov.ru/repositories/precise precise main restricted universe multiverse
deb ftp://repo.nntc.nnov.ru/repositories/precise precise-security main restricted universe multiverse
deb ftp://repo.nntc.nnov.ru/repositories/precise precise-updates main restricted universe multiverse
deb ftp://repo.nntc.nnov.ru/repositories/precise precise-backports main restricted universe multiverse

Проверьте подключены ли в вашей системе репозитории программного обеспечения, а именно. разделы Universe и Multiverse.

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

apt-get update

apt-get install asterisk

Дождитесь окончания установки пакетов.
Сразу после установки необходимо проверить работоспособность сервера ip-телефонии. Для этого на рабочем компьютере или на мобильном устройстве, подключенном к сети, установите програмный телефон (для Linux это может быть Ekiga, для Android - CSipSimple). После установки совершите тестовый звонок на ip-адрес вашего сервера.
Если установка прошла успешно вы должны услышать голосовое приветствие от сервера Asterisk.

Для установки программного телефона Ekiga в Ubuntu Linux выполните команду

 

apt-get install ekiga

 

Базовая настройка:

Для начала работы с Asterisk сформируем два основных конфигурационных файла:

  1. extensions.conf (в этом файле определяются правила, выполняемые при наборе определенных номеров или номеров по определенной маске)
  2. sip.conf (в этом файле создаются учетные записи SIP-клиентов)


Для начала скопируем имеющиеся файлы extensions.conf и sip.conf с новыми именами.

cp /etc/asterisk/extensions.conf /etc/asterisk/extensions.conf.original
cp /etc/asterisk/sip.conf /etc/asterisk/sip.conf.original

 

Создадим три учетных записи для трех номеров программных телефонов. Для этого допишите в конец sip.conf настройки для 4-х телефонных номеров:
101, 102, 103 и 104.

Открываем файл

nano /etc/asterisk/sip.conf

Дописываем в конец файла следующее:

[general]
[101] 
type=friend 
context=phones 
host=dynamic
secret=101
[102] 
type=friend 
context=phones 
host=dynamic
secret=102
[103] 
type=friend 
context=phones 
host=dynamic
secret=103
[104] 
type=friend 
context=phones 
host=dynamic
secret=104

 



Теперь создадим файл extensions.conf и внесем в него новые правила набора номеров на нашем сервере ip-телефонии:
Открываем файл

nano /etc/asterisk/extensions.conf

Содержимое файла должно быть таким:

[globals]
[general]
[default]
exten => s,1,Verbose(1\Unrouted call handler)
exten => s,n,Answer()
exten => s,n,Uait(1)
exten => s,n,Playback(tt-weasels)
exten => s,n,Hangup()
[incoming_calls]
[internal]
exten => 500,1,Verbose(^Echo test application)
exten => 500,n,Echo() extern => 500,n,Hangup()
[phones]
include => internal
[incoming]
exten => s,1,Answer()
exten => s,n,Echo()

Сохраним содержимое файла и перезапустим сервис Asterisk

asterisk -rvvvddd
> dialplan reload


Сохраните файл и перезапустите сервис командой:

asterisk -rvvvddd
> sip reload

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

  • Адрес SIP-сервера: IP-адрес вашего сервера, где был установлен Asterisk
  • Имя пользователя: Номер телефона, например 101
  • Пароль: Значение поля secret для данного номера. В нашем случае 101

Что бы иметь возможность совершать звонки с одного зарегистрированного номера на другой нам потребуется настроить dialplan.
Dialplan’ы настраиваются в файле Extensions.conf

Открываем файл

nano /etc/extensions.conf 

[phones]
exten => _1XX,1,Dial(SIP/${EXTEN},60)
exten => _1XX,n,Hangup
include => internal
[incoming]

Сложная задача

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

Для начала нам потребуется создать аудиозапись с приветствием и вариантами выбора для абонента. Для этого мы используем программу Audacity. Запустите ее и запишите с помощью микрофона приветствие и варианты выбора, с кем соединить. Скажите что то вроде:

“Добрый день! Вы позвонили в компанию Мстители. Если хотите поговорит с Джони Старком, нажмите ОДИН. Если хотите поговорить с Халком, нажмите Два. Если хотите поговорить с Капитаном Америкой, нажмите 3. Для связи с оператором нажмите НОЛЬ или оставайтесь на линии”.

Не забудьте оставить 5 секунд тишины в конце записи. 

Очень важно сохранить подготовленную запись в правильном формате и правильными параметрами. Запись должна быть сохранена в формате wav, 16bit, 8kHz. 

Подготовленную запись сохраните с именем welcome.wav и копируем на сервер в каталог /usr/lib/asterisk/sounds/.

Создаем в extensions.conf соответствующий DialPlan:

Открываем файл

nano /etc/asterisk/extensions.conf

Содержимое файла должно быть таким:

[mainmenu]
exten => s,1,Background(/var/lib/asterisk/sounds/wellcome)
exten => 0,1,Dial(SIP/104) ; Звоним оператору на номер 104
exten => 1,1,Dial(SIP/101) ; Звоним Джону Старку на номер 101
exten => 2,1,Dial(SIP/102) ; Звоним Халку на номер 102
exten => 4,1,Dial(SIP/103) ; Звоним Капитану Америке на номер 103
exten => s,2,Dial(SIP/104) ; Если абонент не нажал никакую кнопку - 
;звоним оператору на 104
[phones]
exten => _100,1,Goto(mainmenu,s,1)
exten => _1XX,1,Dial(SIP/${EXTEN},60)
exten => _1XX,n,Hangup
include => internal
[incoming]

 

Проверка работоспособности созданной конфигурации

Проверьте работоспособность созданной конфигурации. Для этого выполните следующие действия:

  1. Настройте учётные записи SIP на IP-телефонах

  2. Совершите звонок с одного IP-телефона на другой

  3. Совершите звонок на номер 100 и проверьте логику работу системы «Автосекретарь»

  4. Покажите выполненную работу преподавателю

  5. Подготовьтесь к тестированию.