asterisk что это за программа
Возможности
Что такое Asterisk
Это проект с открытым исходным кодом компании Digium, первоначально начатый Марком Спенсером. Asterisk обладает всеми возможностями классической АТС, поддерживает множество VoIP протоколов и предоставляет функции голосовой почты, конференций, интерактивного голосового меню (IVR), центра обработки вызовов (постановка звонков в очередь и распределение их по агентам используя различные алгоритмы), запись CDR и прочие функции. Для создания собственной функциональности можно воспользоваться собственным языком Asterisk для написания диалплана, написав модуль на языке C, либо воспользовавшись AGI, который является гибким и универсальным интерфейсом для интеграции с внешними системами обработки данных. Выполняемое через AGI может быть написано на любом языке программирования.
Asterisk распространяется по условиям двойной лицензии, благодаря которой одновременно с основным кодом, распространяемым по открытой лицензии GNU General Public License, возможно создание закрытых модулей, содержащих лицензируемый код. Например модуль для поддержки кодека G.729.
Операционные системы
Приложение работает на операционных системах GNU/Linux, FreeBSD и Solaris и предназначено для создания решений компьютерной телефонии. Имя проекта произошло от названия символа *, который в Unix и DOS операционных системах обозначает совпадение любой последовательности символов в именах файлов.
Протоколы
Asterisk обеспечивает достаточное количество протоколов для поддержки соединений между традиционными системами телефонии и ИП сетями включая H.323, Session Initiation Protocol (SIP), Media Gateway Control Protocol (MGCP), and Skinny Client Control Protocol (SCCP).
Разработан также специальный Inter-Asterisk eXchange (IAX) VoIP протокол для связи между серверами Asterisk, который обеспечивает передачу голоса и данных прозрачно через различные гетерогенные сети. Использование ИП-протокола позволяет Asterisk посылать различные данные, такие как URL или картинки и фото в процессе разговора, интегрируя различные виды информации.
Структура Asterisk полностью модулярна, интерфейс командной строки позволяет перегружать отдельные модули и их конфигурации не нарушая работы в целом и не разрывая установленные соединения, а также выгружать и загружать интерфейсы, файлы и кодеки. Делает прозрачным соединение между всеми поддерживаемыми интерфейсами, объединяя различные телефонные системы в единую сетевую среду.
Аппаратная часть
Asterisk не требует никакого специального оборудования для Voice over IP. Почти все устройства различных производителей VoIP оборудования можно подключить без особых проблем. Для использования цифрового и аналогового телефонного оборудования Asterisk поддерживает широкий спектр оборудования, в котором особое место занимают PCI платы Digium, содателя Asterisk.
Благодаря открытой лицензии, Asterisk активно развивается и поддерживается тысячами людей со всей планеты. В течение последних двух лет Asterisk приложения активно развиваются в Соединенных Штатах и Европе. В том или ином виде Астериск занял прочное место на рынке IT-технологий (более 1000 компаний, центры поддержки, online-консультации). Многие компании применяют Asterisk в своих серийных VoIP устройствах, например компании Linksys, Nateks и т. п.
Asterisk для дома
Что такое Asterisk и зачем он нужен дома
Asterisk это открытая виртуальная PBX (телефонный коммутатор). Подробнее про Asterisk можно почитать в блоге Asterisk IP-PBX. Началось все с того, что я получил довольно крупный счет от местной телефонной компании за меджугородные переговоры. Вариантов платить меньше было собственно два: либо покупать карты IP телефонии и звонить с домашнего телефона по карте, либо звонить с ПК через SIP провайдеров. Первый вариант неудобен тем, что надо искать и покупать карты нужного провайдера IP телефонии, а второй тем, что привязан к компьютеру. Решение пришло, когда я узнал про Asterisk. Его можно было подключить и к городской телефонной линии и к SIP провайдеру и к домашнему стационарному телефону. Дома у меня уже имелся сервер, на котором можно было все установить.
Установка и настройка
Итак, первым делом надо установить Asterisk. В дебиане это делается исключительно просто. Надо всего лишь установить пакет asterisk. Я рекомендую ставить версию 1.6 из squeeze(testing на данный момент, в последствии это будет версия 6.0) дистрибутива дебиана, так как для него есть addon chan_mobile, но об этом позже.
Про найстройку SIP подключений и dialplan’ов есть много рускоязычных статей, поэтому я не буду на этом останавливаться.
Во вторых надо подключить Asterisk к городской телефонной линии и к домашнему телефону. Для этого компания Digium выпускает специальные PCI и PCI-e карты. Стоят они достаточно дорого, но на eBay можно найти их аналоги выпущеные китайской компанией OpenVox, которые стоят намного дешевле. Я приобрел двухпортовую PCI-e карту OpenVox A400E с одним FXO портом и одним FXS портом.
Далее, настройка катры:
chan_dahdi.conf:
[trunkgroups]
[channels]
switchtype=national
usecallerid=yes
hidecallerid=no
callwaiting=yes
callwaitingcallerid=yes
threewaycalling=yes
transfer=yes
echocancel=yes
busydetect=yes
;callprogress=yes
adsi=yes
context=phones
signalling=fxo_ks
faxdetect=both
channel => 1
context=incoming-city
signalling=fxs_ks
faxdetect=both
channel => 2
Настройка SIP:
sip.conf:
[general]
register => login:password@provider
[authentication]
[user_login]
type=friend
context=phones
host=dynamic
secret=user_password
callerid=»User»
[sip]
type=friend
username=sip_login
secret=sip_password
callerid=SIP
host=provider
nat=no
fromuser=
fromdomain=provider
dtmfmode=rfc2833
insecure=very
context=incoming-sip
disallow=all
allow=alaw
sip_login, sip_password, provider — это соответственно ваш логин пароль и провайдер.
user_login, user_password — логин и пароль для подключения SIP телефона к Asterisk.
Простой extensions.conf:
[globals]
[default]
exten => s,n,Answer()
exten => s,n,Playback(tt-weasels)
exten => s,n,Hangup()
[phones]
exten => s,n,Answer()
exten => s,n,WaitExten(30)
exten => _0.,1,NoOp()
exten => _0.,n,Goto(outbound-city,$
exten => _NXXXXXX,1,NoOp()
exten => _NXXXXXX,n,Goto(outbound-city,$
exten => _NXXNXXXXXX,1,NoOp()
exten => _NXXNXXXXXX,n,Goto(outbound-sip,$
exten => t,1,Playback(vm-goodbye)
exten => t,n,Hangup()
exten => i,1,Playback(invalid)
exten => i,n,Hangup()
[incoming-sip]
exten => s,n,Answer()
exten => s,n,Dial(SIP/user_login)
exten => s,n,Hangup()
[incoming-city]
exten => s,n,Answer()
exten => s,n,Dial(DAHDI/1)
exten => s,n,Hangup()
[outbound-sip]
exten => _XXXXXXXXXX,1,Dial(SIP/$[7$
exten => _XXXXXXXXXX,n,Hangup()
[outbound-city]
exten => _0.,1,Dial(DAHDI/2/$
exten => _0.,n,Hangup()
exten => _NXXXXXX,1,Dial(DAHDI/2/$
exten => _NXXXXXX,n,Hangup()
Такой extension.conf позволяет звонить с домашнего телефона на семизначные номера и номера начинающиеся на 0 через городскую телефонную сеть, а на междугородние номера через SIP провайдера.
Дополнительные возможности
1. Запись всех телефонных разговоров
Для этого надо в dialplan (extensions.conf) вставить вызов приложения MixMonitor.
[phones]
exten => s,n,Answer()
exten => s,n,MixMonitor(phone-$
exten => s,n,WaitExten(30)
Записи разговоров будут складываться в папку /var/spool/asterisk/monitor
2. Прием и передача факсов
exten => fax,1,ReceiveFax(/var/spool/asterisk/fax/$
exten => fax,n,Hangup()
Задержка на 5 секунд после Answer() необходима, для того, что бы Asterisk распознал сигнал входящего факса и переключился на extension fax.
Не забудте указать faxdetect=both в chan_dahdi.conf.
Входящие факсы будут складываться в формате TIFF в папку /var/spool/asterisk/fax
Существуют скрипты, позволяющие автоматизировать процесс приема/передачи факсов с конвертацией в PDF и обратно, а так же отправкой принятых факсов на e-mail.
3. Фильтрация звонков по CALLERID
Для того, чтобы работал CALLERID мне пришлось отдельно заказывать соответствующую услугу у телефонного оператора. К счастью она бесплатна, но подключали мне ее пару дней. Если CALLERID работает, то можно управлять исполнением диалплана в зависимости от номера с которого приходит звонок.
[incoming-city]
exten => s,1,Wait(2)
exten => s,n,GotoIf($[«$
exten => s,n,Dial(DAHDI/1)
exten => s,n,Hangup()
exten => s,1000,Wait(600)
exten => s,n,Answer()
exten => s,n,Congestion()
exten => s,n,Hangup()
В этом примере звонки с номера 5555555555 игнорируются.
Важное замечание: CALLERID передается до того как трубка поднята, а сигналы факса передаются после того как трубка поднята. Поэтому для устойчивого приема сигнала факса надо поставить задержку после Answer, я для устойчивого приема CALLERID иногда приходится добавлять задержку до Answer.
4. Подключение к сети GSM
[adapter]
id=blue
address=00:11:22:33:44:55
Где вместо 00:11:22:33:44:55 адрес вашего Bluetooth адаптера.
Запускаем консоль Asterisk и ищем телефон:
server*CLI> mobile search
Address Name Usable Type Port
66:77:88:99:AA:BB Nokia Yes Phone 13
Добавляем в mobile.conf секцию для телефона:
[GSM]
address=66:77:88:99:AA:BB
port=13
type=phone
adapter=blue
context=incoming-gsm
Где вместо 66:77:88:99:AA:BB адрес вашего телефона, а вместо port=13 надо вписать порт на котором ваш телефон работает. После этого можно перезагрузить модуль chan_mobile и проверить, что все работает.
server*CLI> module unload chan_mobile
server*CLI> module load chan_mobile
server*CLI> mobile show devices
ID Address Group Adapter Connected State SMS
GSM 66:77:88:99:AA:BB 0 blue Yes Free Yes
В диалплан надо добавить входящий и исходящий контексты:
[phones]
exten => _913NXXXXXX,1,NoOp()
exten => _913NXXXXXX,n,Goto(outbound-gsm,$
[incoming-gsm]
exten => s,n,Answer()
exten => s,n,Dial(DAHDI/1)
exten => s,n,Hangup()
[outbound-gsm]
exten => _NXXNXXXXXX,1,Dial(Mobile/GSM/$
exten => _NXXNXXXXXX,n,Hangup()
Звонки на мобильные номера сибирского региона будут направляться через GSM.
Важное замечание: не забудте спарить сервер с вашим телефоном. Это делается с помощью команды /usr/bin/bluetooth-agent
Заключение
У Asterisk много дополнительных возможностей, о которых не сказано в этом топике. Для примера можно привести: голосовые меню и интеграция с системой синтеза голоса Festival, голосовые почтовые ящики, постановка звонков в очередь, и т. д. Но этим возможностям сложно придумать применение в быту, поэтому мы их опускаем. Возможно читатели придумают как еще можно использовать домашний Asterisk PBX.
Asterisk. Начало
На написание этой статьи меня побудило практически полное отсутствие how-to по настройке Астериска, с понятными новичку примерами. В сети можно найти кучу информации по настройке IVR, по настройке авторизации SIP-пользователей через LDAP, мануалов по созданию HA-кластеров с Астерисками внутри, etc., но нет ни одной статьи о том, как завести его с нуля, да и еще с примерами. Практически везде предлагается сразу же использовать все возможности, которые предлагает Астериск, а если убрать часть функционала, предлагаемого в мануале, то в большинстве случаев это приведет к получению неработоспособной конструкции. Эта статья — результат хождения по граблям… чтения мануалов. Если вы находитесь в такой же ситуации, что и я пару лет назад — добро пожаловать под кат.
И так, ситуация: вы только что узнали про Астериск и его возможности, и захотели использовать его у себя дома, или ваше руководство захотело IP-телефонию в офис.
Первое что нам необходимо — сервер с установленной операционкой. По ряду причин я выбрал для своих серверов CentOS 6. Все примеры будут с привязкой к этой ОС, так как именно на ней получаются наиболее стабильные сервера. Тем не менее, я ни коим образом не пытаюсь ограничить вас выборе. Астер нормально заведется и под Debian-ом, и под Arch-ем, и даже на FreeBSD. Замечу: желательно не пользоваться гипервизорами на начальном этапе, так как вы можете получить «металлический» голос, либо его полное отсутствие. Про таймеры и прерывания расскажу в следующей статье, так как их описание и настройка выходит за рамки этой статьи. В том случае, если свободного сервера у вас нет и без виртуальной машины не обойтись, обязательно ставьте x86-го гостя.
После того, как вы установили операционку на сервер, можно приступить к установке Астериска. Добавляем репозитории Didgium:
Важное замечание: цифра в конце строки указывает на мажорную версию Астериска. В примере будет установлена наиболее свежая версия из 12-й ветки, доступная в репозиториях.
После установки перезагружаем сервер и заходим в шелл Астериска:
Обратите внимание на ключи, c которыми запускается шелл. Количество ключей «v» влияет на количество выводимой информации при звонке, их количество варьируется от 1 до 14.
Если установка прошла успешно и Астериск запустился, вы увидите вот такое приглашение:
Поздравляю, Астериск установился и готов к работе. Но пока что шелл нам не нужен, поэтому пишем exit.
Для того, чтобы сэкономить ваше время и сделать материал понятным, рассмотрим теорию на конкретном примере, а также разберем основные термины, которыми вам придется оперировать при настройке, при общении с саппортом оператора и своими коллегами. Для примера мы заведем двух внутренних пользователей с номерами 100 и 101, и двух операторов телефонии. Один из операторов будет предоставлять нам городские номера через транк с регистрацией, другой будет обеспечивать доступ к направлениям дальней связи, используя транк без регистрации.
Первое что вам требуется сделать — создать пиров в файле /etc/asterisk/sip.conf. Открываем его:
И сразу переходим в конец файла. Вставляем следующий текст:
Мы завели двух внутренних пиров с номерами 100 и 101. Разберем эти настройки, так как их понимание — ключ к успешному внедрению Астериска.
[internal], это имя шаблона, а (!) указатель шаблона.
Почему сразу начинаем использовать шаблоны? Потому что они сокращают время настройки и уменьшают количество текста с конфигурационном файле, а для понимания они очень просты.
Доступные параметры: «peer», «user» и «friend». Очень часто встречается ошибочное мнение относительно того, чем они отличаются. Многие считают, что параметр «user» разрешает только исходящие, «peer» — только входящие звонки, а «friend» разрешает звонки в обе стороны. Это не так. Использование ключа «peer» отключает проверку соответствия имени пользователя и пароля при звонке. При использовании параметра «peer», Астериском проверяется только соответствие IP-адреса и номера порта источника вызова, при использовании «user» — проверяется поле username, а проверка адреса источника не производится. Параметр «friend» заставляет проверять поле username и IP-адрес источника.
insecure=invite,port
invite — отключается аутентификация при входящем звонке.
port — отключается проверка порта источника.
При первоначальной настройке пропишите оба ключа.
Контекст, в котором будут обрабатывается исходящие звонки от этого устройства. Подробности чуть ниже.
Имя SIP-домена. Для первоначальной настройки укажите IP адрес сервера с Астериском.
IP-адрес пира. В случае использования авторизации по логину и паролю — ставьте dynamic. Конкретный IP указывается только в том случае, если настройки пира используются для транка без регистрации.
Указываем разрешенные кодеки.
В нашем примере первая строка запрещает использование всех кодеков, а вторая — разрешает g711-a. Настройки кодеков индивидуальны для каждого случая, однако, большинство Российских и Украинских провайдеров используют g711a и g729. Последний — пропиетарный, и Астериском поддерживается лишь в Passthrough-режиме (то есть, невозможен транскодинг).
Эта строка заставляет Астериск опрашивать устройство или софтфон пакетами OPTIONS. Необходим для мониторинга и траблшутинга.
Запрещает пересылать медиа напрямую между устройствами. Рекомендую ставить «no», для упрощения настройки.
Говорим Астериску, что пир не за натом. Описание ключей и вариантов их использования, если сервер за ним, выходит за рамки статьи. Про варианты обхода расскажу в следующей статье.
[100](internal)
secret=XXX
[101](internal)
secret=XXX
Тут мы задаем имя пира и берем настройки из шаблона. Единственные уникальные параметры в нашем примере — имя пира и пароль.
На этом мы закончили настраивать внутренних пиров, перейдем к настройке стыка с операторами. Добавим 2 записи в конец sip.conf:
Не буду расписывать значения каждой строки, т.к. все настройки идентичны настройкам внутренних пиров, за исключением поля host. В том случае, если Астериск выступает в роли клиента (а для сервера оператора наш астериск является клиентом), нам нужно указать адрес сервера оператора или его dns-имя.
Добавим второго оператора:
Отличий тоже никаких, за исключением отсутствия строк username и secret, так как, напомню, второй оператор не использует регистрацию.
Осталось настроить регистрацию на сервере оператора №1. Для этого в файле sip.conf, перед секцией описывающей настройки оператора вставим следующую строку:
Синтаксис, для неподготовленного человека, выглядит сложным, поэтому не заморачивайтесь и просто позвоните в саппорт провайдера и узнайте у них о том, как регистрироваться на сервере Астериском, либо попросите выслать настройки. Как правило, большинство операторов без проблем высылают пример конфигурации под свои софт-свитчи.
Наверняка вы редактировали файлы конфигурации под пользователем с ограниченными правами. Если это так, то Астериск не сможет получить доступ к файлу конфигурации, поэтому пишем:
На этом настройка пиров закончена, ее достаточно для работы в минимальной конфигурации, сохраняем и закрываем файл и возвращаемся в шелл Астериска командой:
В шелле Астериска пишем команду:
Теперь вы можете зарегистрировать на своем Астериске пользователей с логинами 100 и 101. Проверяется состояние регистрации следующей командой:
Если вы все настроили правильно, то увидите примерно вот такой вывод:
Если вы это видите, то, поздравляю, ваши устройства или софтфоны успешно зарегистрировались и Астериск увидел сервера операторов.
Состояние регистрации проверяется командой:
Если регистрация прошла успешно, то вы должны увидеть вот такой вывод:
На этом настройка пиров закончена, перейдем к настройке диалплана. Диалплан — это сердце Астериска, с помощью него обрабатываются абсолютно все звонки. Астериск понимает несколько языков, но в нашем примере мы будем использовать стандартный, появившийся в самых первых релизах Астериска. Файл конфигурации хранится в файле /etc/asterisk/extensions.conf.
Откроем его командой:
В стандартных файлах конфигурации хранится много дефолтных правил. Они нам не нужны, поэтому очистим содержимое и пропишем следующее:
Это параметры необходимые для нормального чтения диалплана, поэтому менять их не следует.
Начнем с простого. Нам нужно позвонить с номера 100, на номер 101. Для этого нужно прописать правило, сразу после секции globals:
Разберем эту строку.
[office] — имя контекста, в котором обрабатываются звонки от пира.
exten => — указатель начала шага.
_1XX — маска. На маске остановимся чуть подробнее. С помощью нее сортируются все звонки, попадающие в контекст диалплана.
Маска использует набор паттернов для сортировки звонков по caller-id:
Маска начинается с символа «_», который означает что это шаблон. В случае, если вы забудете указать его, Астериск примет 1XX за вызываемый номер и передаст Dial-у паттерны вместо номера телефона, и звонок не состоится.
1 — номер действия.
Dial — это приложение. В диалплане можно использовать более 200 различных приложений, которые используются для манипуляций со звонками. Сейчас, в самом начале, мы будем использовать только одно приложение — Dial. Из названия понятно, что оно используется для совершения звонков.
/ — разделитель для передаваемых аргументов.
Каждый из параметров разделяется запятыми. В нашем примере используются трехзначные номера, поэтому в маске должно быть 3 паттерна. В случае, если вы захотите использовать иную длину нумерации, то пишите в маске нужное количество паттернов. Теперь сохраняем файл, открываем шелл астериска и пишем команду:
Если возникли проблемы с доступом к файлу, то пишем:
И снова перезагружаем диалплан через шелл Астериска.
Теперь пробуем звонить. Если вы все правильно настроили, то пир с номером 100 дозвонится до пира с номером 101. Сейчас мы можем звонить внутри офиса, между пирами, которые работают в контексте office. Для того что бы позвонить в город, нам нужно написать правило для исходящих звонков через первого оператора. Прописываем его в контекст office, выглядит оно так:
Перезагружаем диалплан и пробуем звонить в город.
Теперь нам надо принять входящий звонок. Сделаем новый контекст в диалплане, пишем в конец файла:
Поясню что означает «s». Это стандартная маска в Астериске, под которую попадают абсолютно все вызовы. То есть, если мы используем транк с регистрацией, входящий caller-id будет «s».
Сохраняемся и перезагружаем диалплан. Теперь мы можем принять входящий звонок через оператора, предоставляющего нам городской номер.
Сейчас нам понадобилось позвонить на сотовый телефон, с федеральным номером. Допишем еще одну строку в контекст [office]:
Сохраняемся, перезагружаем диалплан и звоним. Все. Теперь мы можем полноценно использовать услуги оператора, предоставляющего городской номер.
Однако, тут кроется небольшая проблема, которая возникнет при звонке на сотовые телефоны других регионов. Так как номер телефона федеральный, то все звонки пойдут через первого оператора. Поэтому уместно уменьшить размер масок в диалплане. К примеру:
С такой конструкцией все звонки на телефоны с кодами из диапазонов 890982XXXXX-890999XXXXX и 8901421XXXX-8901651XXXX пойдут через первого оператора. Не совсем удобно, соглашусь с этим. В будущих статьях выложу конфигурацию диалплана для автоматического выбора оператора в зависимости от направления звонка, так как подобное опять же выходит за рамки этой статьи.
Теперь нам осталось пустить междугородние звонки через второго оператора. Добавляем строку в контекст [office]:
Как вы заметили, тут появились новые приложения, которые обрабатывают звонки. Set(CALLERID(num)=74991234567) — так как мы используем транк без регистрации, то это значит что мы должны отсылать оператору caller-id. Этот номер не обязательно должен существовать. Тут мы просто представляемся провайдеру и не более. Какой номер подставлять — зависит от оператора. Некоторые предоставляют услугу подмены caller-id на номер другого оператора, для совершения исходящих вызовов по межгороду или для зоновуй связи. За подробностями обращайтесь к оператору. same => n — указатель, который позволяет не писать каждый раз маску и номер действия. К примеру:
Во втором случае все гораздо проще, не так ли?
На этом все, мы настроили Астериск. Теперь мы можем звонить в город, на сотовые, по межгороду и у нас есть внутренняя связь между пирами. Получаем вот такой, вполне рабочий диалплан:
Asterisk – система компьютерной телефонии уровня предприятия
Я хочу рассказать о свободном решении для компьютерной телефонии от компании Digium. Asterisk – это ATC созданная хакерами (в первоначальном смысле этого слова), а точнее, это супер конвергентная платформа компьютерной телефонии, распространяемая по лицензии GNU GPL, изначально разрабатываемая Марком Спенсером (Mark Spenser), позже ставшим президентом и техническим директором компании Digium. Благодаря коммерческой поддержке Его компании и лицензии GNU GPL Asterisk активно развивается и поддерживается тысячами людей со всей планеты.
Asterisk поддерживает
Протоколы
Аудио кодеки
Название | Скорость передачи, Кбит/с | Необходимость лицензии |
---|---|---|
G.711 | 64 | Не нужна |
G.726 | 16, 24, 32 или 40 | Не нужна |
G.729A | 8 | Нужна (не нужна для транзита) |
GSM | 13 | Не нужна |
iLBC | 13,3 (кадры по 30 мс) или 15,2 (кадры по 20 мс) | Не нужна |
Speex | Переменная между 2,15 и 22,4 | Не нужна |
G.723.1 | 6.4 Кбит/с (кадр имеет размер 189 битов, дополненных до 24 байтов) и 5,3 Кбит/с (кадр имеет размер 158 битов, дополненных до 20 байтов). Режим работы может меняться динамически от кадра к кадру | Нужна (не нужна для транзита) |
MP3 |
Видео кодеки
Asterisk работает с ОКС-7 (Общеканальная сигнализация №7, в Европе известной как SS7 – Signaling System №7) — это набор сигнальных телефонных протоколов, для организации мультисервисной (интеллектуальной) сети.
Презентация освещающая работу с SS7 с astricon.net Автор Мэттью Фредриксон (Matthew Fredrickson)An introduction to SS7 and its support in Asterisk — pdf
Важные моменты для выбора
Производительность Asterisk систем
Опытные данные производительности систем представлены на форуме [ru] и оригинальный текст [en].
Основные рекомендации такие 1
Назначение | Кол-во каналов | Минимальная конфигурация |
---|---|---|
Любительская система | не более 5 | 400 MГц, 256 МБ RAM |
SOHO-система | от 5 до 10 | 1 ГГц, 512 МБ RAM |
Малая бизнес система | до 25 | 3 ГГц, 1 ГБ RAM |
Средняя или большая система | более 25 | 2 ЦП или несколько серверов в распределенной архитектуре |
Иксы рекомендую не ставить, так как с Asterisk они будут конкурировать за ресурсы.
Установка и настройка Asterisk
ссылки на 32-bit версии, но доступны и 64–bit
Если планируется использовать только VoIP, то достаточно пакета Asterisk, но рекомендуется установить все пакеты.
Дополнительно, можно установить
Необходимые пакеты Linux
Небольшое отступление
Против всего выше описанного, существует также программный продукт AsteriskNOW доступна бета 1.5 – это специализированный дистрибутив Linux уже включающий Asterisk со всем необходимым ПО, плюс web–based GUI. Этот дистрибутив также распространяется по лицензии GNU GPL и свободен для скачивания 32-bit и 64-bit.
Скриншоты можно посмотреть на официальном сайте.
Особой популярностью и любовью пользуется дистрибутив Trixbox — это программный комплекс, основанный на CentOS и Asterisk, основной задачей которого является создание в кротчайшие сроки сервера IP телефонии.
На данный момент доступна версия 2.6.2. Этапы установки можно подсмотреть на сайте voiceip.com.ua.
Дистрибутив Elastix от PaloSanto Solutions по функциональности не намного обходит Trixbox Community Edition. Распространяется по лицензии GNU GPL. Основой Elastix послужил CentOS 5 с ядром 2.6.18. Основу системы VoIP составляет Asterisk 1.4.18, разработчики дополнили его утилитами собственной разработки и модулями сторонних производителей. В качестве системы биллинга использован переработанный A2Billing. В поставку входит и сервер Openfire 3.4.2 обеспечивающий обмен сообщениями по протоколу XMPP/Jabber. Также в комплекте дистрибутива поставляются две CRM (Customer relationship management) — SugarCRM и VTigerCRM
Обзор и установку можно подсмотреть в статье Linuxoid.
Продолжим
Загружать статью общими вопросами установки и настройки Asterisk не буду, тем более, что в сети есть замечательные статьи, подробно рассказывающие о каждом из этапов. Не смотря на то, что статьи написаны 3 – 4 года назад, поверьте, они не теряют своей актуальности, не спорю, версии сменились с 1.2 аж до 1.6, сменилось даже название телефонного драйвера и функционал существенно расширился, но Вас это не должно пугать.
Моя рекомендация – MUST READ:
Asterisk: организуем автоматическое распределение поступающих вызовов – рассматриваются вопросы организации очереди обработки вызовов, так необходимой в службах работающих с клиентами. Автор Сергей Яремчук
Вопросы безопасности Asterisk обсуждаются в статье Безопасный Asterisk Автор Максим Литницкий — ПРОШУ УДЕЛИТЬ ЭТОМУ БОЛЬШОЕ ВНИМАНИЕ
К сожалению, в статьи по разным причинам, не вошли важные аспекты Asterisk, поэтому попробую обратить Ваше внимание на них.
AGI, EAGI, DeadAGI и FastAGI
Asterisk Gateway Interface (AGI) – это шлюзовой интерфейс посредством которого внешние программы(сценарии) могут влиять на логику диалплана Asterisk. Сценарии AGI (по аналогии с CGI для http серверов) могут быть написаны практически на любом языке программирования, взаимодействуют с Asterisk посредством описателей файлов STDIN (стандартный ввод), STDOUT(стандартный вывод) и STDERR(стандартная ошибка) и реализуют расширенную логику работы с БД и внешними ресурсами.
EAGI – это AGI, который помимо всего дает возможность сценарию читать входящий аудиопоток, к примеру, для нужд распознавания речи.
DeadAGI – это AGI который корректно исполняется для «мертвого» — разъединенного канала.
FastAGI – позволяет запустить удаленный AGI сценарий через TCP сокет – это уменьшает нагрузку системы и перекладывает её на другой сервер, к примеру, множество серверов Asterisk, могут использовать единые AGI – сценарии.
Наиболее популярными языками программирования для AGI являются Perl, Python и PHP.
Скажу только, то, что для этих и других языков программирования существуют “обёртки” – фрэймворки, позволяющие абстрагироваться от логики запрос-ответ AGI и программировать на более высоком уровне абстракции.
Asterisk Manager Interface (AMI) – это программный интерфейс, позволяющий соединиться с Asterisk через TCP/IP и полностью контролировать Asterisk, используется для связи c CRM–системами.
Aynchronous Javascript and XML (AJAM) – доступен с Asterisk версии 1.4, предоставляет web-браузеру или любому другому приложению связаться с AMI через HTTP. Используется в web–based GUI для Asterisk плюс в том, что он использует библиотеку Prototype, что избавляет разработчиков от многих кросбраузерных проблем.
Интеграция с Базами Данных
Важным моментом является способность Asterisk хранить свою конфигурацию и состояние в БД. Эта ключевая особенность позволяет строить, по истине, потрясающие распределенные телефонные системы.
Asterisk архитектуры реального времени
Хранение файлов CDR в Базе Данных
Interactive Voice Response (IVR) – это уже неотъемлемая часть любой платформы и бизнеса занимающимся обслуживанием клиентов. Стоимость коммерческих IVR систем (Avaya, Cisco, Genesys, Nortel или Dialogic) достаточна, высока, а Asterisk просто создан для этого.
К сожалению, русского женского голоса для Asterisk нет (бесплатного). После инсталляции Asterisk говорит с нами голосом Эллисон Смит (Allison Smith) — это порядка 300 промтов, плюс еще 600 в дополнении asterisk–sounds.
На ресурсе ivrvoice.ru можно скачать и использовать в любых мирных целях, включая бизнес, русские промты для Asterisk.
Видео и Asterisk
Ссылки по работе с Видео в Asterisk [ru] и [en – оригинал].
Интересный ресурс sip.fontventa.com, жаль, что последнее обновление 19 января 2007 года, содержащий исходный код библиотеки для работы с протоколом H.324 использующимся в UMTS 3G видео звонках.
DUNDi
Distributed Universal Number Discovery(DUNDi), создан Марком Спенсером – “это одноранговая система для поиска интернет–шлюзов в сервисы телефонии, является полностью распределенным и вообще не имеет никакой централизованной службы”. В некотором роде – это протокол маршрутизации для VoIP.
DUNDi – позволяет запрашивать у равноправных участников сети альтернативный VoIP маршрут к добавочному номеру или телефонному номеру ТфОП. DUNDi можно использовать как в локальной сети – для упрощения управления добавочными номерами в системах Asterisk крупной компании, так и в глобальной сети, но тут для доступа нужно подписать Общее Пиринговое Соглашение (General Peering Agreement — GPA), его также можно найти в подпапке исходного кода doc/. GPA имеет обязательную юридическую силу, для защиты участников сети от людей злоупотребляющих протоколом.
Подробности — это темы будущих статей.
Книги
(Максим, чтоб мы без тебя делали 😉
[en] trixbox Without Tears The Dumb-Me guide — свободна для скачивания
Видеоматериалы
[en]Free Video Tutorials for trixbox FreePBX and Asterisk Systems
Информационные ресурсы
Форумы (малый список)
Магазины (малый список)
Компании предлагающие Asterisk — решения
Официальный mailing lists для тех, кому интересен Asterisk.