Настройка asterisk с нуля для windows

Во-первых, дисклаймер Настройке Asterisk посвящены сайты, форумы и целые порталы типа voip-info.org. Но всегда есть люди, для которых эта тема – дремучий лес, а...

Время прочтения
17 мин

Просмотры 338K

Во-первых, дисклаймер

Настройке Asterisk посвящены сайты, форумы и целые порталы типа voip-info.org. Но всегда есть люди, для которых эта тема – дремучий лес, а запустить продукт надо «вчера». Ещё полтора месяца назад я про Asterisk знал только то что он есть. Данный труд призван лишь несколько облегчить жизнь тем, кто окажется в такой же ситуации после меня. В нём могут быть ошибки любой степени «чайниковости». Если вы гуру настройки Asterisk – укажите на ошибку, я поправлю, потомки будут вам благодарны.

Сначала было слово

В некоторый момент времени моими усилиями стратегия развития инфраструктуры компании была перевёрнута буквально с ног на голову. Были очерчены цели и задачи и стало понятно, что нам нужна динамичная, мобильная серверная инфраструктура, чтобы экономить деньги, чтобы можно было в случае каких-то проблем быстро восстанавливаться и/или подниматься в другом месте, чтобы проще было ухаживать за железом и т.п.

Затем было дело

В общем, на бумаге всё было красиво и легко. Дело встало только за развёртыванием.
Сначала были закуплены два простеньких сервера. Core i7-930, 12GB памяти и по 12ТБ на SATA-дисках. На эти серверы был установлен бесплатный Xen Server и развёрнуты виртуальные серверы и рабочие станции для удалённых сотрудников.
В качестве внешнего хранилища используется QNAP-овский NAS, который достался в наследство.
Терабайтные локальные хранилища нужны только для хранения медиа-банка, который довольно велик. Сами серверы все вместе весят меньше 3-х терабайт.
Одним из серверов стал Asterisk на замену старичку Panasonic TDE-200. Т.к. компании необходима дешёвая связь, прямые номера в разных странах, и бесплатные переговоры между сотрудниками, то альтернативы ему за 12 шекелей в общем-то нет.

День первый: Make World

Развёртывать Asterisk было решено на родной для Citrix Xen операционной системе CentOS. Тот же RedHat, только сбоку. Оговорюсь сразу: я всю жизнь админил Windows, а *nix-ами только “игрался” в виртуалках, не считая пары веб-серверов на железе. Поэтому, данное развёртывание Asterisk в Citrix Xen отдаёт некоторой наивностью с точки зрения умудрённых опытом людей.
В общем, я пошел по проверенному пути: открывается на ноуте подробная how-to инструкция для чайников из официальных мануалов и выполняется на сервере буквально и безинициативно. Играть в героев-наладчиков можно будет позже, когда всё будет настроено и работать в состоянии “по умолчанию” и будет сделан первый full backup.

День второй: yum install asterisk -y

Не то чтобы я был очень удивлён, но, тем не менее, я пошёл к знакомому связисту за советом, когда обнаружил, что живых астерисков аж три практически самостоятельных форка: 1.4, 1,6 и 1.8. У каждого из них свои тараканы и примочки. Т.к. я не обольщался надеждой одолеть астериск с наскоку, то решил поставить версию 1.4, как у друга, дабы иметь максимально возможную совместимость конфигов. Хотя, впоследствии, пришлось подниматься до 1.6 из-за отсутствия поддержки TCP в 1.4, когда возникла такая потребность.
Для этого к CentOS был прилажен digium-овский репозиторий и Asterisk ставился из него.
Установка прошла вполне ожидаемо, без сучка и задоринки. В основном, использовался толковый пошаговый roadmap с voip-info.
Сразу же были поправлены iptables, чтобы разрешить трафик по SIP-портам.
Не сразу же, но будущим поколениям рекомендую установить и настроить немедленно пакет по имени fail2ban. Совершенно не лишняя программа на сервере, выставленном в интернет. У меня через день после установки весь Тайвань в drop ушел, судя по iptables.

День третий: ТЗ на функционал АТС

Начинаем самое интересное – планирование. Перед любым процессом настройки надо записать и структурировать все пожелания заказчика и обязательно подписать соглашение, чтобы избежать в дальнейшем конфликтов вида “нет, я говорил совсем другое”. В моём случае заказчик — это компания, в которой я работаю, но это ничего не меняет. Пишем техническое задание на функционал, обсуждаем его с ответственными людьми, утрясаем разногласия и подписываем финальный вариант.
ТЗ на конфигурацию получилось такое:

  • Нумерация телефонов четырёхзначная.
  • Первая цифра номера — признак страны расположения офиса.
  • Нумерация в каждом отделе начинается с первой цифры очередной сотни.
  • Каждый отдел является отдельной звонковой группой.
  • Если вызываемый абонент любым образом недоступен для вызова, то звонок перекидывается на всю группу.
  • Логика обслуживания входящих вызовов:
    1. Поднять трубку.
    2. Проиграть приветствие.
    3. Проиграть рекламу про текущие акции.
    4. Проиграть варианты вызова различных отделов или предложить набрать номер абонента.
    5. Начиная с пункта 2 ожидать ввода каких-либо команд.
    6. После окончания п.4 ждать ввода команд ещё 10 секунд.
    7. В случае отсутствия команд снова проиграть варианты вызова.
    8. Если абонент всё-равно тупит, то перекинуть звонок на секретаря.
  • Пользователям, которым необходим такой сервис, прикрутить голосовую почту. В этом случае, если пользователь любым образом недоступен для вызова, перекинуть звонок на голосовую почту.
  • По умолчанию, разрешены вызовы только на Россию и Италию — страны, где в основном работает наша компания. Остальные направления открываются по мере надобности самыми узкими масками, т.к. все мы помним страшные истории про “кубинских телефонистов” и не хотим, чтобы в один прекрасный день у нас АТС внезапно во все свои 50 каналов начала звонить в Сьерра-Леоне по 14 долларов в минуту для каждого канала.

На первый взгляд задание простое, а на практике на его согласование ушло довольно много крови. Особенно, на согласование запрета всех направлений, кроме явно разрешенных. С этим клиенту пришлось согласиться только перед лицом неизбежной, в противном случае, необходимости конфигурации VPN на каждом подключающемся к АТС устройстве. Просто я стараюсь придерживаться максимально простых и понятных конфигураций, а клиенту всегда кажется, что добавить какой-то функционал к системе — это “всего-лишь пару кнопок нажать”.

День четвёртый: nano sip.conf

Начинается самое интересное: процесс конфигурации.
Чтобы не затягивать и без того длинную статью, отягощая её подробным описанием мук начальной конфигурации и последующего тюнинга, я просто покажу текущие мои конфиги с комментариями что к чему.

[general]
context=default				;контекст по умолчанию
allowguest=no					;никаких гостей, мы никого не ждём
allowoverlap=no				;Этот параметр определяет разрешаем мы или нет передачу вызова с дополнительными цифрами. Мы – не разрешаем.
alwaysauthreject=yes				;Этот параметр означает, что все ошибки для внешнего клиента выглядят одинаково – ошибка авторизации. Призван осложнять взлом АТС.
useragent=Orgue de Barbaris		;Это – как мы представляемся у других. Я назвался по имени первого патефона, чтобы облегчить техподдержке провайдеров поиск диалогов с моей АТС, т.к. периодически приходится с ними общаться.
defaultexpiry=360				;Интервал обязательной перерегистрации клиентов.
callevents=yes				;Это на будущее, чтобы клиент мог поиграть в управление music on hold
limitonpeer=yes				;Считаем исходящие и входящие вызовы пиров вместе.
tcpenable=yes					;Разрешаем TCP протокол для SIP.
rtptimeout=60					;Сколько времени клиент может не откликаться, прежде чем будет кикнут из системы.
language=ru					;Язык системы. Используется для голосового меню.
bindport=5060					;Порт по умолчанию. Можно изменить для усложнения вычисления и взлома АТС, но решение спорное.
bindaddr=0.0.0.0				;у меня стоят нули, т.к. АТС имеет два интерфейса и на обоих висят клиенты.
srvlookup=yes					
tos_sip=cs3					; <a href="http://www.voip-info.org/wiki/view/Asterisk+sip+tos">http://www.voip-info.org/wiki/view/Asterisk+sip+tos</a>
tos_audio=ef

disallow=all					;сначала запрещаем все кодеки
allow=alaw					;затем, разрешаем только те, что хотим использовать. Порядок значения не имеет.
allow=g729
allow=g723
allow=ulaw

dtmfmode=rfc2833				;На Asterisk-ах рекомендуется ставить info, но мой итальянский провайдер настоял на rfc.
rtpholdtimeout=300
rtpkeepalive=5

canreinvite=no					;Этот параметр запрещает клиентам общаться напрямую. Общение происходит только через сервер. У меня это сделано так потому что мобильные клиенты используют платные клиенты с протоколом g.729а, а стационарные сидят на бесплатных клиентах без оного. Поэтому, я предпочёл напрячь сервер транскодингом alaw<->g.729a на лету в пользу качества связи для мобильных клиентов. Тем более что Core i7-930 вообще не замечает этой нагрузки.

externip=xxx.xxx.xxx.xxx			;Указываем наш внешний IP. Параметр нужен вообще-то, если только Asterisk прячется за NAT, но у меня он есть. Нехай будет.

allowexternaldomains=yes			;Читаем <a href="http://www.voip-info.org/wiki/view/Asterisk+config+sip.conf">тут</a> и решаем, надо-ли вам это.
domain=mydomain.com,default		
fromdomain=mydomain.com

;Здесь должны быть прописаны пиры до провайдеров. Все встречавшиеся мне SIP-провайдеры имеют стандартный шаблон секции конфига для Asterisk и предлагают именно его для прописывания в конфиги. Я так и сделал и у меня всё работает. Поэтому, я не буду приводить здесь их все, дабы не смущать никого. Покажу только мегафоновский шаблон для мультифона просто в качестве примера.

register => tcp://номер@multifon.ru:пароль:номер@sbc.megafon.ru/номер~60 ;это пример стандартного SIP-пира до провайдера сип-телефонии для входящей связи

[multifon]	;это тот же пир, только уже для исходящей связи
type=peer
secret=пароль
username=номер
host=sbc.megafon.ru
port=5060
insecure=port,invite
call-limit=1
context=incoming
canreinvite=no
qualify=yes
transport=tcp
dtmfmode=inband

;А теперь – самое интересное. Клиентов у нас довольно много, поэтому, чтобы не прописывать каждому одно и то же, мы используем шаблоны. Выглядит это так:

[defaults](!)
 canreinvite=no		;голосовой трафик только через сервер
 disallow=all
 allow=alaw
 allow=g729
 allow=g723

[peer](!,defaults)
 type=peer
 host=dynamic		;разрешаем цепляться откуда угодно
 qualify=yes			;постоянно держим связь с клиентом
 nat=yes			;предполагаем, что клиент может быть за NAT
 call-limit=1			;ограничиваем кол-во одновременных звонков
 busylevel=1			;сообщаем, когда отбивать с сигналом “занято”
 rtpkeepalive=5		;интервал в секундах для пинга клиента.

[ext1000](peer)
secret=secretsecretsecret

[ext1001](peer)
secret=secretsecretsecret

[ext1002](peer)
secret=secretsecretsecret

;Если нам надо что-то изменить или добавить, то выглядеть это будет так:

[ext1101](peer)                                         
secret=secretsecretsecret
transport=tcp					;разрешаем отдельному пиру SIP по TCP.
День пятый: nano extensions.conf

Не менее интересный файлик, в котором прописывается вся логика АТС. Очень полезными для понимания логики dial-plan-ов оказались вот эти статьи: http://inhibitz.ucoz.ru/publ/9-1-0-21, http://asterisk-pbx.ru/wiki/doku.php/asterisk_dialplan
Итак, поехали:

[general]
static=yes			;запрещаем изменения конфигов из CLI
writeprotect=yes		;запрещаем изменения конфигов из CLI

[globals]

;Далее идут макросы, которые определяют логику роутинга звонков.

[macro-dial-ext]	;макрос “что делать при наборе 4-значного экстеншна”
 exten => s,1,Answer()	;поднимаем трубку
 exten => s,2,Dial(SIP/ext${ARG1},20,tT)	;набираем номер, переданный как аргумент к макросу с таймаутом 20 секунд и разрешаем трансфер звонка любой стороне.
 exten => s,3,Goto(s-${DIALSTATUS},1)	;отрабатываем код полученный от приложения Dial.
 exten => s-NOANSWER,1,Macro(group-dial,${ARG1:0:2}00)	;перекидываем на группу
 exten => s-BUSY,1,Macro(group-dial,${ARG1:0:2}00)
 exten => s-CONGESTION,1,Macro(group-dial,${ARG1:0:2}00)
 exten => s-CHANUNAVAIL,1,Macro(group-dial,${ARG1:0:2}00)
 exten => _s-.,1,Hangup		;кладём трубку

[macro-dial-vip]	;макрос для пользователей голосовой почты
 exten => s,1,Answer()
 exten => s,2,Dial(SIP/ext${ARG1},20,tT)
 exten => s,3,Goto(s-${DIALSTATUS},1)
 exten => s-NOANSWER,1,Voicemail(${ARG1})	;вместо группы перекидываем на голосовую почту.
 exten => s-BUSY,1,Voicemail(${ARG1})
 exten => s-CONGESTION,1,Voicemail(${ARG1})
 exten => s-CHANUNAVAIL,1,Voicemail(${ARG1})
 exten => _s-.,1,Hangup

[macro-secretary]	;макрос для отработки вызова секретаря
 exten => s,1,Answer()
 exten => s,3,Dial(SIP/ext2222,15,tTm)                       ; вызываем секретаря
 exten => s,n,Goto(s-${DIALSTATUS},1)
 exten => s-NOANSWER,1,Macro(group-dial,${ARG1})	;перекидываем на группу из агрумента к макросу
 exten => s-CHANUNAVAIL,1,Macro(group-dial,${ARG1})
 exten => s-BUSY,1,Macro(group-dial,${ARG1})
 exten => s-UNKNOWN,1,Macro(group-dial,${ARG1})
 exten => s-CONGESTION,1,Macro(group-dial,${ARG1})
 exten => s-CHANUNAVAIL,1,Macro(group-dial,${ARG1})
 exten => _s-.,1,Hangup

[macro-group-dial]	;макрос для вызова группы
 exten => s,1,Answer()
 exten => s,n,Queue(${ARG1})	;вызываем queue, состав которой прописан в queues.conf
 exten => s,n,Goto(s-${DIALSTATUS},1)
 exten => s,n,Hangup
 exten => s-BUSY,1,Playback(all-circuits-busy-now)
 exten => s-BUSY,n,Macro(secretary,1100)	;если все заняты, возвращаем звонок секретарю
 exten => s-NOANSWER,1,Macro(secretary,1100)
 exten => s-CHANUNAVAIL,1,Macro(secretary,1100)
 exten => s-CONGESTION,1,Macro(secretary,1100)
 exten => _s-.,1,Hangup

;Теперь прописываем правила для выхода наружу.

[default]                                               ; Default context including all specials
include => incoming
include => multifon 			;включаем в default контекст для мультифона

;Логика обработки вызовов внутренних экстеншнов
exten => _[123]X00,1,Macro(group-dial,${EXTEN})
exten => _1[1-689]XX,1,Macro(dial-ext,${EXTEN})
exten => _17XX,1,Macro(dial-vip,${EXTEN})
exten => _[2]XXX,1,Macro(dial-vip,${EXTEN})
exten => _[3]XXX,1,Macro(dial-ext,${EXTEN})

;Далее у нас идёт логика обработки входящих вызовов.
;Весьма полезным для понимания оказался пример от Станислава Беликова у него в блоге:
;<a href="http://sbelikov.ru/2009/03/golosovoe-menyu-v-asterisk/">http://sbelikov.ru/2009/03/golosovoe-menyu-v-asterisk/</a>
;Здесь необходимо заметить, что используются самостоятельно записанные приветствия вместе с чужими звуковыми файлами. Хороший набор русских голосовых файлов качается отсюда: <a href="http://www.ivrvoice.ru/">http://www.ivrvoice.ru/</a>
;Инструкция по самостоятельной конвертации файлов для Asterisk тут: <a href="http://www.voip-info.org/wiki/view/Convert+WAV+audio+files+for+use+in+Asterisk">http://www.voip-info.org/wiki/view/Convert+WAV+audio+files+for+use+in+Asterisk</a>

[incoming]
 exten => s,1,Goto(s-${CHANNEL(peername)},1)	;во-первых, определяем откуда вызов и отправляем звонок в нужную секцию. Это нужно для приветствий на разных языках.

 exten => s-sipcity,1,Answer()		;это итальянский пир
 exten => s-sipcity,2,Background(it-greet)	;которому мы проигрываем итальянское приветствие
 exten => s-sipcity,3,Background(advert)
 exten => s-sipcity,4,Background(it-route)
 exten => s-sipcity,n,Waitexten()
 exten => s-sipcity,n,Macro(group-dial,1100)

 exten => номер,1,Answer()				;это мультифон-пир
 exten => номер,2,Macro(dial-vip,2001)		;вызовы идут сразу человеку в екстеншн

 exten => _s-zebra,1,Answer()			;это русский пир
 exten => _s-zebra,2,Background(ru-greet)		;поэтому, русское приветствие
 exten => _s-zebra,3,Background(advert)
 exten => _s-zebra,4,Background(ru-route)
 exten => _s-zebra,n,Waitexten()
 exten => _s-zebra,n,Macro(group-dial,1100)

 exten => s-eng,1,Answer()				;это английский пир
 exten => s-eng,2,Background(en-greet)		;им - по-аглицки
 exten => s-eng,3,Background(advert)
 exten => s-eng,4,Background(en-route)
 exten => s-eng,n,Waitexten()
 exten => s-eng,n,Background(en-route)
 exten => s-eng,n,Waitexten()
 exten => s-eng,n,Macro(group-dial,1100)

 exten => 5000,1,Answer()			;Это специальный внутренний номер для проверки логики IVR, а так же записанных рекламок. Очень удобно. 
 exten => 5000,2,Background(ru-greet)
 exten => 5000,3,Background(advert)
 exten => 5000,4,Background(ru-route)
 exten => 5000,5,Waitexten()
 exten => 5000,6,Background(ru-route)
 exten => 5000,n,Waitexten()
 exten => 5000,n,Macro(group-dial,1100)

;Здесь прописаны действия IVR на команды
 exten => 1,1,Macro(group-dial,1100)		;если нажато “1”, то отправляем на группу 1100
 exten => 2,1,Macro(group-dial,1200)
 exten => 3,1,Macro(group-dial,1300)
 exten => 4,1,Macro(group-dial,1400)
 exten => 5,1,Macro(group-dial,1500)
 exten => 6,1,Macro(group-dial,1100)                    
 exten => 9,1,Goto(s-sipcity,1)		;Если выбран вызов меню на другом языке - отправляем туда
 exten => 0,1,Goto(s-eng,1)
 exten => _1[1-689]XX,1,Macro(dial-ext,${EXTEN})	;обрабатываем вызов екстеншнов
 exten => _17XX,1,Macro(dial-vip,${EXTEN})
 exten => _2XXX,1,Macro(dial-vip,${EXTEN})
 exten => _3XXX,1,Macro(dial-ext,${EXTEN})

 exten => i,1,Goto(s-zebra,4)			;инвалидов возвращаем в начало
 exten => t,1,Goto(s-zebra,4)			;таймауты – туда же

;Здесь у нас прописываются правила набора номера
[zebra]

;Я договорился с “Зеброй”, что номерами мы обмениваемся в формате e164. Т.е. как в мобильниках, только без “+”. Например: 74951234567.

exten => _99ZXXXXXX,1,Dial(SIP/zebra/7495${EXTEN:2})	;Здесь прописано правило вызова обычного семизначного московского номера в коде 495. “99” – это “префикс выхода на внешнюю линию”, ZXXXXXX – Это любой 7-значный набор цифр, но первая цифра не должна быть меньше 1. Далее идёт вызов через пир zebra с дописыванием в начало номера цифр 7495, в то же время убирая “99” из переданного в Asterisk набора.

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

;#############################
;      International
;#############################

;Italy
exten => _9939.,1,Dial(SIP/zebra/${EXTEN:2})
exten => _99+39.,1,Dial(SIP/zebra/${EXTEN:3})
;Внимательные люди обратят внимание, что одно и то же прописано дважды, с плюсом и без. Это сделано для удобства пользователей SIP на мобильниках. Не все клиенты умеют нормальный rewrite, так что получается по две записи на направление.

;Belorussia
exten => _9937517XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _99+37517XXXXXXX,1,Dial(SIP/zebra/${EXTEN:3})

;Kazakhstan
exten => _997727XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _99+7727XXXXXXX,1,Dial(SIP/zebra/${EXTEN:3})

;Ukraine
exten => _99380XXXXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _99+380XXXXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})

;#############################
;          cellular
;#############################
exten => _99790[3-9]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _99791[0-79]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _99792[569]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _997930XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _99793[1-4678]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _99795[0-3]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _99796[0-578]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _99798[0-5789]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _997997XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})

;#############################
;    cities starting at 3
;#############################
exten => _99730[12]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _99734[1-35-79]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _99735[1-3]XXXXXXX,1,Dial(SIP/zebra-out/${EXTEN:2})
exten => _99738[1-5]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _997388XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _99739[01]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _99739[45]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})

;#############################
;    cities starting at 4
;#############################
exten => _997401XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _99741[1356]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _99742[13467]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _99747[1-5]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _99748[1-7]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _99749[1-689]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})

;#############################
;   cities starting at 8
;#############################
exten => _99781[1-8]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _997820XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _997821XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _99783[13-6]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _99784[0-8]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _99785[15]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _99786[1-35-7]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
exten => _99787[1-37-9]XXXXXXX,1,Dial(SIP/zebra/${EXTEN:2})
День шестой: nano Voicemail.conf, nano queues.conf

Пришла пора приделать голосовую почту.

Здесь, на самом деле, даже конфиги выкладывать нет смысла, ибо там почти ничего не меняется, а что меняется — глубоко специфично. Главной проблемой для меня была настройка MTA для передачи почты через нестандартный порт и с smtp-авторизацией. Убив пол-дня на курение форумов, в конце-концов поставил exim и настроил передачу почты через него.
Два момента, на которых я хотел бы заострить внимание – голосовые сообщения у меня убиваются на Asterisk-е сразу после отправки. Просто, чтобы не забивали винт. Ибо актуальность такого сообщения измеряется минутами, а заставлять пользователей следить ещё и за голосовым ящиком мне кажется глупым. Кроме того, я поставил формат wav49 для сообщений, т.к. лень было заморачиваться со сжатием файлов в mp3, да и на почтовике суровые правила бесчеловечно поступают с мультимедиа-приложениями – все mp3 заменяются на спектрумовский «Exolon» в виде mp3.

С queues.conf тоже всё просто:

[general]
persistentmembers = yes		;очередь постоянная, никто никуда не выходит
autofill = yes				;просто так надо
autopause = no			;если мембер не отвечает, то ему всё-равно звонить
monitor-type = MixMonitor



;Пример одной очереди
[1100] 					;екстеншн очереди
strategy = ringall			;стратегия обзвона группы – звонят все сразу
eventwhencalled = yes		;прилада для внешних мониторов типа Fop2
ringinuse = no				;занятых не дёргаем
timeout = 20				;таймаут
retry = 1				;повторный вызов всей группы через 1 секунду
wrapuptime = 0			;какая передышка у агента очереди после звонка (сек)
maxlen = 0				;сколько людей в очереди на ответ. 0=бесконечно

;ниже – просто список мемберов очереди
member => SIP/2222
member => SIP/1101
member => SIP/1102
member => SIP/1103
member => SIP/1104
member => SIP/1105
member => SIP/1106
member => SIP/1107
member => SIP/1108
member => SIP/1109
member => SIP/1110
День седьмой: Послесловие

Во-первых, хотелось бы отметить собственные ошибки а так же очевидные минусы такого решения:
– Ошибка: для пользователей был закуплен мешок обычных гарнитур, какие используются дома для общения по скайпу или в TS. Это совершенно неподходящее для офиса решение. Сидеть целый день с воткнутой в ухо гарнитурой обычному человеку очень утомительно. А профессиональные операторские гарнитуры стоят как билет на орбиту. Кроме того, женский коллектив не приемлет гарнитур с оголовьем – “у нас причёски!”. Решение – USB-трубки или настольные SIP-телефоны для тех, у кого хороший бюджет.
– Ошибка: спешка нужна при ловле блох. Если вы не знаете что такое Asterisk и с чем его едят, то лучше начните его изучать прямо сейчас. Изучать тщательно. Потому что эти знания обязательно понадобятся, причём, как обычно, со сроком “чтоб вчера было готово”. Не факт, что вам надо будет ставить именно Asterisk, но общая теория VoIP и конструкций Dial-plan-ов вам очень пригодится. Мне пришлось буквально “пожарными” темпами всё ставить и осваивать на ходу из-за жёсткого конфликта с телефонной компанией-монополистом в нашем офисном центре, поэтому, не обошлось без факапов.
– Надёжность. Пока не отрастил себе седых волос за процессом настройки Asterisk, я мониторю АТС постоянно. Просто я не уверен ещё, всё-ли сделал правильно. Пару раз она у меня без причины переставала обслуживать клиентов и я теперь побаиваюсь оставлять её без присмотра.
– Факсов просто нет. Точнее, они как бы есть, но чисто для галочки. Нормальная работа с факсами очень затруднительна без использования железных плат, которых я избегаю для сохранения мобильности.
– Негарантированное качество связи. На каком бы широком канале вы ни сидели, всё-равно с завидным постоянством вы будете получать претензии на “булькающую связь”. Несмотря на стремительное развитие технологий и расширение каналов передачи данных, всё-равно регулярно случаются проблемы. Самый простой пример: небольшой отель в Италии, в котором находится представитель фирмы. В отель проведены целых 2Мбита ADSL-интернета с аплинком в 256к, который раздаётся бесплатно постояльцам через WiFi. Представитель связывается с офисом, используя данный канал, и связь отвратительна — постоянно булькает и вообще. Просто кто-то в отеле решил запостить в одноклассники пачку 12мпиксельных фотографий. Обычное дело.
– Если бюджет не очень большой и на настольные телефоны не хватает, то пользователям приходится осваивать новые методы работы с телефоном – с помощью программных звонилок типа Zoiper или PhonerLite. Кроме того, набирать *77 для перевода звонка их тоже напрягает, хотят “как раньше”, коротким нажатием на рычаг, которого теперь вообще нет.
– Так же моих пользователей раздражает необходимость набирать номера не “по-старинке” 810(кодстраны)(кодгорода)(телефон), а в формате е164. Я бы мог оставить и 810, но в этом случае номер обычного итальянского отеля становится просто космической длины: 998103912345678901. А в е164 он на три цифры короче.

В общем, подавляющее большинство проблем вызваны нежеланием пользователей жить в эпоху перемен. Начиная с ворчания и заканчивая откровенным саботажем. Я бы мог ещё пару страниц перечислять претензии пользователей, но это будет жёсткий оффтоп. Единственное, что можно порекомендовать в данном случае — планируйте переезд на Asterisk тщательно. Постарайтесь сделать его как можно менее неудобным для пользователей. Бизнесу невыгодно тратить оплачиваемое время людей на их обучение новым штукам, которые могли бы работать по-старому, если бы всё было нормально спланировано.

Теперь плюсы решения:
+ Первый и самый очевидный – деньги. Мне удалось сократить расходы на связь примерно в 15 раз. Раньше средний счёт за телефонию у нас был около 5 тысяч долларов в месяц. За прошедший после внедрения Asterisk месяц даже трёхсот долларов не набежало. Львиная доля экономии — разговоры между сотрудниками в разных странах.
+ Мобильность. Если вдруг что-то случается, не важно что именно – будь то новый Московский блэк-аут или просто пожар в здании – я поднимаю виртуалку с Астериском на любом хостинге, который умеет их импортировать, и просто сообщаю клиентам новый IP АТС. Попробуйте представить время недоступности телефонной связи с обычной телефонией.
+ Просто фантастическая гибкость решения и его почти полная бесплатность. Конечно, мы платим своим временем экономя деньги на решениях “из железной коробки”, но лично мне интересно было узнать, как же всё это работает.

Один вопрос, который я сам себе пару раз задавал и который наверняка бы появился в комментариях, если б я на него не ответил здесь: “Почему не поставил Elastix, FreePBX, PiaF или типа того? По роадмапу за 10 минут ставится и работает годами!” Ответ простой: за веб-мордой не видно леса. Да, это удобно, но чтобы преодолеть функционал веб-морды, придётся править нестандартные конфиги, рискуя поломать всё к чёрту одной запятой. А я даже близко не могу представить, что нам понадобится через год. Кроме того, с веб-мордой никогда не узнаешь что и как работает. Поэтому, чистый Asterisk, комсомольцы не могут без трудностей.

Сейчас у меня Астериск с такими конфигами работает вполне удовлетворительно. Есть досадные мелочи, типа эха при звонке на некоторые странные городские АТС, или отвратительная работа некоторых встроенных звуковых карт (будь проклят один популярный производитель бюджетных материнок), но это – дело житейское – решается USB-трубками, с которыми очень хорошо стыкуется бесплатный Zoiper Free.
В общем и целом, я и моё руководство довольны проделанной работой. Надо только ещё поработать надфилем и можно будет приступать к следующему проекту.

Что ещё осталось доделать, для полного счастья:
Поставить и настроить Fop2, чтобы пользователи могли видеть кто из сотрудников в каком состоянии, чтобы не было ситуации перевода звонка на занятого абонента, когда звонок автоматом перекидывается на группу и человек попадает совсем не туда, куда хотел.
Поставить систему мониторинга, чтобы в реальном времени отслеживать состояние АТС, звонков, очередей.
Поставить какую-нибудь крайне простую систему отчётности по звонкам. Задача стоит всего-лишь во внятной визуализации количества звонков для проверки счетов.

Asterisk под Windows: как скачать, установить и настроить через FreePBX за 15 минут


Бытует мнение, что для того, чтобы установить Asterisk, сначала нужно установить Linux на компьютер, или сервер. А что делать, если отказ от Windows невозможен? Просто установите Asterisk под Windows!

      Для этого нам понадобится:
1. Скачать бесплатную программу VirtualBox по этой ссылке,
2. Скачать готовый образ Asterisk для VirtualBox от нашей команды по этой ссылке,
3. Чай или кофе, чтобы расслабиться пока скачиваются эти два дистрибутива.

После загрузки:
•   Устанавливаем VirtualBox: Всё время жмем далее и со всем соглашаемся;
•   Далее в окне программы нажимаем «Файл» > «Импорт конфигураций». Указываем путь до скачанного образа;
•   После импорта нам останется запустить получившуюся виртуальную машину и приступать к настройке телефонии в офисе.

Что Вы получите:
В итоге Вы получите полнофункциональную систему телефонии Asterisk 13 с WEB интерфейсом FreePBX 14. Система телефонии работает под Windows.

Логины и пароли для готового образа FreePBX:
Web: admin / helloasterisk
SSH: root / helloasterisk

Видео по установке Asterisk под Windows:

Смотрите также: Продуманная настройка входящей связи

Что еще нужно сделать для телефонизации офиса?

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

Для чего?

Обычно, Директору, секретарю, или начальникам отделов требуется смотреть статистику звонков. Также им необходимо искать и прослушивать записи разговоров.
В решении этой задачи Вам поможет Windows программа HelloAsterisk.

Посмотрите обзор поиска звонков в программе HelloAsterisk:

Скачать программу HelloAsterisk Вы можете на этом сайте.

Присоединяйтесь к нам в соц. сетях:
https://vk.com/bolsheats
https://www.facebook.com/groups/1646205275419845/

Предположим что у нас есть небольшая организация, где работает около 50 сотрудников. Все они используют Asterisk для связи внутри компании и звонков наружу. Все настройки буду проводить на свежей Asterisk 18. В своей предыдущей статье я рассмотрел процесс установки Asterisk 18 на Centos 8. Давайте рассмотрим как происходит настройка Asterisk с нуля.

Учитывая тот факт что библиотека chan_sip не актуальна, будем рассматривать настройку через PJSIP. Старую библиотеку необходимо отключить (если включена) для исключения конфликтов.

Отключение chan_sip

В файле /etc/asterisk/modules.conf необходимо найти и убрать ; перед строкой noload => chan_sip.so

nano /etc/asterisk/modules.conf
noload chan_sip

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

Структура Asterisk

Настройка Asterisk происходит путем редактирования конфигурационных файлов. Располагаются они в директории /etc/asterisk/ . Перечислю основные файлы которые нам потребуются для начальной настройки.

  • pjsip.conf — файл настройки мультимедийной библиотеки PJSIP. В нем содержатся настройки регистрации, транков, пользователей
  • extensions.conf — в данном файле происходит настройка диалплана. Все параметры обработки вызова, переадресация, мелодии на удержании, настройка автосекретаря и многое другое.
  • asterisk.conf — основной конфигурационный файл, тут указаны пути к используемым папкам, параметры запуска Asterisk и т.д. Подробный разбор параметров данного файла есть тут
  • sip.conf — файл настройки устарелой библиотеки chan_sip. В работе его использовать не будем
  • cdr.conf — основные настройки ведения отчета о звонках Call Detail Record
  • rtp.conf — в данном файле определены настройки касательно протокола RTP (порты, поддержка ICE и т.д.)
  • features.conf — указываются параметры перехвата и парковки вызова, максимальное время набора и переадресации, DTMF коды абонентских функций
  • modules.conf — в данном файле содержится информация о модулях которые необходимо загружать при старте Asterisk, либо отключить их загрузку.
  • musiconhold.conf — настройка параметров конфигурации музыки на удержании
  • iax.conf — используется для настройки соединений по протоколу IAX. Данный протокол как правило используется для объединения между собой двух и более АТС
  • voicemail.conf — детальная настройка параметров голосовой почты
  • logger.conf — указаны детальные параметры журналирования работы Asterisk

Я перечислил лишь основные конфигурационные файлы Asterisk. Но их значительно больше. В повседневной жизни используется только два файла exntensions.conf и pjsip.conf

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

Для более детального вывода данных в консоль можно использовать ключ -v (я обычно использую -vvvvvv). Чем больше букв v указано, тем детальнее будет вывод информации в консоль. Запуск в режиме повышенной детализации:

Полный список консольных команд с описанием можно прочитать в моей статье

Подключение пользователей

Добавление новых пользователей происходит в файле pjsip.conf. Конфигурационный файл pjsip.conf состоит из секций. Имена секций указываются в квадратных скобках. Название секций может быть произвольным, кроме имен ENDPOINT и AOR которые должны быть одинаковые с заголовком SIP URI.

Перечислю возможные типы секций:

  • ENDPOINT — описывает опции SIP протокола и взаимодействует с модулями AOR, AUTH и TRANSPORT. Раздел ENDPOINT обязательно должен быть связан с одной или несколькими секциями AOR. В секции ENDPOINT указываются основные параметры SIP подключения (телефон, софтфон, транк и т.п.)
  • AOR — расшифровывается как Address of Record. Данная секция указывает как связаться с ENDPOINT. Без AOR секция ENDPOINT не работает. Тут указывается продолжительность регистрации, соответствие голосовой почте, MWI, настройки переодичности SIP сообщений для мониторинга состояния устройства. Получая запрос на регистрацию от устройства первичная обработка идет в AOR. Происходит поиск соответствия SIP заголовку To
  • TRANSPORT — в данной секции описываются настройки транспортного уровня с использованием протоколов UDP, TCP, WebSockets, а также шифрование TLS/SSL. Одну транспортную секцию можно настроить для использования множеством точек ENDPOINT. Либо, если необходимо, создать уникальный транспортный уровень для конкретной точки
  • System — определяются общие системные настройки PJSIP
  • Global — настраиваются глобальные параметры. Возможность включение дебага, изменение строки User Agent, параметр поля max forwards и т.п.
  • AUTH — данная секция используется для аутентификации и содержит настройки для входящих и исходящих регистраций. С этой секцией ассоциируются ENDPOINT и REGISTRATIONS. В случае необходимости разные ENDPOINT и REGISTRATIONS могут использовать общую секцию AUTH
  • REGISTRATION — обычно используется для регистрации транка от провайдера
  • DOMAIN_ALIAS — используется для указания псевдонимов используемых доменов
  • ACL — секция ACL используется для контроля входящих SIP соединений
  • IDENTIFY — указываются IP адреса конечных точек ENDPOINT
  • CONTACT — можно указать короткий контакт вместо SIP URI

В каждой секции есть опция type содержащая назначение секции в общей конфигурации.

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

Создадим учетную запись нашего первого пользователя в Asterisk. Пользователь может подключаться с SIP телефона либо софтфона. Для удобства я заполняю конфигурационные файлы добавляя новые данные в конец файла. Также очень удобно удалить все и создать чистый файл для удобства чтения. Откроем файл pjsip.conf для редактирования

nano /etc/asterisk/pjsip.conf

В конец файла добавим информацию о новом пользователе с добавочным номером 1000. Я всегда использую четырехзначные внутренние номера для дальнейшего возможного роста количества абонентов.

[tr-udp]
type=transport
protocol=udp
bind=0.0.0.0
allow_reload=true

[1000]
type=endpoint
context=from-internal
disallow=all
allow=alaw
transport=tr-udp
auth=auth1000
aors=1000
 
[auth1000]
type=auth
auth_type=userpass
password=parol
username=1000
 
[1000]
type=aor
max_contacts=2

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

[tr-udp] — является транспортной секцией. На это указывает запись type=transport

  • protocol — тип используемого протокола клиента
  • bind — IP адрес клиента. Можно указать конкретный IP чтобы с других адресов никто не мог использовать данную запись. Если необходимо можно задать и порт.
  • allow_reload — разрешить перенастройки транспортного уровня без перезагрузки Asterisk. По умолчанию без указания данного пункта с параметром true после изменения настроек необходимо рестартовать Asterisk

[1000] — это секция ENDPOINT. Как я писал выше название секции ENDPOINT соответствует названию секции AOR.

  • type — тип секции. В данном случае ENDPOINT
  • context — контекст диалплана. Данный параметр указывает куда будут направлены звонки приходящие на данный ENDPOINT
  • disallow — указывает какие кодеки необходимо запретить. В данном случае all — все кодеки
  • allow — кодеки разрешенные для использования. Строкой выше мы запретили все кодеки, текущей строкой разрешили только alaw
  • transport — указывает какую конфигурация использовать для траспорта. В нашем случае tr-udp что мы создали выше.
  • auth — объект аутентификации относящийся к данному ENDPOINT. В нашем случае это auth1000 дальше по файлу будет его описание
  • aors — объек AOR для этого ENDPOINT

[auth1000] — секция аутентификации

  • type — тип используемой секции
  • auth_type — тип используемой аутентификации. У меня используется логин и пароль
  • password — пароль от учетной записи
  • username — логин учетной записи

[1000] — AOR секция

  • type — тип секции
  • max_contacts — максимальное количество контактов которые могут использоваться с данной AOR

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

И введем команду повторной загрузки настроек из файла pjsip.conf

pjsip reload

Теперь запустим SIP телефон и настроем учетную запись 1000 на нём. В работе я использую софтфон MicroSIP. Он мне нравится за свою компактность и возможность работы в portable режиме.

Добавление пользователя 1000
Microsip user 1000 OnLine

Как видно на изображении выше мы удачно подключились к АТС. Но что делать если нам необходимо добавить не одного, а 50 пользователей? Если писать такой конфиг по каждому пользователю, потом очень сложно будет что-то найти. Для таких случаев есть шаблоны. Разберемся как они работают.

Создание шаблона

Использование шаблонов также полезно для разделения сотрудников из разных отделов с разным уровнем доступа. Название шаблона указывается в квадратных скобках [] затем идет (!)

;===============Шаблон отдела маркетинга
 
[marketing-endpoint](!)
type=endpoint
transport=tr-udp
context=from-internal
disallow=all
allow=alaw
 
[pass-auth](!)
type=auth
auth_type=userpass
 
[two-contact-aor](!)
type=aor
max_contacts=2

В шаблоне можно указывать все те же параметры что и при обычном создании пользователя. Я привел пример простого шаблона отдела маркетинга с указанием минимального набора настроек. Однако их может быть значительно больше, например: используемые кодеки, необходимость использования NAT, контекст, разрешенную лиюо запрещенную сеть для регистрации абонентов. В общем параметров может быль сколь угодно много, и писать все их для каждого пользователя дело не благодарное. Рассмотрим далее применение шаблона для создания пользователей.

Применение шаблона

Создадим трех пользователей отдела маркетинга с применением шаблона. Для использования шаблона необходимо справа от названия секции в круглых скобках добавить название шаблона.

;===============Добавочный номер 2000
[2000](marketing-endpoint)
auth=auth2000
aors=2000

[auth2000](pass-auth)
password=2000
username=2000
 
[2000](two-contact-aor)
 
;===============Добавочный номер 2001
[2001](marketing-endpoint)
auth=auth2001
aors=2001

[auth2001](pass-auth)
password=2001
username=2001
 
[2001](two-contact-aor)

;===============Добавочный номер 2002
[2002](marketing-endpoint)
auth=auth2002
aors=2002

[auth2002](pass-auth)
password=2002
username=2002
 
[2002](two-contact-aor)

Используя шаблон мы указываем только те параметры которые хотим поменять. Все параметры не указанные нами в каждой из секций будут браться из шаблона. Можно зайти под каждый из пользователей и проверить что все получилось.

Команда для вывода пользователей зарегистрированных на сервере

pjsip show aors
pjsip show auths
pjsip show endpoints
Маршрутизация вызовов

Однако, на данном этапе мы пока не можем совершать звонки. При попытке набрать любой номер будет ошибка. Для совершения звонков нам необходимо внести изменения в файл extensions.conf — основной рабочий файл. В нем настраивается маршрутизация вызовов Asterisk. В понимании телефонии и Asterisk не исключение это называется DIALPLAN.

Структура файла extensions.conf

Файл имеет две обязательные секции general и globals. Секции также указываются в квадратных кавычках. После двух обязательных секции идут секции вашего диалплана.

Рассмотрим параметры секции [general]

  • static — когда установлено значение no или не указано pbx_config перезапишет данный файл когда extensions будет изменен. Все комментарии в этом файле будут потеряны
  • writeprotect — если параметр static имеет значение yes, а параметр writeprotect=no то можно сохранить настройки диалплана через командную строку Asterisk «dialplan save»
  • autofallthrough — в случае когда параметр имеет значение yes и параметры вашего диалплана исчерпали возможности к дальнейшему действию, звонок будет завершен. Это происходит по умолчанию. Если значение будет no или не указано Asterisk будет ожидать действия от пользователя.
  • extenpatternmatchnew — установив параметр в значение true или yes будет использоваться новый алгоритм который будет искать лучшее совпадение паттерна. Увеличение скорости обработки по новому алгоритму повышается с увеличением количества обрабатываемых добавочных номеров. По умолчанию данный параметр отключено. Включайте на свой страх и риск.
  • clearglobalvars — если задан параметр clearglobalvars, глобальные переменные будут очищены и повторно обработаны при перезагрузке диалплана или перезапуска Asterisk. Когда параметр не установлен или имеет значение no глобальные переменные будут сохраняться при перезагрузке и даже при удалении из extensions.conf или одного из включенных в него файлов, будет использоваться предыдущее значение.

Перейдем к параметрам секции [globals]

В Asterisk могут использоваться как глобальные переменные так и переменные канала. Есть еще переменные окружения, они обеспечивают доступ из Asterisk к переменным окружения unix.

Глобальные переменные могут быть определены в секции [globals] либо с помощью команды SetGlobalVar в плане набора номера. Глобальная переменная отличается тем, что работает для всего файла exntensions.conf. Переменные канала используются в том диалплане в котором они определены.

В глобальных переменных удобно хранить длинные добавочные номера, время работы (при использовании автосекретаря) и другие часто используемые переменные. Пример секции [globals]

[globals]
MSK_time=08:00-19:00
MSK_week=mon-sat
RECEPTION=PJSIP/3010

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

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

[from-internal]
exten = 1000,1,Dial(PJSIP/1000)

Я написал контекст с названием from-internal далее указал что при звонке на добавочный 1000 будет происходить дозвон номера 1000 через интерфейс PJSIP. При создании пользователя Asterisk в файле pjsip.conf в разделе настройки endpoint мы указываем поле context=from-internal. Это означает что совершая вызов данный пользователь будет руководствоваться правилами указанными в контексте [from-internal] файла extensions.conf

Процесс вызова

Совершая вызов абонент будет искать в своем контексте правила набора указанного номера. В каждом контексте может быть большое количество добавочных номеров. К набираемому добавочному номеру правила применяются последовательно.

Формат записи такой: exten = имя,приоритет,приложение(параметры)

Расширим наш диалплан, добавив дополнительные пункты. И не забудьте, что при изменений файла extensions.conf необходимо чтобы Asterisk перечитал его. Для этого заходим в консоль и вводим команду dialplan reload

[from-internal]
exten = 1000,1,Answer() ; Поднимаем трубку
exten = 1000,2,Playback(demo-congrats)	; Проигрываем приветственное сообщение
exten = 1000,3,Dial(PJSIP/1000)	; Звоним на номер 1000

Как вы уже заметили, комментарии можно писать сразу после ;

При звонке на 1000 мы поднимаем трубку, проигрываем приветствие и последним действием будет звонок на добавочный 1000. Можно написать и так:

[from-internal]
exten = 1000,1,Answer()
exten = 1000,n,Playback(demo-congrats)
exten = 1000,n,Dial(PJSIP/1000)

Приоритет можно заменить буквой n но первый приоритет указывать необходимо обязательно. Можно еще немного оптимизировать наш диалплан.

[from-internal]
exten = 1000,1,Answer()
 same = n,Playback(demo-congrats)
 same = n,Dial(PJSIP/1000)

Используя same вместо exten можно не писать в каждой строке добавочный 1000. Но как и в случае с n в первой строке указывать exten обязательно.

Системные добавочные номера

  • s — при поступлении вызова в контекст, без указанного добавочного номера используют номер s (от слова start)
  • i — в случае когда абонент набирает не существующий добавочный номер вызов переходит на добавочный номер i
  • t — когда абонент долго не нажимает кнопку после запуска приложения WaitExten() вызов переходит на добавочный номер t. Время ожидания по умолчанию — 10 секунд
  • h — добавочный используемый при завершении вызова, когда уже закрылся медиаканал

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

Шаблоны номеров

Для удобства добавочные номера можно сопоставлять по шаблонам. Все шаблоны в диалплане начинаются со знака нижнего подчеркивания _

  • X — цифра от 0 до 9
  • Z — любая цифра от 1 до 9
  • N — любая цифра от 2 до 9
  • . — любой символ
  • [184-7] – цифры 1,8,4,5,6,7

Шаблон для звонков внутри организации по всем добавочным из 4 цифр будет выглядеть так:

[from-internal]
exten = _XXXX,1,Dial(PJSIP/${EXTEN})

Где _XXXX — любые 4 цифры, ${EXTEN} — переменная передающая набранный добавочный номер

Вложение контекстов

Есть одна особенность, Asterisk сначала сортирует добавочные (exten) и затем ищет первое совпадение. Чтобы при совпадении шаблонов заставить Asterisk звонить по нужному будем использовать вложенные контексты.

[from-internal]
include=long
exten = _XXXX,1,Dial(PJSIP/${EXTEN})

[long]
exten => _X.,1,Dial(PJSIP/${EXTEN}@sipnet)

В контексте from-internal сначала будет обрабатываться шаблон _XXXX затем вложенный контекст include=long

Увидеть в какой последовательности Asterisk обрабатывает диалплан можно введя в консоли команду dialplan show

dialplan show

Благодаря созданному диалплану все 4-х значные номера будут идти на локальных пользователей. Остальные номера пойдут через внешнего провайдера SIPNET. И чтобы все внешние звонки действительно пошли через SIPNET давайте его настроим в pjsip.conf

Настройка внешнего провайдера

Для проверки входящей и исходящей связи я буду использовать тестовый транк с регистрацией от SIPNET. Я настрою сам транк в файле pjsip.conf и правила маршрутизации звонков в extensions.conf

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

nano /etc/asterisk/pjsip.conf

Добавляем в конец файла регистрацию транка провайдера

[sipnet]
type=registration
transport=tr-udp
outbound_auth=sipnet
server_uri=sip:sipnet.ru
client_uri=sip:0042095477@sipnet.ru
retry_interval=60
 
[sipnet]
type=auth
auth_type=userpass
password=пароль
username=0042095477
 
[sipnet]
type=aor
contact=sip:sipnet.ru:5060
 
[sipnet]
type=endpoint
transport=tr-udp
context=from-sipnet
disallow=all
allow=alaw,ulaw
outbound_auth=sipnet
aors=sipnet
from_user=0042095477
from_domain=sipnet.ru
 
[sipnet]
type=identify
endpoint=sipnet
match=sipnet.ru

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

После добавления новых данных в файл не забываем зайти в консоль asterisk и перечитать конфиги

Настроим входящую маршрутизацию

Добавляем настройки маршрутизации входящей связи при звонке снаружи на наш номер SIPNET

nano /etc/asterisk/extensions.conf

Вставим следующий текс в конец файла

[from-sipnet]
exten = s,1,Answer()
 same = n,Wait(5)
 same = n,Playback(demo-congrats)
 same = n,Dial(PJSIP/1000&PJSIP/2000)

Я создал контекст from-sipnet указанный ранее при создании ENDPOINT sipnet. При поступлении входящего вызова (s -без доб номера) поднимать трубку, ожидать 5 секунд (Wait) затем проиграть приветственное сообщение. После окончания приветствия звонить одновременно на 2 добавочных 1000 и 2000.

Приветственное сообщение записать самим в формате wav с параметрами 8кГц, 16 Бит, Моно запись скинуть в папку и указать к ней путь, например

Playback(/opt/sound/my_sound)

Можно добавить обработку входящего вызова по времени.

[from-sipnet]
exten = s,1,Answer()
 same = n,Wait(5)
 same = n,GotoIfTime(08:00-18:00|mon-fri|*|*?work:outwork)
 same = n(work),Playback(/opt/work_music)
 same = n(work),Dial(PJSIP/1000&PJSIP/2000)
 same = n(outwork),Playback(/opt/outwork_music)
 same = n,Hangup()

В зависимости от текущего времени и дня недели если вызов совершен во временной промежуток указанный в GotoifTime будет переход на метку work. Все вызовы не попадающие под временной интервал будут отправляться на метку outwork.

На данном этапе мы создали обработку внутренних вызовов, входящих и исходящих внешних (городских) вызовов. В тестовом аккаунте проверить исходящие вызовы можно позвонив по телефону техподдержки 2009991

Считаю настройку для небольшой организации достаточной. Мы разобрали как происходит настройка Asterisk с нуля.

Смотрите видео по настройке

Хотите отблагодарить автора статьи? Это даст ему дополнительный стимул к написанию новых статей.

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

Лицензия Asterisk свободная, что позволяет пользоваться этой программой многим людям.

С каждым годом Астериск все больше и больше развивается, благодаря увеличению ресурсов.

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

Freepbx: настройка с нуля

Интерфейс Freepbhx нужен для более простой настройки Asterisk и управления VoIP-телефонией. Главное преимущество – человеку не надо исправлять самому все текстовые файлы. Эта программа помогает переводить язык программы в виде текста, который поймет пользователь. Для настройки Freepbhx надо установить программу на компьютер.

Для того чтобы установить интерфейс, требуется:

  1. Скачать FreePBX 13 Distro. Выбирать версию, опираясь на программное обеспечение компьютера.
  2. Записать образ системы на диск, используя утилиты.
  3. Изменить параметры загрузки системы.
  4. С этого диска загрузить машину.
  5. Выбрать версию PBX.
  6. Выбрать режим Full install
  7. Нажать ВК.
  8. Придумать и установить пароль.
  9. Перезагрузить компьютер и заходить в аккаунт как пользователь с root-правами.

Установка и настройка окажется простой, если соблюдать пошагово инструкцию.

Если нужна только VoIP-сеть, то можно установить только asterisk. Но лучшим вариантом станет установка трех пакетов.

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

сервер Asterisk<->chan_dahdi<-> Драйвер dahdi<-> Карта <-> Телефон/Коммутатор/Телефонная сеть

Библиотека libpri необходима для использования TDM-интерфейсов ISDN: PRI (PrimaryRateInterface) и BRI (BasicRateInterface). Libri делится на каналы по времени – Time Division Multiplexing.

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

Важно! Есть несколько условий для установки и настройки программы.

  • Версия ядра системы должна быть не ниже 2.6.
  • Обязательное наличие файлов заголовков в системе.
  • Присутствие компилятора gccctermcap и openssl.

Проверив все эти моменты, можно приступать к установке. Для этого надо перейти на сайте в Download и загрузить такие архивы:

  • «asterisk»
  • «asterisk-sounds»
  • «asterisk-addons»
  • «zaptel»
  • «libpri»

После этого скопировать файлы на сервер и разместить их в папке «/usr/src/.».

Далее надо запустить терминал в сервере.

Затем распаковать каждый архив командой «tar-xzf<имя >tar.gz».

Потом перейти в каждую папку при помощи команды «cd<имя>».

Закончив, надо выполнить определенные команды для настройки:

  • «./configure» (это подготовит программу к сборке)
  • «make» (команда для сборки)
  • «makeinstall» (установка программы)

Для установки необходимых пакетов не нужно прилагать особых усилий. Астериск обладает автоматизацией пакетов, поэтому для этого нужен скрипт install_prereq, который можно найти в подкаталоге contrib/scripts, где есть исходные коды.

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

Таким образом, при соблюдении всех действий Asterisk для чайников будет готов.

Как настроить Asterisk на Ubuntu

Соблюдая пошаговую инструкцию, можно просто установить Asterisk на Ubuntu:

  1. Надо скачать на Ubuntu.
  2. Установить пакеты для корректной сборки DAHDI и LibPRI.
  3. Загрузить исходник (необходимо ввести «wget…» вместе со ссылкой на загрузку.
  4. Распаковать программу при помощи команды «tarzxvf».
  5. Зайти в директорию с Asterisk.
  6. Ввести «contrib/scripts/install_prereqinstall», чтобы загрузить утилиты из Asterisk.
  7. Для запуска программы надо написать эту команду, добавив «-unpackaged».
  8. Повторно зайти в каталог с программой.
  9. Заставка появится при вводе «. /configure».
  10. Повторить все то же самое, что делают при запуске Asterisk.

Запуск Asterisk:

  1. Открыть конфигурационный файл: vi /etc/asterisk/asterisk.conf.
  2. Создать учетную запись asterisk в системе: useraddasterisk–m.
  3. Задать права: chown -R asterisk:asterisk /var/log/asterisk.
  4. Проверить конфигурацию: asterisk –c.

Запуск Астериск из скриптов загрузки:

su — asterisk -c asterisk

Сборка chanh323:

[asterisk@newtmp]$ cd asterisk-1.0.1

[asterisk@new asterisk-1.0.1]$ cd channels/h323

[asterisk@new h323]$ make

g++ -g -c -fno-rtti -o ast_h323.o -march=i686 -DPBYTE_ORDER=PLITTLE_ENDIAN -DN

DEBUG -DDO_CRASH —

DDEBUG_THREADS -pipe -Wall -fPIC -DP_LINUX -D_REENTRANT -D_GNU_SOURCE -DP_HAS_S

EMAPHORES -DP_SSL —

DP_PTHREADS -DPHAS_TEMPLATES -DPTRACING -DP_USE_PRAGMA -I../../include

-I/home/asterisk/pwlib/include/ptlib/unix -I/home/asterisk/pwlib/include

-I/home/asterisk/openh323/include -Wno-missing-prototypes -Wno-missing-declarations ast_h323.cpp

chan_h323.h:31: warning: `sockaddr_inbindaddr’ defined but not used arcr libchanh323.a ast_h323.o

[asterisk@new h323]$

[asterisk@new h323]$ cd ../..

Как установить Asterisk на Windows

  1. Скачать VirtualBox.
  2. Скачать Asterisk для VirtualBox.
  3. Установить VirtualBox.
  4. Нажать везде «Согласен».
  5. Нажать «Файл», а потом «Импорт конфигураций».
  6. Запустить машину и провести остальные настройки.

Совет! Более подробно с настройкой телефонии Астериск можно ознакомиться здесь:

Чтобы скачать пакеты голосовых сообщений, надо:

  1. Перейти в папку «contrib/scripts/» с помощью команды «cd».
  2. Открыть «get_mp3_source.sh».
  3. Ввести «makeinstall».
  4. Открыть консоль Asterisk.
  5. Сделать файлы при помощи «makesamples».
  6. Запустить функцию «service asterisk start».

Основным конфигурационным файлом является asterisk.conf. Отсюда берется информация о местоположении файлов в системе.

Файл конфигурации, который пригодится для набора некоторых команд:

  • conf (голосовые почтовые ящики при команде VoiceMail).
  • conf (конфедерация, применяемая установкой Festival).
  • conf (структура, необходимая для указания AlarmReceiver).
  • conf (настройка тонов с указанием Playtones).
  • conf (конфигурация, которая используется командой DUNDiLookup).
  • conf (конфигурация для того, чтобы установить очередь звонков и их параметров для команды Queue).

Файлы конфигурации каналов Asterisk:

  • conf (канал IАX2).
  • conf (канал SIP).
  • conf (канал DАHDi).

Частые ошибки в установке и настройке Asterisk

  • Не отключены анонимные звонки и использован контекст для плана нумерации.

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

sip.conf [general] allowguest=no

  • Отсутствие библиотеки sqlite или ее компонентов для разработчиков для сборки программ.

Чтобы решить эту проблему, надо использовать CentOS с пакетом sqlite-devel: yum -y install sqlite-devel

  • Не получается зарегистрировать Asterisk на сервере ru.

Для решения этой проблемы надо проверить правильность ввода пароля, SIP ID. Также необходимо проверить, как сотрудник создан в «Личном кабинете»: правильно или нет.

  • Отклонение входящего вызова Астериксом.

Надо проверить, находится ли пользователь в регистрации. Необходимо ввести команду sipshowregistry в консоле Астериск.

  • Прохождение звука через одну сторону.

Нужно выбрать либо поддержку nat в Asterisk, либо поддержку SIP. Второй вариант решения проблемы – установка directmedia=nonat. Еще одним способом станет установка debug в Asterisk, с помощью которого можно будет отслеживать все запросы и аудио-трафик.

  • Не получается исходящему вызову пройти.

Для этого надо написать: exten => _XXXXXX,1,Dial(DAHDI/g1/${EXTEN})

Изменив номер, можно решить проблему.

Заключение

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

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

Астериск доступен в Ubuntu, но его также можно установить и на Windows.

Для удобства можно использовать Freepbx, так как это функциональный интерфейс для настройки Астериска. Он переводит текст программы на понятный язык, что облегчает задачу. С помощью данной программы можно легко менять количество абонентов, так как платформа очень гибкая и многое позволяет.

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

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

В данной статье пошагово опишем как выполнить установку Asterisk. Статья предназначена для IT-специалистов, желающих самостоятельно выполнить настройку и установку Asterisk для компании.

Если Вас интересует профессиональное внедрение системы IP-телефонии Asterisk «под ключ», то обращайтесь к нашим специалистам по телефону 8 (495) 989-85-33 или 8 (800) 333-75-33. Доверьте свою телефонию профессионалам.

Ручная установка Asterisk

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

Создаем директорию, в которую поместим исходные коды дистрибутива Asterisk.

mkdir -p /usr/src/asterisk
cd /usr/src/asterisk

Далее загружаем с официального сайта Asterisk текущие пакеты в исходных кодах. Это можно сделать простым способом. В браузере открываем сайт www.asterisk.org, переходим в раздел Download, находим ссылки на требуемые пакеты и правой кнопкой копируем адрес ссылки в буфер обмена. Далее, в консоли сервера используем команду wget и ссылку, ведущую на сайт:

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

Аналогичным образом выкачиваем все требуемые пакеты:
1. Asterisk
2. DAHDI
3. LibPRI

Для компиляции исходников потребуется сам компилятор. Устанавливаем его следующей командой (кавычки должны быть те, где на клавиатуре размещена буква «Ё»):

yum -y install make gcc gcc-c++ kernel-headers-`uname -r` kernel-devel-`uname -r` ncurses-devel newt-devel libtiff-devel libxml2-devel sqlite-devel glibc-headers

Распаковываем предварительно скачанные с официального сайта пакеты.

tar -xvf asterisk-current.tar.gz
tar -xvf dahdi-linux-complete-current.tar.gz
tar -xvf libpri-1.4-current.tar.gz

В первую очередь устанавливаем библиотеку LibPRI.

LibPRI — это OpenSource библиотека, предназначенная для работы с потоковыми TDM-интерфейсами ISDN: PRI (Primary Rate Interface)и BRI (Basic Rate Interface). Первый (PRI) часто используется в России для работы с операторами по каналам Е1.

cd /usr/src/asterisk/libpri-*
make clean
make
make install

Далее устанавливается драйвера каналов DAHDI.
Драйвера предназначены для взаимодействия Asterisk с платами цифровых интерфейсов: E1, FXO, FXS и пр.

cd /usr/src/asterisk/dahdi-linux-complete*
make all
make install
make config

Далее задаем автоматический запуск службы DAHDI при старте системы:

chkconfig dahdi on
service dahdi start

Если на данном этапе у Вас выдалось сообщение следующего характера:

You do not appear to have the sources for the 2.6.32-220.el6.i686 kernel installed.

make[1]: *** [modules] Error 1

make[1]: Leaving directory `/usr/src/asterisk/dahdi-linux-complete-2.6.1+2.6.1/linux’

make: *** [all] Error 2

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

На этом этапе устанавливаем само телефонное ядро Asterisk.

cd /usr/src/asterisk/asterisk*
. /configure

Если на этом шаге у Вас отобразится такая заставка, значит все идет по плану:

На этом этапе можно выбрать модули, которые будут входить в состав сборки. Если требуется работа с MySQL или другими компонентами, их рекомендуется установить заранее.

Система выбора модулей выглядит следующим образом (хотя, она может быть и на черно-белом фоне):

Управление:

  • Перемещение — стрелками клавиатуры
  • Выбор — пробелом
  • XXX — модуль не доступен для установки. Необходимо установить недостающие зависимости и повторить все с шага». /configure»
  • F12 — сохраняем и выходим

Далее, оканчиваем установку:

Создаем дефолтные конфиги и образцы.

Добавляем Астериск в автозагрузку

Запускаем Астериск консольно, количеством «v» в опции задавая плотность протоколирования (verbosity). Убеждаемся, что Астериск запускается нормально, после чего останавливаем его.

Запуск будет сопровождаться таким списком загружаемых модулей:

Теперь Asterisk можно запустить как службу, после чего подключиться к нему штатно в режиме консоли.

service asterisk start
asterisk -rvvvv

Работа с DAHDi

После инсталляции карты, проверяем ее в системе

Компилируем нужный пакет для нашей карты, Парабел, например, тут.

комментим все модули, вписываем нужный нам, например, quasarm

Указываем зоновую (региональную) принадлежность.

loadzone=ru
defaultzone=ru

Настраиваем согласование потока между АТС оператора и Asterisk.

span = 1,0,0,CCS,HDB3,CRC4 //Задается источник синхронизации, тип кодирования и необходимость проверки четности
bchan=1-15,17-31 // Задаются тайм-слоты для голоса
dchan=16 //Задаются сигнальные тайм-слоты для данных (0-й — по умолчанию)
echocanceller=mg2,1-15,17-31 // Указывается тип эхоподавителя и тайм-слоты, на которых он будет задействован.

Теперь чуть более подробно по опциям.

span = <span_num>,<timing>,<LBO>,< framing>,<coding>[,crc4]
где
span_num – номер порта E1 (от 1 до максимального номера порта в плате)
timing – использовать ли порт как источник синхронизации
0 – порт адаптера ведущий по E1
1 и более – порт ведомый по E1 и является одним из источников синхронизации адаптера. Чем больше число, тем меньше приоритет порта.
LBO – параметр не используется, ставить 0.
Framing – тип телефонной сигнализации, ставить ccs или cas.
Coding – кодирование в линии, может принимать значения ami или hdb3
Crc4 – разрешить проверку и генерацию crc4 (не обязательный параметр)

Делаем рестарт dahdi

service dahdi stop
service dahdi status

Если не выгрузился, необходимо сначала остановить Asterisk:

после

запускаем DAHDI:

Проверка:

dahdi_test
dahdi_test
Opened pseudo dahdi interface, measuring accuracy…
99.999% 99.995% 99.999% 99.999% 99.999% 99.999% 99.999%
--- Results after 7 passes ---
Best: 99.999 — Worst: 99.995 — Average: 99.998506, Difference: 99.998507

Значения не ниже 99,9 — хороший результат. Он означает, что DAHDI-устройство не вынуждено конкурировать с другими процессами за прерывания и время процессора. Значения ниже 99.9 будут приводить к ухудшению качества звука, срыву синхронизации канала E1, скрежету и обрывам голоса.

В случае, если значения ниже 99,9 (да и просто для профилактики), необходимо убедиться, что цифровая карта не делит прерывания с другими драйверами.

cat /proc/interrupts
[pbx.localdomain ~]# cat /proc/interrupts
CPU0    CPU1
0:    1326273128   0              IO-APIC-edge timer
1:    8959         0              IO-APIC-edge i8042
4:    2796129      0              IO-APIC-edge serial
6:    6            0              IO-APIC-edge floppy
7:    2            0              IO-APIC-edge parport0
8:    1            0              IO-APIC-edge rtc
9:    1            0              IO-APIC-level acpi
14:   50338541     0              IO-APIC-edge ide0
50:   0            0              IO-APIC-level uhci_hcd:usb3
58:   7369         23441503       PCI-MSI ahci
114:  1326250778   0              IO-APIC-level wctdm
146:  28024883     0              PCI-MSI eth0
169:  0            0              IO-APIC-level uhci_hcd:usb5
225:  0            0              IO-APIC-level uhci_hcd:usb4
233:  0            0              IO-APIC-level ehci_hcd:usb1, uhci_hcd:usb2
NMI:  0            0
LOC:  1325416311   1325416314
ERR:  0
MIS:  0

wctdm занимает отдельный irq, это правильно
если с кем-то делит, то это может сказывать на работе карты и качестве голоса.

Чаще всего наблюдается ситуация, когда драйвера USB и DAHDI занимают одно прерывание. Это нежелательная ситуация, и в ней лучше всего либо разнести драйвера по разным прерываниям, либо отключить USB на уровне BIOS.

Тут можно увидеть ошибки в работе карты:

показывать сведения о карте

показывает конфигурационный файл, который используется

затем в /etc/asterisk/chan_dahdi.conf
примерный конфиг:

[trunkgroups]

[channels]

language=ru
context=from-trunk
signalling=pri_cpe
rxwink=300             ; Atlas seems to use long (250ms) winks
;
; Whether or not to do distinctive ring detection on FXO lines
;
;usedistinctiveringdetection=yes
usecallerid=yes
hidecallerid=no
callwaiting=yes
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=yes
transfer=yes
cancallforward=yes
callreturn=yes
echocancel=yes
echocancelwhenbridged=yes
echotraining=800
rxgain=0.0
txgain=0.0
group=0
callgroup=1
pickupgroup=1
immediate=no
;busydetect=yes
;busycount=5
faxdetect=no
  
switchtype=euroisdn ; or qsig
immediate=no
context=from-trunk
resetinterval=100000000
signalling=pri_cpe ; or pri_net
group=0
channel ≥1-15,17-31

В Астериск CLI

dahdi restart
dahdi show channels — проверяем что каналы поднялись
dahdi show channel 1

Установка Asterisk из YUM

Помимо компиляции Asterisk вручную, можно воспользоваться менеджером пакетов YUM, который является штатной утилитой RedHat-based дистрибутивов.

Установку Asterisk мы будем производить из самых «аутентичных» источников — репозитория Asterisk.Org.

Краткая инструкция по работе с данным репозиторием находится здесь

Вам требуется создать новый файл с названием «centos-asterisk.repo» в директории the» /etc/yum.repos.d». В него вы вносите следующую конфигурацию:

[asterisk-tested]
name=CentOS-$releasever — Asterisk — Tested
baseurl=http://packages.asterisk.org/centos/$releasever/tested/$basearch/
enabled=0
gpgcheck=0
#gpgkey=http://packages.asterisk.org/RPM-GPG-KEY-Digium

[asterisk-current]
name=CentOS-$releasever — Asterisk — Current
baseurl=http://packages.asterisk.org/centos/$releasever/current/$basearch/
enabled=1
gpgcheck=0
#gpgkey=http://packages.asterisk.org/RPM-GPG-KEY-Digium

Сохраняете данный файл и создаете новый: «centos-digium.repo». Вносите в него следующий текст:

[digium-tested]
name=CentOS-$releasever — Digium — Tested
baseurl=http://packages.digium.com/centos/$releasever/tested/$basearch/
enabled=0
gpgcheck=0
#gpgkey=http://packages.digium.com/RPM-GPG-KEY-Digium

[digium-current]
name=CentOS-$releasever — Digium — Current
baseurl=http://packages.digium.com/centos/$releasever/current/$basearch/
enabled=1
gpgcheck=0
#gpgkey=http://packages.digium.com/RPM-GPG-KEY-Digium

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

yum install asterisk18 asterisk18-configs asterisk18-voicemail dahdi-linux dahdi-tools

Запускаем Asterisk и подключаемся к нему:

service asterisk start
asterisk -rvvv

Астериск — конфигурационные файлы

Главный конфигурационный файл:

asterisk.conf: Сервер Asterisk берет из этого файла информацию о том, где какие файлы находятся в системе, включая директорию, где лежат все остальные файлы конфигурации. По умолчанию, Asterisk ищет файл asterisk.conf в директории /etc/asterisk, но Вы можете, с помощью параметров запуска Asterisk, задать другое расположение и имя этого файла.

Файлы конфигурации каналов Asterisk:

 iax.conf: Файл с конфигурацией канала IAX2
sip.conf: Файл с конфигурацией канала SIP
chan_dahdi.conf: Файл с конфигурацией каналов DAHDi

Файлы конфигурации Диалплана (Плана набора):

extensions.conf: Конфигурация плана набора
extensions.ael: План набора в новом формате AEL (Asterisk Extensions Language)
features.conf: Конфигурация Парковки вызовов, перевода вызова, перехвата и прочих сервисных функций Asterisk.

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

alarmreceiver.conf: Конфигурация для команды AlarmReceiver
dundi.conf: Конфигурация, используемая командой DUNDiLookup
festival.conf: Конфигурация, используемая командой Festival
indications.conf: Определение тонов для команды Playtones
meetme.conf: Файл с конфигурацией конференций для команды MeetMe
musiconhold.conf: для команды MusicOnHold
queues.conf: Определение очередей звонков и их параметров для команды Queue
voicemail.conf: Конфигурация голосовых почтовых ящиков для команды VoiceMail

Конфигурационные файлы не попадающие в какую-либо категорию:

amd.conf: (Появился, начиная с версии 1.4.0) Параметры приложения для определения автоответчиков.
alsa.conf
cdr_odbc.conf
cdr_pgsql.conf
codecs.conf
features.conf: Конфигурация парковки вызовов и других возможностей
followme.conf: (Появился, начиная с версии 1.4.0) Параметры для трансфера вызовов системы findme/followme.
func_odbc.conf: (Появился, начиная с версии 1.4.0) В этом файле определяются параметры доступа к sql базам данных.
http.conf: (Появился, начиная с версии 1.4.0) Конфигурация встроенного мини http сервера в asterisk.
logger.conf: Настройка логирования в Астериск
manager.conf: Конфигурация для Asterisk manager API
modules.conf: Конфигурация загрузки модулей Asterisk
odbc.conf: Конфигурация UnixODBC? драйверов для Asterisk
 res_snmp.conf: (Появился, начиная с версии 1.4.0) Включение поддержки snmp в asterisk и определение статусов агентов full/sub.
 rtp.conf: Конфигурация протокола передачи media информации RTP, порты и настройки
say.conf: (Появился, начиная с версии 1.4.0) Определения правил произношения цифр, дат и т.д. Для различных языков.
sla.conf: (Появился, начиная с версии 1.4.0) Конфигурация Shared Line Appearance.
smdi.conf: (Появился, начиная с версии 1.4.0) Конфигурация обмена сообщениями SMDI.
udptl.conf: Появился, начиная с версии 1.4.0) конфигурация для транспорта T38 udptl.

Основная фишка во всех файлах конфигурации

Во всех файлах конфигурации Asterisk, Вы можете включать в эти файлы другие файлы с частями конфигурации, используя директиву #include. Для того, например, чтобы в основном файле конфигурации SIP канала описать все глобальные настройки, а аккаунты SIP пользователей включать из другого файла.

Установка кодека g729  (и g723)

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

cli> core show translation

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

cli>!cd /usr/lib/asterisk/modules/

»!» в CLI означает, что команду нужно выполнить в консоли LINUX
на сайте http://asterisk.hosting.lv/ выбираем версию нашего астериск, платформу (i386 или x86_64) и тип использованного компилятора (IPP или GCC4).

Например, для Сentos 32 бита, на платформе intel, подойдет:

cli>!wget http://asterisk.hosting.lv/bin/codec_g729-ast18-gcc4-glibc-pentium4.so

затем загружаем модуль в астериск

 cli>module load codec_g729-ast18-gcc4-glibc-pentium4.so

проверяем

cli> core show translation

если мы ошиблись в выборе нужного кодека, скорее всего астериск «упадет»

Запускаем астериск и видим на каком этапе он вываливается

asterisk -vvvvvvvvvvvvvvvvvvvc</span>

Удаляем модуль и перезапускаем астериск.

Без удаления можно обойтись так: в файле modules.conf добавить строчку

noload ≥ codec_g729-ast18-gcc4-glibc-pentium4.so</span>

это значит, что при старте этот модуль автоматически загружаться не будет

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

Подключение SIP клиента

Теперь необходимо настроить со стороны Asterisk-а SIP-аккаунт для внутреннего абонента.

Структура sip.conf:

[general]
;глобальные значения переменных канала SIP
disallow=all
allow=gsm
allow=ulaw
allow=alaw
context=default
;……
register ≥ user:[email protected]/callerid

Создаем номер для абонента, указывая для него опции подключения.

[100]
deny=0.0.0.0/0.0.0.0     //указание сетей, из которых запрещено подключение
permit=0.0.0.0/0.0.0.0   //указание сетей, из которых разрешено подключение
type=friend              //указываем тип абонента.
secret=asdff34tgg        //задаем пароль на подключение
qualify=yes              // Активируем KeepAlive
port=5060                // Задаем порт, на котором будет работать абонентское устройство (используется, если не работает функция регистрации абонентского устройства)
pickupgroup=1            // Задаем принадлежность к группе перехвата
nat=yes                  // Указываем, будет ли устройство находиться за NAT-ом по отношению к серверу Asterisk
[email protected]       // Указываем номер и контекст ящика голосовой почты
host=dynamic             // Задаем IP абонетского устройства или сообщаем с опцией dynamic, что для местоопределения будет использоваться механизм регистрации
dtmfmode=rfc2833         // Тип передачи DTMF-сигналов
disallow=all             // Сначала запрещаем все кодеки
allow=ulaw               // Тут указываем допустимые кодеки, перечисляя их построчно сверху вниз в порядке приоритета
allow=gy29
dial=SIP/100             // Задаем команду Dial, которая будет использоваться для вызова данного абонента
context=from-internal    // Указываем принадлежность абонента определенному контексту.
canreinvite=no           // Указываем возможность использования механизма CanReinvite. Не рекомендуется для устройств, которые могут быть отделены от сервера NAT-ом
callgroup=1              // Указываем группу набора
callerid=Alexey <100>    // Задаем CallerID — имя и номер, которые будут высвечиваться у других абонентов, а также в CDR.
call-limit=2             // Задаем максимальное количество линий, которые одновременно могут использоваться абонентом. Рекомендуется задавать не более 2-3-х одновременных линий.

сохраняем и делаем в cli

проверяем

sip show peers
100/100                     (Unspecified)     D  N  A 5060    UNKNOWN
1 sip peers [Monitored: 1 online, 0 offline Unmonitored: 0 online, 0 offline]

Теперь настраиваем софтфон или SIP телефон. Простая и понятная инструкция по настройке софтфона X-Lite для Asterisk находится здесь. Указываем реквизиты из sip.conf
user
pass
ip-proxy — IP нашего Астериск
Когда телефон подключится, мы должны увидеть

sip show peers
100/100                     192.168.0.10    D  N  A 5060    OK (111 ms)
1 sip peers [Monitored: 1 online, 0 offline Unmonitored: 0 online, 0 offline]

Настройки для конкретного SIP peer

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

Полезные команды CLI Asterisk

sip show peers
sip show peer 100
sip show settings
sip reload
sip set debug on
rtp set debug on
core show translation
dahdi show channels
core show application Dial
core show application CALLERID
core reload
dialplan reload
dialplan show context
dialplan show [email protected]

Простой диалплан. Файл extensions.conf

Файл Extensions.conf описывает логику работы Asterisk, а именно, обработку входящих вызовов, маршрутизацию исходящих вызовов, обработку звонков и событий по разнообразным правилам. В Asterisk это называется ДиалПланом (DialPlan). Как говорят разработчики, диалплан — это сердце Asterisk.

За работу диалплана отвечает файл extensions.conf. Файл поделен на контексты, в каждом из которых прописана логика работы. Логика работы формируется с помощью приложений. Приложения — это функции Asterisk, запускаемые с параметрами. Последовательность выполнения приложений — построчная.

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

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

  • звонка на внутренний номер 999, который выполняет какую-либо функцию
  • звонка другому внутреннему абоненту, номер которого начинается с цифры «1» и состоящий из трех цифр
  • звонок на внешние телефонные линии через SIP-оператора
[from-internal]
;тестовый звонок на номер 999, с возможность донабрать 2,3,5
exten ≥ 999,1,Answer ()
exten ≥ 999,n,Background (hello-world)
exten ≥ 999,n,Hangup ()
exten ≥ 2,1,Playback (digits/2)
exten ≥ 3,1,Playback (digits/3)
exten ≥ 5,1,Playback (digits/5)
;звонок на внутреннего абонента 1XX подключенного по технологии SIP
exten ≥ _1XX,1,Dial (SIP/${EXTEN},60)
;звонок на московский номер через транк провайдера, который подключен к Asterisk по технологии SIP
exten ≥ _495ZXXXXXX,1,Dial (SIP/provider/8${EXTEN},60)
  • Hello World with Asterisk and SIP
    • Requirements
    • Configuration files needed
    • Configure extensions.conf
    • Configure a SIP channel driver
      • Configure chan_sip
      • Configure chan_pjsip
    • Configure your SIP phone
    • Start Asterisk
    • Make the call

You’ve just installed Asterisk and you have read about basic configuration. Now let’s quickly get a phone call working so you can get a taste for a simple phone call to Asterisk.

Hello World with Asterisk and SIP

Requirements

This tutorial assumes the following:

  • You have a SIP phone plugged into the same LAN where the Asterisk server is plugged in, or can install the Zoiper softphone used in the example
  • If you use your own hardware phone, we assume both the phone and Asterisk can reach each other and are on the same subnet.
  • When you built Asterisk, you should have made sure to build the SIP channel driver you wanted to use, which may imply other requirements. For example if you want to use chan_pjsip, then make sure you followed the Installing pjproject guide.

Configuration files needed

You should have already run «make samples» if you installed from source, otherwise you may have the sample config files if you installed from packages.

If you have no configuration files in /etc/asterisk/ then grab the sample config files from the source directory by navigating to it and running «make samples».

Files needed for this example:

  • asterisk.conf
  • modules.conf
  • extensions.conf
  • sip.conf or pjsip.conf

You can use the defaults for asterisk.conf and modules.conf, we’ll only need to modify extensions.conf and sip.conf or pjsip.conf.

To get started, go ahead and move to the /etc/asterisk/ directory where the files are located.

Configure extensions.conf

Backup the sample extensions.conf and create a new one

mv extensions.conf extensions.sample
vim extensions.conf

I’m assuming you use the VI/VIM editor here, after all, it is the best.

We are going to use a very simple dialplan. A dialplan is simply instructions telling Asterisk what to do with a call.

Edit your blank extensions.conf to reflect the following:

[from-internal]
exten = 100,1,Answer()
same = n,Wait(1)
same = n,Playback(hello-world)
same = n,Hangup()

When a phone dials extension 100, we are telling Asterisk to Answer the call, Wait one second, then Play (Playback) a sound file (hello-world) to the channel and Hangup.

Configure a SIP channel driver

Depending on the version of Asterisk in use, you may have the option of more than one SIP channel driver. You’ll have to pick one to use for the example.

Icon

  • Asterisk 11 and previous: chan_sip is the primary option.
  • Asterisk 12 and beyond: You’ll probably want to use chan_pjsip (the newest driver), but you still have the option of using chan_sip as well

Follow the instructions below for the channel driver you chose.

Configure chan_sip

Backup and edit a new blank sip.conf, just like you did with extensions.conf.

Then add the following to your sip.conf file:

[general]
context=default

[6001]
type=friend
context=from-internal
host=dynamic
secret=unsecurepassword
disallow=all
allow=ulaw

Basic configuration will be explained in more detail in other sections of the wiki. For this example to work, just make sure you have everything exactly as written above. For the sake of terminology, it is useful to note that though we have this SIP configuration configured with «type=friend», most people refer to this as configuring a SIP peer.

Configure chan_pjsip

Backup and edit a new blank pjsip.conf, just like you did with extensions.conf.

Then add the following to your pjsip.conf file:

[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0

[6001]
type=endpoint
context=from-internal
disallow=all
allow=ulaw
auth=6001
aors=6001

[6001]
type=auth
auth_type=userpass
password=unsecurepassword
username=6001

[6001]
type=aor
max_contacts=1

Configure your SIP phone

You can use any SIP phone you want of course, but for this demonstration we’ll use Zoiper, a Softphone which just happens to be easily demonstrable.

You can find the latest version of Zoiper for your platform at their website. You can install it on the same system you are running Asterisk on, or it may make more sense to you if you install on another system on the same LAN (though you might find complication with software firewalls in that case).

Once you have Zoiper installed. Configure a new SIP account in Zoiper.

  1. Once Zoiper is opened, click the wrench icon to get to settings.
  2. Click «Add new SIP account»
  3. Enter 6001 for the account name, click OK
  4. Enter the IP address of your Asterisk system in the Domain field
  5. Enter 6001 in the Username field
  6. Enter your SIP peer’s password in the Password field
  7. Enter whatever you like in Caller ID Name or leave it blank
  8. Click OK

Your results should look like the above screen shot.

Start Asterisk

Back at the Linux shell go ahead and start Asterisk. We’ll start Asterisk with a control console (-c) and level 5 verbosity (vvvvv).

Or if Asterisk is already running, restart Asterisk from the shell and connect to it.

asterisk -rx "core restart now"
asterisk -rvvvvv

Make the call

Go back to the main Zoiper interface, and make sure the account is registered. Select the account from the drop down list and click the Register button next to it. If it says registered, you are good to go. If it doesn’t register, then double check your configuration.

Once registered, enter extension 100 and click the Dial button. The call should be made and you should hear the sound file hello-world!

On the Asterisk CLI, you should see something like:

Now that you have made a very simple call, you may want to start reading through the other sections on the wiki to learn more about Operation, Fundamentals and Configuration.

IP-АТС Asterisk умеет все то же, что и традиционная АТС, плюс поддерживает актуальные для бизнеса VoIP-протоколы: голосовую почту, конференц-связь, центр обработки звонков, интерактивное меню, хранение записей. Рассказываем, как настроить с нуля базовый функционал «Астериск» АТС и получить рабочий сервер компьютерной телефонии.

Для примера настройки Asterisk возьмем офис с такими характеристиками:

  • 3 отдела, в которых работают 25 сотрудников;
  • используются трехзначные телефонные номера;
  • услуги предоставляет один SIP-провайдер.

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

В разных операционных системах (Cent Os, Ubunty и др.) отличаются команды и необходимые зависимости.

  1. Сборка и установка необходимых зависимостей и пакетов.

Вначале нужно установить дополнительные пакеты, которые необходимы для установки и работы Asterisk. Без части из этих пакетов Asterisk вообще откажется устанавливаться (к примеру, если отсутствует gcc). Без некоторых пакетов Asterisk установится и даже будет работать, однако часть функционала будет недоступна. Например, пакет bison необходим для обработки выражений в файле extensions.conf. Еще пример: libnewt необходим для работы интерфейса управления astman. Для сервера Asterisk он не требуется, но без этого пакета у Вас не будет приложения astman, которое является отдельной программой. В нашем приводиться пример установки Asterisk 13 в системе Cent OS 6.9:

yum -y install gcc gcc-c++ make ncurses-devel libxml2-devel sqlite-devel bison kernel-headers kernel-devel openssl openssl-devel newt newt-devel flex curl sox binutils

Для 12-13 версии Asterisk требуется установка пакетов uuid и janson. Для установки библиотеки uuid в RHEL / Centos выполните команду:

yum -y install libuuid-devel

. Для установки библиотеки jansson в RHEL / Centos выполните команду:

yum -y install jansson-devel (предварительно требуется установка репозитория epel: yum install epel-release)

После обновляем систему до последней версии командой yum update –y и перегружаем ее: reboot

  1. Установка и установка их исходников

Чтобы получить эффективное и рабочее решение, рекомендуем: выполняйте установку и настройку Asterisk в чистом виде, без дополнительных плат расширения и модемов. Так вы получите программную АТС, которую можно легко переносить с одного сервера на другой. Для этого необходимо установить Asterisk с нуля, инсталлировать pjproject с jansson, обновить систему и отключить SELinux.

Для начала отключим Selinux. Для этого заходим /etc/selinux/config и ставим: SELINUX=DISABLED.

Также выключаем FireWall (iptables):

  1. Проверка статуса: service iptables status;
  2. Отключение: service iptables stop
  3. Отключение из автозагрузки: chkconfig iptables off
  4. Перегружаем систему: reboot

Скачайте и инсталлируйте pjproject:

d /usr/src

git clone git://github.com/asterisk/pjproject pjproject

cd pjproject/

./configure –libdir=/usr/lib64 –prefix=/usr –enable-shared –disable-sound –disable-resample

make dep

make

make install

ldconfig

ldconfig -p | grep pj

Для конвертации mp3 файлов необходим пакет Lame. Установим его из репозитория:

rpm -Uvh https://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

yum repolist — проверка установленных репозиториев

Далее устанавливаем сам пакет: yum install lame

Скачиваем и устанавливаем библиотеку Libpri:

cd /usr/src/

wget https://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz

tar xvfz libpri-1.4-*.tar.gz

cd /usr/src/libpri-1.4.*

make

make install

Если команды wget – не существует, то устанавливаем ее командой yum –y install wget

Далее скачиваем и устанавливаем сам asterisk 13:

cd /usr/src/

wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz

tar xvfz asterisk-13-current.tar.gz

cd asterisk-13.*

contrib/scripts/get_mp3_source.sh

./configure –libdir=/usr/lib64

Если при проверки и подготовки сборки необходимых настроек, моделей никаких ошибок нету, то появиться в консоли иконка Asterisk

make menuselect — выбираются все необходимые параметры, но в принципе можно оставить по умолчанию, главное чтобы были включены необходимые драйверы каналов

Выберите модули и звуки (можно оставить по ум-чанию). В модулях выбираем только sip. (pjsip не ставим):

Установите озвучку для core и extra (для второй она доступна на русском языке). Рекомендуем кодеки g729, alaw, ulaw, ,gsm. Далее уже на Ваш вкус какие кодеки необходимы.:

Другие настройки можно оставить по умолчанию. Если вы установили модуль, но поняли, что он вам не нужен, просто отключите его в конфигурации и сделайте заново сборку через make. Сохраняем выбранные изменения.

Продолжайте инсталляцию:

make

make install

make config

make samples

ldconfig

При успешной установки Asterisk видно в строчках лога эмблему Asterisk (появляется после этапа configure).

Добавьте Asterisk в автозапуск и приступайте к работе:

chkconfig asterisk on

service asterisk start

Проверьте корректность запуска через консоль:

asterisk -r

Перегрузите компьютер чтобы проверить автоматический запуск Asterisk. При вводе asterisk –r мы должны попасть в консоль, как на скрине выше.

Как установить Asterisk на Windows

  1. Скачать VirtualBox.
  2. Скачать Asterisk для VirtualBox.
  3. Установить VirtualBox.
  4. Нажать везде «Согласен».
  5. Нажать «Файл», а потом «Импорт конфигураций».
  6. Запустить машину и провести остальные настройки.

Совет! Более подробно с настройкой телефонии Астериск можно ознакомиться здесь:

Чтобы скачать пакеты голосовых сообщений, надо:

  1. Перейти в папку «contrib/scripts/» с помощью команды «cd».
  2. Открыть «get_mp3_source.sh».
  3. Ввести «makeinstall».
  4. Открыть консоль Asterisk.
  5. Сделать файлы при помощи «makesamples».
  6. Запустить функцию «service asterisk start».

Основным конфигурационным файлом является asterisk.conf. Отсюда берется информация о местоположении файлов в системе.

Файл конфигурации, который пригодится для набора некоторых команд:

  • conf (голосовые почтовые ящики при команде VoiceMail).
  • conf (конфедерация, применяемая установкой Festival).
  • conf (структура, необходимая для указания AlarmReceiver).
  • conf (настройка тонов с указанием Playtones).
  • conf (конфигурация, которая используется командой DUNDiLookup).
  • conf (конфигурация для того, чтобы установить очередь звонков и их параметров для команды Queue).

Файлы конфигурации каналов Asterisk:

  • conf (канал IАX2).
  • conf (канал SIP).
  • conf (канал DАHDi).

Добавление плана звонков

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

extension — https://asterisk.ru/knowledgebase/Asterisk+config+extensions.conf

[local]

;для исход. внутренних номеров между собой

exten => _XXX,1,Noop(Test ${CALLERID(num)} Hat)

exten => _XXX,n,Dial(SIP/${EXTEN})

Так вы добавите план звонков на трехзначные номера. В нашем случае это номера 101 и 102 (в sip.conf)

Перезагрузите план набора (диалплан):

dialplan reload

Не страшно, если на экране появятся сообщения об ошибках – вы еще не завершили настройку и исправите их на следующих шагах.

Проверьте список пользователей командой:

sip show peers

Пользователи, пароли и контекст

Установите любую программную «звонилку» или воспользуйтесь реальным телефоном. В первом варианте вам понадобится настроить софт для работы с АТС. В нашем примере используем Zoiper 5. Пример настроек указан в нашей вики https://wiki.new-tel.net/doku.php?id=Zoiper-PC:

Настройки софтовой «звонилки» для проверки Asterisk

Все дальнейшие настройки звонилки и принцип работы указан в ссылке выше.

Теперь проверьте подключенные пиры с помощью команды:

Sip show peers

Если все верно, вы увидите такую строку:, в котором видно нашу SIP-линию и статус подключения SIP-линии:

Sip-линия IP-address A 5060 OK Cached RT

После настройки Asterisk протестируйте звонки на двух абонентах. Для этого подключите еще один физический или программный телефон. Позвоните от одного абонента другому (набрав с 101 на 102 и наоборот). Проверьте содержимое файла /var/log/asterisk/full. – там появится запись о последнем вызове. Также там фиксируется все сообщения и ошибки, возникаемые при работе Asterisk.

Записи обо всех последующих вызовах тоже попадут в этот файл. Позже их можно будет перебросить в базу данных.

Настройка Аsterisk

запускаем скрипт настройки зависимости: sudo ./configure

Редактирование dialplan

Чтобы настроить входящие и исходящие звонки в IP-телефонии Asterisk, отредактируйте файл extensions.conf, добавив в конце следующий код (с контекста local):

;для исход по транку (пример указан с префиксом 123#).

exten => _123#8XXXXXXXXXX,1,Set(CALLERID(all)=78125000963)

exten => _123#8XXXXXXXXXX,n,Noop( (CALLERID(all) + Boris)

exten => _123#8XXXXXXXXXX,n,Dial(SIP/7${EXTEN:5}@Ip-address)

; избавление от префикса 123# и заменой цифры 8 на 7. Далее отправляется звонок на хост IP провайдера (указан в sip.conf)

[trunk_cid]

;для вход. по транку на 101.

exten => _XXXXXXXXXX,1,Dial(SIP/101,30,r)

Перезагрузите Asterisk командой core restart now и снова сделайте тестовый звонок. Информация о нем добавится в файле full

Пример лога консоли Asterisk:

На этом базовая настройка IP-телефонии «Астерикс» завершена. Чтобы расширить функционал после того, как Asterisk установлен, настройте приветствие и голосовое меню (ivr), активируйте голосовую почту, настройте очередь (queue) входящих звонков, сбор и просмотр статистики (cdr viewer), запись (record) разговоров, поставьте музыку на ожидание (on hold), настройте конференции, перевод, перехват и переадресацию звонков.

О Asterisk

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

Это широко распространенный инструмент, который превращает обычный компьютер в мощный сервер для развертывания коммуникаций следующего поколения. ПО включает в себя несколько готовых компонентов, которые обрабатывают низкоуровневые, а также сложные детали видео, голосовой связи и SMS-сообщений.

Asterisk поддерживает всевозможные приложения, включая:

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

Ошибки в настройке Asterisk

Рассмотрим распространенные ошибки при настройке виртуальной АТС «Астерикс» и дадим инструкции, которые помогут их .

  • Asterisk не регистрируется на сервере и возвращает ответ Forbidden в режиме отладки.
    Причина: некорректно введен пароль, указан SIP ID или домен. Проверьте содержимое файла sip.conf.
  • Сбрасываются входящие звонки.
    Причины: внутренний пользователь не зарегистрирован. Проверьте регистрацию командой sip show registry.
  • Не проходят исходящие вызовы.
    Причина: некорректно задан шаблон номера (пропущен символ «_» перед шаблоном).
  • Звук проходит только в одну сторону.
    Причина: вы используете NAT. Включите debug и используйте tcpdump – так вы увидите, куда уходят запросы и аудиотрафик.

Понравилась статья? Поделить с друзьями:
  • Настроить среднюю кнопку мыши в windows 10
  • Настройка asrock uefi перед установкой windows
  • Настроить создание точки восстановления windows 7
  • Настройка asio драйвера в windows 10
  • Настроить систему под ssd windows 10