Астериск установка. Руководство по инсталляции сервера Asterisk

Эта маленькая статья предлагается самым начинающим инженерам в сфере телекоммуникаций. В ней очень коротко описано как запустить голосовую связь через компьютерную сеть своими силами. Итак, начну с главного. В качестве источника я выбрал готовую систему для установки с пакетов AsteriskNOW. Она построена на системе CentOS, которая полностью совместима с Fedora & Red Hat. Соответственно, все дополнения к ней можно ставить с.rpm пакетов. Установка тривиальна и описывать ее я не буду. После установки системы нам предложат ввести логин и пароль. Если Вы во время установки пропустили шаг по настройке сети, то его сейчас необходимо восполнить. Иначе, мы не сможем управлять Asterisk’ом через веб-интерфейс. Допустим у нас интерфейс сетевой карты имеет адрес 10.0.10.5/24. Тогда после введения в адрессной строке браузера http://10.0.10.5 на другой машине, мы получим веб-интерфейс FreePBX. По умолчанию логин: freepbx, пароль: fpbx. Когда ввойдем, увидим приблизительно такую картинку:


Здесь мы видим статус системы: нагрузка, аптаймы, сервисы, количество подключений и другое. Скажу сразу, что это уже обновленная и дополненная система со всеми плагинами. Напомню, Asterisk является модульной системой и обновляется частями. Сейчас мы рассмотрим некоторые возможности этой системы. Начнем собственно с обновления. Не буду говорить по какому порту идет обновление ибо не испытывал, поэтому сделаем доступ данной машины в Интернет через обычный static NAT. Почему статический NAT, а не, скажем, NAT overload? При дальнейшей настройке системы для звонков с локалки в Интернет и обратно нам необходимо будет открыть некоторые порты. Об этом позже. А сейчас перейдем на вкладку Module Admin и начнем обновление системы.

Выберем необходимые плагины с расширенного репозитория. Сразу скажу, что желательно поставить следующие плагины: Asterisk Info, Asterisk SIP Settings, Java SSH. Первый плагин даст нам возможность мониторить подключения пользователей к нашей системе. Второй нужен для настройки работы системы в Интернете. Третий — клиент для доступа к системе по SSH. Все остальные плагины по желанию.

Перед тем, как начать создание номеров для клиентов хочу предупредить, что все настройки Asterisk’а через веб-интнрфейс не будут осуществляться пока не сделать несколько изменений в системе. Поэтому, проделаем следующее:

cd /etc/asterisk

mv extensions.conf /tmp/extensions.conf

mv sip.conf /tmp/sip.conf

mv iax.conf /tmp/iax.conf

mv features.conf /tmp/features.conf

После перемещения указанных файлов нужно извлечь конфиг Asterisk’а.

cd /var/lib/asterisk/bin/

После проделанных манипуляций управлять системой можно через веб-интерфейс. Почему я сделал перемещение а не удаление? Наверное, чтобы попозже изучить эти файлы, но вы можете их просто удалить. Итак, давайте создадим пару номеров для проверки работоспособности системы. Нажимаем на вкладку Extensions.


Выбираем тип девайса, а точнее протокол, по которому будет осуществляться связь. В данном случае мы виберем SIP, так как он самый распостраненный и стандартизированный. Нажимаем Submit и переходим к картинке:


Здесь три поля обязательных: номер клиента (0004), отображаемое имя клиента (user04), пароль клиента (User04). После создания номера необходимо подтвердить изменения. Asterisk перечитает конфиги и номер создасться. Как только вы создадите несколько номеров можно подключить соответственно несколько SIP клиентов для проверки. Я пользуюсь X-Lite 3. Вы можете выбрать любой доступный SIP клиент

Конечно, если вам стало интерестно выпустить данный сервис на волю, то есть в Интернет, то необходимо изменить некоторые настройки в системе и на вашем брандмауэре. Сначала заходим в раздел меню Asterisk SIP Settings. Здесь можно делать всевозможные настройки сервиса, но самое главное, это поставить кавычки, как стоят на рисунку.


Чесно говоря, я перерыл много документации о том, как за фаерволом настроить работу Asterisk’а. Пробовал указывать реальный IP адрес и локальные сети, пробовал и другие методы, но в итоге у меня звонило между машинами в локалке, но не звонило в Интернете, или ноборот. После нескольких неудачных експериментов я поставил кавычки как на рисунке (указал что сервер имеет реальный IP, хотя это не так и поставил кавычку НАТить звонки) и у меня все заработало. Не претендую на точность и все такое, но суть в том, что такой расклад у меня заработал.

После этого нужно не забыть сделать несколько манипуляций с фаерволом. В моем случае это Cisco ASA 5540. И на ней я сделал такие настройки:

static (dmz,internet) 204.204.204.204 10.0.10.5 netmask 255.255.255.255 — собственно статический NAT о котором я говорил ранее. dmz — интерфейс ДМЗ, где находится наш сервер. internet — интерфейс, который смотрит в мир.

access-list INTERNET-IN extended permit udp any host 204.204.204.204 eq sip — открываем SIP порт для соединения.

access-list INTERNET-IN extended permit udp any host 204.204.204.204 range 10000 10100 — открываем по 2 порта на каждый конкурирующий звонок.

После этих настроек у меня все прекрасно заработало. В следующих статьях я постараюсь описать настройку голосовой почты и еще нескольких интересных функций Asterisk’а.

Графический интерфейс администратора IP – АТС Asterisk – FreePBX, насчитывает огромное количество опций настройки, вариантов маршрутизации, подключения различного оборудования, начиная от телефонных аппаратов и заканчивая шлюзами. В статье мы опишем базовую настройку тринадцатой версии FreePBX сразу после .

Пошаговое видео

Подключение к FreePBX

Чтобы подключиться к графическому интерфейсу FreePBX, нужно ввести IP – адрес Asterisk, который вы указали на этапе установки. Если вы забыли, какой IP – адрес указали, то подключите монитор и клавиатуру к вашему серверу, а затем введите данные для пользователя root, как показано ниже:




При подключении, вам будет указан IP – адрес вашего сервера. Если версия вашего дистрибутива отличается, и вы не увидели аналогичного вывода, укажите следующую команду:

# ifconfig

Вывод команды позволит вам увидеть все доступные интерфейсы и их IP – адреса.

Активация и пароль администратора

Подключившись к FreePBX 13 через интернет – браузер вам будет сразу предложено создать учетную запись администратора указав логин, пароль и адрес электронной почты администратора системы. После успешного создания, выберите на главной страницу пункт FreePBX Administration и укажите созданные параметры:




Сразу после подключение, перейдите во вкладку Admin System Admin и нажмите кнопку Activation






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



Настройки SIP

Модуль SIP Settings это графическая визуализация настроек в файле /etc/asterisk/sip_nat.conf. Здесь, с помощью графического интерфейса можно настроить важнейшие параметры, такие как настройки NAT, внешний IP – адрес и настройки кодеков. Чтобы перейти к настройке нажмите на вкладку Settings , а далее Asterisk Sip Settings .




Allow Anonymous inbound SIP Calls
Данная опция позволяет разрешить, или запретить входящие звонки с неизвестных номеров. Мы советуем запрещать данный вид звонков, так как потенциально, разрешенные анонимные звонки могут стать лазейкой для злоумышленников.

Local Networks
Введите локальные (находящиеся внутри вашей сети) адреса подсетей, которым Asterisk будет доверять. Например, 192.168.2.0/255.255.255.0

RTP Ranges
Укажите диапазон RTP портов. Рекомендуем все оставлять по умолчанию.

Strict RTP
Когда между двумя устройствами устанавливается RTP поток, то назначаются адреса источника и назначения. При включенной данной опции, все пакеты приходящие с другого IP – адреса буду отброшены. Мы рекомендуем не выключать данную опцию.

Codecs
Галочкой отметьте нужные кодеки.

Положение кодеков указывает их приоритет. Например, на скриншоте ниже приоритет отдан g.711 u-law, затем g.711 a-law, gsm и так далее. Более подробно про телефонные вы можете прочитать в наших прошлых статях.


Настройка NAT в FreePBX

В большинстве случаев, если администратор обнаруживает проблему односторонней слышимости, или то, что звонки обрываются спустя несколько секунд разговора – проблема в NAT. Вот что нужно сделать, чтобы избавиться от этой проблемы: в настройка модуля Asterisk SIP Settings , переходим во вкладку Chan SIP Settings и отмечаем следующее:

NAT - yes
IP Configuration - Static IP
Override External IP - введите ваш внешний IP - адрес

Reinvite Behavior - No
Обязательно укажите в настройках Local Networks в предыдущей вкладке вашу локальную подсеть. Помимо этого, пробросьте на вашем маршрутизаторе порт 5060 и диапазон портов из параметра RTP Ranges , по умолчанию равный 10000-20000



Настройка сетевых параметров FreePBX

Есть три важных пункта данной настройки:

  1. Настроить статический IP – адрес для сервера
  2. Настроить DNS
  3. Настроить временную зону
Перейдем к настройке IP. Для этого, перейдите во вкладку Admin System Admin Network Settings


Здесь мы настраиваем следующие опции:

  • Network Interface - сетевой интерфейс, то есть конкретная сетевая карта (NIC)
  • IP Assignment - выберите Static чтобы настроить статический IP - адрес
  • Static IP - введите IP – адрес сервера
  • Netmask - маска сети
  • Gateway - шлюз по умолчанию
  • Start Automatically - старт при загрузке сервера





Настроим уведомления нашего сервера Asterisk, при таких сбоях, как например малое дисковое пространство или сбой в работе RAID массива:




Производим настройку следующих опций:

  • From Address - адрес электронной почты, который АТС будет указывать как адрес отправителя при формировании письма
  • Storage Notifications - почта для уведомлений о проблемах с хранением данных (сбой RAID или нехватка места на дисках)
  • Intrusion Detection Notifications IP - почта для уведомлений о вторжениях или попытках взлома сервера

Конфигурация системы безопасности

В Asterisk встроена система обнаружения вторжений – Fail2Ban. Для настройки системы перейдите во вкладку Admin System Admin Intrusion Detection




Система гибкая, и, порой реагирует когда не нужно:) Поэтому, советуем заранее вносить в Whitelist перечень нужных IP – адресов, таких как IP SIP – прокси, адреса шлюзов, например FXS. Порой, бывает так, что в бан попадает IP – адрес FXS шлюза, к которому подключены все офисные аналоговые телефоны.

  • Status - мы рекомендуем всегда контролировать состояние Fail2Ban, чтобы статус был running
  • Intrusion Detection - в данном пункте можно остановить и перезапустить службу.
  • Ban Time - время в секундах, которое IP – адрес будет находиться в статусе блокировки
  • Max Retry - количество попыток подключения к АТС, которое пользователь может осуществить в течение Find Time.
  • Find Time - время, в течение которого у пользователя есть Max Retry попыток подключения к системе.
  • E-mail: - адрес электронной почты, на которую будут отправляться уведомления о внесении нового IP – адреса в бан.
  • Whitelist - список заранее внесенных IP – адресов, которым доверяет администратор.

Настройка внутренних номеров

Для настройки телефонных аппаратов и создания внутренних номеров перейдите во вкладку Applications Extensions . Процесс создания внутренних номеров (Extension) мы описали в статье по ссылке ниже:

Настройка SIP - транка

Подключение к провайдеру является важнейшим этапом в настройке вашего сервера IP - АТС Asterisk. Именно настройки провайдера, позволят нашим пользователям совершать исходящие, и принимать входящие вызовы. Для настройки SIP – транка перейдите во вкладку Connectivity Trunks . Процесс создания SIP - транка подробно расписан в статье по ссылке ниже:

Настройка маршрутизации

После того, как мы настроили внутренние номера и SIP – транки для подключения к провайдеру, нам необходимо настроить маршрутизацию вызова. В рамках данной настройки, мы будем учить наш сервер Asterisk как обрабатывать входящий и исходящие вызовы. b>Connectivity → Inbound/Outbound Routes . Данный процесс мы подробно описали в статье по ссылке ниже:

Так как наш Астериск будет установлен в небольшой компании, мы планируем сделать голосовое меню, в котором будем помогать пользователям быстрее связаться с нужным человеком. Настройка голосового меню (IVR), регламентируется в модуле IVR, консоль конфигурации которого располагается во вкладке Applications IVR . Настройку вы можете найти по ссылке ниже::

Полезна ли Вам эта статья?

Пожалуйста, расскажите почему?

Нам жаль, что статья не была полезна для вас:(Пожалуйста, если не затруднит, укажите по какой причине? Мы будем очень благодарны за подробный ответ. Спасибо, что помогаете нам стать лучше!

Администратор,

  • Установка и настройка AsteriskNOW может быть реализована специалистами нашей компании.




Установка дистрибутива AsteriskNow

Одним из способов установки AsteriskNOW является установка по ниже описанным инструкциям:

1. Загрузите ISO-образ диска, используя эту ссылку .

2. Запишите образ на чистый CD или DVD. Если вам нужны инструкции как записать образ на диск - просто вбейте в Google "burn ISO to DVD" и вы увидите море инструкций или кликните по ссылке "Google burn ISO to DVD" в которой мы уже все сделали за вас:)

3. Выберите , на который он будет установлен AsteriskNOW . Вся информация с жесткого диска будет удалена при установке AsteriskNOW . Настройте компьютер на загрузку с оптического диска (в BIOS) . Вставьте диск в привод, включите компьютер. ВАЖНО: Вы должны иметь выход в интернет, чтобы загрузчик запустился корректно . Если вы устанавливаете AsteriskNOW с флешки, вы можете получить "kickstart"-ошибку. Если это произошло - просто несколько раз нажмите Enter, процесс установки пойдет в нормальном режиме.

4. Установка начинается с выбора версии, как показано на картинке ниже.




5. После выбора версии, система загрузит из сети необходимые для установки пакеты. Как правило, это занимает 3-5 минут.



6. После того, как система загрузится, вам будет предложено сконфигурировать сеть. Настройки по умолчанию, как правило, подходят в большинстве случаев инсталляции, по это просто нажмите TAB переведя каретку на слово "OK" на красном фоне, чтобы он подсветился серым и нажмите ENTER. Но вы естественно можете настроить сеть руками.



После того, как вы нажали "OK", система сконфигурирует параметры сетевого интерфейса.



7. После настройки сети вы будете перекинуты на экран настройки временной зоны. Если ваша система использует GMT (в очень редких случаях), нажмите пробел. Затем TAB чтобы перейти к выбору зоны. Используйте стрелки вверх и вниз, найдя подходящую вам временную зону. Нажимайте TAB до тех пор, пока слово OK на красном фоне не станет подсвечиваться серым, затем нажмите ENTER.



8. На следующем экране установщик попросить вас установить пароль на root"a. Помните, что использование сложных паролей крайне важно. Введите пароль, затем нажимте TAB, повторите ввод пароля и нажмите ENTER.



9. Далее установщик проверит наличие зависимостей пакетов, отформатирует жесткий диск и начнет установку системы. Между процессом непосредственной установки и сбором информации может пройти некоторое время, просто немного подождите. Установщик будет показывать процентное выполнение процесса установки и примерное время ожидания до конца установки. Как правило, это занимает около 20 минут, затем система перезагружается.



10. После перезагрузки будет произведено обновление всех компонентов системы до актуальных версий. Как правило, занимает 10-15 минут.



11. После завершения установки, вы увидите командную строку linux с приглашением залогиниться в систему. Имя пользователя - "root" (без кавычек), пароль - введенный вами в процессе установки.




12. После того как вы залогинитесь, вы увидите IP-адрес вашей АТС.




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


14. Поздравляем. Вы успешно установили дистрибутив AsteriskNOW с веб-интерфейсом FreePBX.


23.02.2012 15:56

Статья, позволяющая начинающим программистам выполнить базовую настройку asterisk

Asterisk является одним из самых распространенных серверов ip-телефонии наряду с такими системами, как Switchwox и 3CX. Большую популярность данная система обрела с распространением в нашей стране качественного интернета, а также множества телефонных провайдеров, предоставляющих телефонные номера в SIP-формате или так называемые SIP-номера. Одной из таких компаний является Датагруп, которая зарекомендовала себя одним из лидеров рынка услуг связи. С удешевлением SIP-номеров появился смысл использовать современные телефонные системы ip-телефонии взамен старым аналоговым мини-атс. Это связано с широкими функциональными возможностями call-центров на базе Asterisk. При этом стоимость оборудования и настройка Asterisk практически не уступает в денежных затратах.

Установка asterisk производится путем скачивания и дальнейшей компиляции бесплатно распространяемого исходного кода, разработанного компанией Digium. Исходники asterisk существуют только для unix-совместимых операционных систем, самыми распространенными из которых являются Linux и FreeBSD. Установка asterisk под Windows возможна только путем реализации виртуальной машины. Скачать последние версии asterisk можно по следующей ссылке . На данный момент развивается сразу 4 версии этого сервера. Наибольшую стабильность всех модулей имеют версии asterisk 1.4 и asterisk 1.6. С другой стороны, в функциональном плане выгодно отличается версия asterisk 1.8, в которой есть поддержка множества новых модулей и функций, среди которых можно отметить поддержку протокола SRTP, работу с IPv6 и улучшенные показатели при работе SIP и ISDN.

В данной статье будет рассмотрена установка asterisk v 1.6.22 на Linux Fedora Core.

Для начала установки, скачаем исходники asterisk. Для этого, выполняем в консоли сервера команды:

# wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.6.2.22.tar.gz

# tar -xzvf asterisk-1.6.2.22.tar.gz

Перед тем как компилировать исходники, установим все необходимые сопутствующие модули и утилиты:

# yum install gcc

# yum install gcc-c++

# yum install make

# yum install libxml2-devel

# yum install ncurses-devel

После того, как все дополнительные утилиты установлены, производим установку самого asterisk:

# cd asterisk-1.6.2.22

После удачной установки в каталоге /etc/asterisk вы обнаружите конфигурационные файлы asterisk"a. Настройка asterisk осуществляется путем редактирования файлов конфигурации, имеющих очень специфическую структуру и операторы. Основу конфигурации при настройке астериск составляют файлы sip.conf и extensions.conf. Изучив и отредактировав эти файлы, можно добиться правильной работы сервера.

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

Пример файла sip.conf:


qualify=yes
nat=no


defaultexpiry=3600
disallow=all
allow=alaw
allow=ulaw
fromuser=044XXXXXXX
host=80.91.169.2
insecure=invite,port
secret=xxxxxxxxxxx
type=peer
username=044XXXXXXX
context=incoming
language=ru
qualify=yes
dtmfmode=auto


type=friend
host=dynamic
insecure=invite,port
username=fxo
secret=xxxxxxxx
context=incoming
qualify=yes
nat=no
canreinvite=no
allowtransfer=no
dtmfmode=auto
disallow=all
allow=alaw
allow=ulaw


type=friend
regexten=101
secret=xxxxxxxxxxxxx
context=internal
host=dynamic
callerid="101" <101>
disallow=all
allow=alaw
allow=ulaw
language=ru
callgroup=1
pickupgroup=1
qualify=yes
canreinvite=yes
call-limit=4
nat=no

В данном примере приведен простейший список sip-устройств. Несложно заметить, что в конфигурации имеются блоки, заключенные в квадратные скобки. Именно такими блоками описывается конфигурация любых устройств (пиров) при настройке Asterisk. Пройдемся вкратце по блокам и по самым основным параметрам.

Блок является обязательным. В него входят настройки и параметры, которые применяются ко всем блокам по умолчанию. Другими словами, если при описании того или иного устройства не указан какой-либо параметр, то Asterisk читает его из этого блока.

Следующие три блока описывают непосредственно sip-устройства. Для наглядности все три устройства имеют разные предназначения. Блок описывает параметры для sip-номера компании Датагруп, блок описывает параметры, для соединения с VOIP-шлюзом, а блок описывает параметры обычного внутреннего sip-устройства, которым может программный или аппаратный ip-телефон.

Пробежимся по основным параметрам sip устройств. Параметр context определяет какой алгоритм действий применять к тому или иному устройству. Callerid определяет номер и имя пира, которые будут высвечиваться при исходящем звонке с него. Опции disallow и allow определяют, какие кодеки использовать для связи. Опция secret - это пароль для регистрации данного пира. Пароли желательно составлять достаточно сложными во избежание взломов недоброжелателями.

Файл extensions.conf описывает взаимодействия между контекстами и каналами связи, которых может быть большое множество. По сути, этот файл является основным при настройке asterisk.

Пример файла extensions.conf:


exten => _XXX,1,Dial(SIP/${EXTEN},120,tT)
exten => _XXX,n,Hangup

Exten => _X.,1,Dial(SIP/datagroup/${EXTEN},120,tT)
exten => _X.,n,Hangup


exten => _X.,1,Dial(SIP/101,60,tT)
exten => _X.,2,Hangup

Exten => h,1,Hangup

В данном простейшем примере мы имеем два алгоритма действий (контекста) - internal и incoming. Напомним, что привязка к контекстам осуществляется при создании пиров в файле sip.conf и в дальнейшем присваивается уже в extensions.conf при попытке инициации связи с пиром.

Опишем подробнее два контекста. Уже по их названиям становится понятно, что они применяются для алгоритмов внутренних абонентов (internal) и входящих звонков (incoming). Разобраться в конструкции этого файла поможет обобщенный пример, который можно выразить строкой:

Exten => _XXX,n,Command(Options)

Расшифровываются эти опции так:

Exten => _XXX - служебный префикс, с которого начинаются практически все строчки в данном файле. Он описывает представление входящего контекста. Другими словами, если на этот контекст обратился пир с номером 101, то алгоритм для него должен начинаться с конструкции exten => 101. Префикс поддерживает регулярные выражения и может указываться обобщенно. Например, exten => _XXX говорит о том, что под данный алгоритм попадают все пиры, которые состоят из трех цифр.

N - номер строчки алгоритма. В любом программном коде имеется последовательность операторов, которые выполняются по очереди. Точно также и в настройках asterisk есть такая последовательность. Единственное отличие - команды, выполняемые asterisk’ом, нумеруются. Обязательным является указание первой сточки явно. Как вы успели заметить, все контексты начинаются со строчек:

Exten => _XXX,1,…..
exten => _X.,1,…..
exten => h,1,……

А вот дальнейшие строчки могут нумероваться неявно, то есть так:

Exten => _XXX,n,…..
exten => _X.,n,…..
exten => h,n,……

При неявном указании номера строчки, asterisk выполняет их последовательно сверху вниз, как это происходит с любым другим кодом.

Command - команда выполняемая asterisk’ом. Основных команд не так уж много. Для базовой настройки достаточно знать синтаксис команды Dial (позвонить), на примере которой мы рассмотрим оставшиеся опции.

Например:
exten => _X.,1,Dial(SIP/101,60,tT) - asterisk наберет внутренний номер 101 и будет пытаться дозвониться до абонента в течении 60 секунд с возможностью перехвата звонка со стороны звонящего и принимающего пиров (опции tT)
exten => _X.,1,Dial(SIP/datagroup/${EXTEN},120,tT) asterisk наберет номер, которые передан в переменной ${EXTEN} с помощью пира datagroup ранее указанного в sip.conf

Первый пример применялся в контексте incoming. Это говорит о том, что все входящие звонки, приходящие на этот контекст перенаправляются на внутреннего абонента, который отвечает на эти звонки. Второй пример в свою очередь показывает, как осуществляется исходящий звонок передавая набранный номер в служебной переменной ${EXTEN}.

Примеры файлов можно напрямую скопировать с этой статьи и вставить в ваши sip.conf и extensions.conf и подредактировать некоторые опции (логины, названия пиров, пароли и т.д). После настройки asterisk, запускаем сервер простой командой:

Дальнейшие действия могут производиться из командной строки астериска, которая запускается командой:

# asterisk -rvvvvd

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

P.S. В случае, если у вас не получилось настроить сервер, либо же вам нужна более сложная конфигурация, с радостью поможем в настройке asterisk. Наши контакты .


По установке системы.
Наконец тем или иным образом у нас появился установленный Asterisk и FreePBX.

Опишу ситуацию немного подробнее для сравнения подойдет ли Вам наша схема работы. Мы небольшой интернет провайдер, нам нужна запись разговоров, очереди звонков на городские и мобильные телефоны, голосовое меню рассказывающее про акции с выбором в какой отдел попасть, и возможность быстро поставить перед всем этим сообщение об авариях на определенных улицах города, чтобы люди не перенапрягали тех поддержку, причем желательно бесплатно. Чтобы не покупать дорогие шлюзы мы решили сменить городские телефонные номера и купить пару номеров + десяток каналов у провайдера ip-телефонии. Кто то скажет что это ненадёжно и т.д. Только скажите- какая разница интернет провайдеру на городские телефоны, если у него упал весь интернет? Зато это дешево. Подключение нам обошлось всего то в 38 $, каждый телефонный номер в 2$ и линия в 1,2$ в месяц. После чего мы получили настройки даже без авторизации и к нашему ip адресу привязали аккаунт. Сразу хотелось бы оговорить как будет построена эта статья, чтобы не перегружать её тоннами скринов я опишу создание каждого элемента по одному разу(что советую проделать т.к. они понадобятся для ваших же последующих экспериментов), а потом уже распишу схему что на что ссылается в нашей схеме работы. Наверняка схема у вас будет другая, но зато сможете понять смысл. Описывать буду только те элементы, которые непосредственно понадобились при настройке.

Теперь самое время завести транк:

Для наглядности я буду писать на английском т.к. интерфейс переведен кусками и достаточно загадочно. Заходим в Connectivity> Trunks > Add SIP Trunk.

В правом углу будет список уже созданных вами транков. Открыв новый я заполнил произвольно название - Trunk Name, назвав его Vega(Vegatelecom наш провайдер). Outbound CallerID вписав номер в формате 380652ХХХХХХ как его и выдает наш оператор, это номер с которого будут исходящие вызовы, если его не задать то позвонить с использованием этого транка не получалось, говорил все линии заняты. В Outgoing Settings заполнил ещё одно поле Trunk Name и ввёл настройки которые дал провайдер:

host=93.178.205.29
type=peer
disallow=all
allow=alaw&ulaw&g729
nat=no
canreinvite=nonat
insecure=invite
dtmfmode=rfc2833

Внизу нажал кнопочку Submit Changes и получил созданный транк.

Теперь нужно выбрать куда же мы будем принимать звонки. Заходим Applications > Extension> Generic SIP Device > Submit


User Extension - внутренний номер данного телефона, софтфона или чего вы там будете подключать. Мы использовали 100,101 и т.д.
Display Name - отображаемое имя
Обязательно в секции This device uses sip technology. заполните поле secret - это пароль.
Поля Recording Options включают запись этого телефона:
Inbound External Calls Always = Входящие внешние звонки
Outbound External Calls? Always = Исходящие внешние звонки
Inbound Internal Calls? Always = Входящие внутренние звонки
Outbound Internal Calls? Always = Исходящие внутренние звонки
On Demand Recording? Disable Запись по запросу
Внизу жмём Submit.

После установки программы под Windows запускаем, заходим в настройках в Sip Accounts и редактируем первый из них.


Чтобы он заработал нам нужно ввести Display Name = User 1, User Name = 100, Password = ******, Domain = ip-вашего сервера. Остальные настройки можно не трогать. Вы можете создать несколько абонентов с номерами 101-102 или любыми другими, запустить на нескольких компьютерах несколько телефонов и уже попробовать позвонить с одного клиента на другой, соответственно по номерам 100-101-102 и т.д.

Но мы же хотим позвонить на наши свеже-купленные номера.

Заходим Connectivity>Inbound Routes


Description - Описание маршрута(Имя)
DID Number - Очень полезное поле, задав его вы можете отфильтровать звонки с какого то конкретного номера. Остановимся на нём подробнее. В нашем случае по 1 транку заходит 2 номера телефона, допустим нам нужно чтобы звонок по первому номеру уходил к первому оператору а звонок со второго номера уходил на второго оператора. Заходим на сервер телефонии через SSH, ну или физически если там есть монитор, логинимся под рутом и запускаем Asterisk CLI командой asterisk -r. Звоним на один из номеров которые мы подключили в транке. Смотрим одну из первых появляющихся строк вида: Executing Goto(«SIP/vega-000000e4″, «from-trunk,380652******,1″) in new stack. после фразы from-trunk, мы видим какой DID у данного номера, наш провайдер отдает номер в таком формате, если это будет GSM шлюз в виде модема huawei, то там будет написан его IMEI, в любом случае если мы создадим маршрут с указанием этого номера, он будет отвечать за звонки именно на него. В данном примере предлагаю оставить поле пустым для универсальности. Т.е. система будет передавать все звонки со всех транков на указанное дальше Destination.
CallerID Number - работает похоже но уже с номерами звонящих. В подсказках видно что можно указывать например Blocked, следовательно звонки с заблокированных телефонных номеров будут передаваться в нужное нам Destination. По традиции оставляем пустым.
Set Destination - главное поле в котором мы наконец то укажем куда же пойдут звонки, можно выбрать очередь или допустим конкретный extension, выберем extension 100 который мы создали ранее и подключили в софтфон.
Теперь если вы позвоните на номер который заведен в транке, то у вас зазвонит софтфон. Поздравляю! Вы совершили первый успешный звонок.

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

Заходим Connectivity>Outbound Routes>



Route Name - имя маршрута
Dial Patterns that will use this Route - тут можно задать маршрут на определенные номера, опять же наш провайдер поддерживает набор в любом виде, можно набирать с кодом города, можно без него, все эти маршруты прописаны у него, тогда ничего прописывать не будем и поставим в поле match pattern - . Да, просто точку. Это будет означать - посылать все набранные номера как есть.

Наконец в Trunk Sequence for Matched Routes указываем транки через которые будет выходить звонок, в нашем случае vega.

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

Пора подумать о голосовом меню и очередях звонков.
Тут то и начинается самое интересное. Нам для голосового меню нужно много записей. Забегая вперед опишу принцип. У меня лично возникла проблема по их надиктовке, но я нашел замечательный выход. Сначала создаем много много записей (ниже расскажу как), надиктовываем их противным шепелявым голосом, потом включаем замечательную функцию изменения записи по звонку на номер, далее заходите в Admin >Feature codes, снизу Recordings там будут присутствовать все коды на которые можно позвонить с условными названиями записей которые вы им дадите. Таким образом, распечатав этот кусок на бумаге его можно выдать особе женского пола чтобы она звонила туда, слушала что вы там надиктовали и перезаписывала мелодичным голосом до тех пор пока ей не начнет нравиться. Ещё огромный плюс сего мероприятия в том, что эти записи уже могут использоваться в готовом голосовом меню, то есть менять можно на горячую, не останавливая работы телефонии и звонящих абонентов. Таким же образом можно реализовать функцию оповещения об авариях для неквалифицированного персонала. Например создав запись с названием авария, длительностью 1 секунда и тишиной внутри, можно повесить его в самое начало вашего меню. Если случается авария то оператор тех поддержки может позвонить на номер данного файла - надиктовать улицы на которых ведется ремонт, а по окончании ремонта позвонить туда и помолчать в трубку 1 секунду.

Итак надиктовка! Заходим Admin > System Recordings -

Тут можно залить файл с записью, а можно ввести номер своего Extension, нажать кнопочку Go, позвонить на номер *77 с софтфона или чего то подключенного к серваку в виде телефона и надиктовать то что нужно, после этого ввести имя Name this Recording:, и нажать кнопочку Save, запись появиться в правом углу.


Зайдя в запись можно выбрать обалденную функцию о применении которой я писал выше - Link to Feature Code поставить галочку. Теперь позвонив на этот код её можно перезаписать.


Где хранится полный список этих кодов которые вы включили - Admin> Feature Code:


Впереди по курсу очереди звонков Aplication > Queues:


Queue Number - номер очереди на который будет идти звонок.
Queue Name - имя очереди.
Static Agents: Тут можно выбрать extensions(или другие функции типа MiscDestinations, ходят легенды что если написать туда номер мобильного и в конце поставить значек #, оно будет переключать туда, но у меня почему то не получилось) которые постоянно находятся в этой очереди, соответственно на них всегда будут идти звонки.
Dynamic Members: Уже интереснее… Я буду использовать это для начальника службы СТП т.к. он на телефоне сидит, но не всегда имеет время отвечать абонентам, чтобы лишний раз его не дергали можно обеспечить вход и выход из очереди, также это может понадобится если допустим оператор работает на 2 отдела и периодически переключается из очереди отдела продаж, в очередь поддержки или что то в этом роде. Добавив сюда extension мы мало что получим - чтобы подключиться к очереди надо набрать на телефоне №очереди* (у нас 1000) и потом набрать свой extension и #, после чего будет сообщено что вы подключены к очереди и будете принимать звонки из неё. Для выхода из неё я набираю 1000** потом свой номер 100# - после чего слышу, что от очереди меня отключили.

Ring Strategy: стратегия дозвона, позволю себе облениться и прикреплю скриншот с русским переводом.


Join Announcement: Тут можете выбрать одну из записей, достаточно удобно если у вас звонок попадает с какого то номера на очередь звонков в которой надо всего лишь поприветствовать клиента и назвать имя компании в которую он звонит, далее клиент ожидает соединения с оператором.
Call Recording: формат записи звонков в очереди, у меня wav.
Max Wait Time: время максимального нахождения в очереди, после которого абоненту посоветуют позвонить позднее.
Agent Timeout: Время в течении которого будет звонить телефон оператора. Если стоит линейная стратегия дозвона, то после данного промежутка времени будет переключение на следующего оператора.
Retry: Через сколько секунд пробовать позвонить оператору снова. Важная галка если делать очереди со звонком на мобильный, когда надо чтобы телефон позвонил один раз в течении скольких то секунд и чтобы оператор мог сбросить вызов, после чего звонок пойдёт на назначение при не ответе - там нужно выбрать без повтора.
Agent Announcement: Тут можно выбрать сообщение которое будет сообщаться оператору в трубку, перед тем как его соединит с абонентом, например если оператор сидит в 2-3 очередях одновременно - ему может говорить с какой именно очереди на него пришел звонок.
Frequency: Насколько часто сообщать абоненту его номер в очереди.
Announce Position: Сообщать позицию в очереди или нет.

Для создание приветствия заходим Applications-Announcements:


Тут всё очень просто.
Description: Название.
Recording: Выбор записи которая будет произнесена.
Repeat: Количество повторов.
Allow Skip: Разрешать пользователю сбрасывать приветствие нажатием клавиш.
Destination after playback: Куда переводить звонок после окончания приветствия.

Интересная функция Applications-Follow Me:


Создается на основе какого либо Extension и даёт возможность переадресовывать звонок куда либо ещё. Используется когда к примеру вас нет на месте, на ваш телефон переключили какого то абонента, а вы ушли на обед, эта менюшка может переключить звонок на ваш личный мобильный телефон и заодно решить проблему когда согласно политике дозвона через транк который будет звонить вам передается как имя звонящего номер абонента который собственно и звонит. Тогда транк ругается что недопустимый CID, тоесть номер звонящего. Внизу есть настройка Change External CID Configuration, тут можно выбрать нужный режим чтобы ваш транк заработал. Очень распространённая проблема кстати на многих форумах. Детально останавливаться на настройках не буду т.к. они дублируют многие настройки очереди описанные выше.

IVR Name - Имя
IVR Description - Описание
Announcement - Приветствие которое будет произноситься.
Direct Dial - Прямой набор номера Extension, если он известен звонящему.
Timeout - Время в секундах после окончания приветствия, по истечении которого будет переключено на Destination по таймауту.
Invalid Retries - Количество попыток неправильного набора цифр.
Invalid Retry Recording - Запись воспроизводимая при неправильном наборе.
Append Original Annoucement - Воспроизводить главное приветствие после сообщения о неправильном наборе цифр.
Invalid Recording - Сообщение которое воспроизведется после исчерпания попыток неправильного ввода, но до переключения на назначения при неправильных попытках ввода.
Invalid Destination - Куда закинуть абонента который нажимал много неправильных кнопок.
Timeout Retries - Количество повторов меню после истечения таймаута.
Timeout Retry Recording - Сообщение после истечения таймаута и до сообщения попробовать снова.
Append Original Annoucement - Добавлять оригинальное сообщение меню после сообщения о таймауте.
Timeout Recording - Сообщение после сообщения о таймауте и до отправления абонента по назначению по таймауту.
Timeout Destination - Куда переключать по таймауту.
IVR Entries - Тут задаются по каким номерам куда перенаправлять.

Заходим Applications - Misc Destination:


Description: Название
Feature Code: Код по которому будет вызываться. У меня монтажники с личными мобильными забиты на 30Х номера.
Feature Status: ВклВыкл.
Destination: назначение. Тут у меня выбраны Misc Destination с телефонами монтажников, и потом на каждого созданы очереди в статических агентах которых, указаны как раз номера Misc Application. Сделано это для того, чтобы если монтажник не взял трубку, можно было переключить на кого нибудь ещё.
Applications - Time Group даже описывать нечего, только упомяну что вначале создается одна запись допустим время работы офиса в будние с 8.00 до 17.00, потом сохраняется, открывается ещё раз справа и тогда появляется кнопка - чтобы добавить дополнительный временной промежуток, например ещё и в субботу с 10.00 до 15.00.


После создания Time Group можно создать Applications - Time Condition:


Time Condition name: Имя.
Time Group: выбирается группа из прошлого меню.
Ну и 2 направления - если совпадает и если не совпадает.
Чтобы наглядно показать как это всё работает у меня покажу схему:


Я не претендую на правильность того что сделал. Ещё 2 месяца назад я ничего не знал о телефонии. Когда искал в рунете статьи, не смог найти чего то масштабного, что помогло бы мне настроить телефонию до состояния - оно работает. Так что возможно тут много ошибок и работает оно не оптимально, но во всяком случае надеюсь поможет новичку настроить сервер до рабочего состояния.