Asterisk IP-PBX
Asterisk IP-PBX — свободное решение компьютерной телефонии с открытым исходным кодом от компании Digium, первоначально разработанное Марком Спенсером. Приложение работает на операционных системах Linux, FreeBSD, OpenBSD и Solaris. Имя проекта произошло от названия символа «*» (звездочка, астериск).
Asterisk в комплексе с необходимым оборудованием обладает всеми возможностями классической АТС, поддерживает множество VoIP протоколов и предоставляет богатые функции управления звонками:
голосовую почту,
конференции,
интерактивное голосовое меню (IVR),
центр обработки вызовов (постановка звонков в очередь и распределение их по агентам используя различные алгоритмы),
запись (CDR)
и прочие функции. Для создания дополнительной функциональности можно воспользоваться собственным языком Asterisk для написания плана нумерации, написав модуль на языке C, либо воспользовавшись AGI — гибким и универсальным интерфейсом для интеграции с внешними системами обработки данных. Модули, выполняющееся через AGI, могут быть написаны на любом языке программирования.
Asterisk распространяется на условиях двойной лицензии, благодаря которой одновременно с основным кодом, распространяемым по открытой лицензии GNU GPL, возможно создание закрытых модулей, содержащих лицензируемый код: например, модуль для поддержки кодека G.729.
Благодаря свободной лицензии Asterisk активно развивается и поддерживается тысячами людей со всей планеты. В течение последних двух лет [когда?] рынок Asterisk-приложений активно развивается в США и уже занял прочное место на рынке IT-технологий (более 1000 компаний, центры поддержки, online-консультации)[источник не указан 135 дней]. В Россию данный продукт попал позже, но интерес российского потребителя растёт, и в первую очередь, благодаря открытости системы. Многие компании применяют Asterisk в своих серийных VoIP-устройствах, например компании Linksys, Nateks[источник не указан 135 дней].
Для того чтобы уйти от проблем, создаваемых двойным лицензированием, был создан форк проекта, в настоящее время называющийся CallWeaver.
Ниже приведены мои конфигурационные файлы. Этого достаточно для базового запуска астериск.
sip.conf
Code:
[general] register = 74951234567:PNKa0n3i@sip.discounttelecom.ru bindport = 5060 bindaddr = 0.0.0.0 context = default allowguest = no allowoverlap = no realm = McConfig VoIP Server externip = 195.128.60.37 nat = no disallow = all allow = alaw allow = ulaw allow = gsm srvlookup = yes language = ru udpbindaddr = 0.0.0.0 tcpenable = no tcpbindaddr = 0.0.0.0 [authentication] [discounttelecom] type = peer insecure = port,invite secret = 12345 username = 74951234567 fromuser = 74951234567 fromdomain = sip.discounttelecom.ru host = sip.discounttelecom.ru port = 5060 registersip = yes dtmfmode = rfc2833 disallow = all allow = alaw allow = gsm canreinvite = no [1000];office manager qualify = yes context = LocalAndPSTNAndMobileAndLD type = friend username = 1000 secret = terranova2039 nat = yes host = dynamic callerid = "IT Crowd" callgroup = 1 pickupgroup = 1 language = ru canreinvite = no disallow = all allow = alaw allow = ulaw allow = gsm mailbox = 1000@sip.fantasyworld.su,1000
extensions.conf
Code:
[general]
priorityjumping = yes
static = yes
writeprotect = no
autofallthrough = yes
clearglobalvars = no
[globals]
DYNAMIC_FEATURES = automon
[default]
include => 74955438950
include => OSoftSipNet
include => NSoftSipNet
include => LocalOnly
include => LocalAndPSTN
include => LocalAndPSTNAndMobile
include => LocalAndPSTNAndMobileAndLD
;==================== Start SIPNET IN =======================
[74955438950]
exten => s,1,Answer
exten => s,2,Set(TIMEOUT(digit)=5)
exten => s,3,Set(TIMEOUT(response)=5)
exten => s,4,Goto(welcome,s,1)
exten => s,5,WaitExten(5)
exten => s,6,Dial(SIP/1000,20,otmw)
exten => s,7,Voicemail
exten => s,8,Hangup
exten => i,1,Dial(SIP/1000,300,otmw)
exten => i,2,Hangup
exten => _97XXXX,1,Goto(LocalAndPSTNAndMobileAndLD,${EXTEN},1)
;================== end SIPNET IN ==========================
;================== Start CONTEXT ==========================
[OSoftSipNet]
exten => _9XXXXXXX,1,Dial(SIP/discounttelecom/${EXTEN:1})
[NSoftSipNet]
include => OSoftSipNet
exten => _900XXXXXXXX,1,Dial(SIP/discounttelecom/${EXTEN:1})
[LocalOnly]
include => NSoftSipNet
exten => _XXXX,1,Dial(SIP/${EXTEN:0})
[LocalAndPSTN]
include => LocalOnly
exten => _97XXXXXXX,1,Dial(SIP/discounttelecom/$8383{EXTEN:1})
[LocalAndPSTNAndMobile]
include => LocalAndPSTN
exten => _97XXXXXXXXX,1,Dial(SIP/discounttelecom/${EXTEN:1})
[LocalAndPSTNAndMobileAndLD]
include => LocalAndPSTNAndMobile
exten => _97XXXXXXXXXX,1,Dial(SIP/discounttelecom/${EXTEN:1})
;================== End CONTEXT ============================
;=================== Start VOICE MAIL ======================
exten => 8000,1,VoiceMailMain
exten => 8000,2,Hangup
exten => 8001,1,VoiceMail
exten => 8001,2,Hangup
;=================== End VOICE MAIL ========================
;=================== Start ALL USERS =======================
;===================1000====================================
exten => 1000,1,GotoIfTime(10:00-15:30|mon-fri|*|*?welcome,s,10)
exten => 1000,2,Dial(SIP/1000,15,rtwW)
exten => 1000,3,Goto(5)
exten => 1000,4,Dial(SIP/1011.300,rtwW)
exten => 1000,5,Hangup
;===============1001========================================
;==================== End ALL USERS ========================
[welcome]
exten => s,1,Answer
exten => s,2,Set(TIMEOUT(digit)=5)
exten => s,3,Set(TIMEOUT(response)=10)
exten => s,4,Background(IVR/welcome)
exten => s,5,WaitExten(5)
exten => s,6,Dial(SIP/1000,10,otmw)
exten => s,7,Dial(SIP/1002,13,otmw)
exten => s,8,Dial(SIP/1004,16,otmw)
exten => s,9,Dial(SIP/1005,19,otmw)
exten => s,10,Dial(SIP/1011,22,otmw)
exten => s,11,Hangup
exten => i,1,Dial(SIP/1000,5,otmw)
exten => i,2,Dial(SIP/1002,5,otmw)
exten => i,3,Dial(SIP/1004,5,otmw)
exten => i,4,Dial(SIP/1005,5,otmw)
exten => i,5,Hangup
exten => 1,1,Goto(direktor,s,1)
exten => 2,1,Goto(manager,s,1)
exten => 3,1,Goto(magaziny,s,1)
exten => 0001,1,Goto(welcome,s,1)
[manager]
exten => s,1,Answer
exten => s,2,Set(TIMEOUT(digit)=5)
exten => s,3,Set(TIMEOUT(response)=10)
exten => s,4,Background(IVR/manager)
exten => s,5,WaitExten(5)
exten => s,6,Hangup
exten => i,1,Hangup
exten => 1,1,Dial(SIP/1002,60,otmw)
exten => 2,1,Dial(SIP/1005,60,otmw)
exten => 3,1,Dial(SIP/1009,60,otmw)
exten => 0001,1,Goto(welcome,s,1)
[magaziny]
exten => s,1,Answer
exten => s,2,Set(TIMEOUT(digit)=5)
exten => s,3,Set(TIMEOUT(response)=10)
exten => s,4,Background(IVR/magaziny)
exten => s,5,WaitExten(5)
exten => s,6,Hangup
exten => i,1,Hangup
exten => 1,1,Dial(SIP/1010,60,otmw)
exten => 2,1,Dial(SIP/1011,60,otmw)
exten => 3,1,Dial(SIP/1013,60,otmw)
exten => 4,1,Dial(SIP/1006,60,otmw)
exten => 0001,1,Goto(welcome,s,1)
[direktor]
exten => s,1,Answer
exten => s,2,Set(TIMEOUT(digit)=5)
exten => s,3,Set(TIMEOUT(response)=10)
exten => s,4,Background(IVR/direktor)
exten => s,5,WaitExten(5)
exten => s,6,Hangup
exten => i,1,Hangup
exten => 1,1,Dial(SIP/1004,60,otmw)
exten => 0001,1,Goto(welcome,s,1)
;===================call 1000===============
; RECEPTION OFFICE
exten => *0,1,Dial(SIP/1001&SIP/1002&SIP1005,300,rtwW)
exten => 1001,1,Dial(SIP/1001&SIP/1002&SIP/1005,300,rtwW)
; MANAGER
exten => 1002,1,Dial(SIP/1002,300,rtwW)
exten => 1002,2,Dial(SIP/1010,10,tr)
exten => 1002,3,Dial(SIP/1011,10,tr)
exten => 1002,4,Hangup
; MANAGER 2
exten => 1005,1,Dial(SIP/1005,300,rtwW)
exten => 1005,2,Dial(SIP/1010,10,tr)
exten => 1005,3,Dial(SIP/1011,10,tr)
exten => 1005,4,Hangup
; DIREKTOR
exten => 1004,1,Dial(SIP/1004,300,rtwW)
exten => 1004,2,Dial(SIP/1010,10,tr)
exten => 1004,3,Dial(SIP/1011,10,tr)
exten => 1004,4,Hangup
;NOVOSLOBODSKAYA
exten => 1010,1,Dial(SIP/1010,300,rtwW)
exten => 1010,2,Dial(SIP/1002,10,tr)
exten => 1010,3,Dial(SIP/1004,10,tr)
exten => 1010,4,Dial(SIP/1011,10,tr)
exten => 1010,5,Hangup
;ALEKSEEVSKAYA
exten => 1011,1,Dial(SIP/1011,300,rtwW)
exten => 1011,2,Dial(SIP/1002,10,tr)
exten => 1011,3,Dial(SIP/1004,10,tr)
exten => 1011,4,Dial(SIP/1010,10,tr)
exten => 1011,5,Dial(SIP/1006,10.tr)
exten => 1011,6,Hangup
;TEST
exten => 1013,1,Dial(SIP/1012,300,rtwW)
exten => 1013,2,Hangup
