Настройка Asterisk под IP-телефонию от On-Lime
1. Extensions.conf
Добавляем в конец файла /etc/asterisk/extentions.conf
запись:
#include "/etc/asterisk/conf/custom_extensions.conf"
Создаём файл custom_extensions.conf
:
mkdir /etc/asterisk/conf
touch /etc/asterisk/conf/custom_extensions.conf
chown -R asterisk:asterisk /etc/asterisk/conf/
nano /etc/asterisk/conf/custom_extensions.conf
Редактируем файл:
[macro-dialout] ; Макрос обработки внешних звонков
exten => s,1,Dial(${ARG1},120)
exten => s,2,Goto(s-${DIALSTATUS},2)
exten => s-NOANSWER,1,Handup
exten => s-BUSY,1,Busy(45)
exten => s-CONGESTION,1,NoOp
exten => s-CHANUNAVAIL,1,NoOp
exten => s-.,1,Goto(s-NOANSWER,2)
[macro-local] ; Макрос обработки вызова внутренего номера
exten => s,1,Dial(${ARG2},60,tTr)
exten => s,n(NOANSWER),Playback(vm-nobodyavail)
exten => s,n,Hangup()
[local-users] ; определяем номера абанентов и скрипт обработки вызова абонетов
exten => 123,1, Macro(local,123,SIP/123)
exten => 321,1, Macro(local,321,SIP/321)
[my-home]
;; Входящие звонки (нужное раскоментировать):
;; Голосовое меню
; #include "/etc/asterisk/ivr/main.tree"
; exten => 4996518342,1,Goto(main_tree,s,1)
;; Очереди
; exten => 100,1,Set(CALLERID(num)=CALLERID(name))
; exten => 100,1,Answer
; exten => 100,n,Queue(operator,tTk,1,,40)
;; Прямой вызов на номер абонента
exten => 4996518342,1,Dial(SIP/123,40,tTk)
exten => 4996518342,n,Playback(vm-nobodyavail)
exten => 4996518342,n,Hangup
; Внутренние звонки
include => local-users
; Внешние звонки через 8
exten => _8XXXXXXXXXX,1,Macro(dialout,SIP/ON-LIME/8${EXTEN:1})
exten => _8XXXXXXXXXX,2,ResetCDR
; Внешние звонки через +7
exten => _+7XXXXXXXXXX,1,Macro(dialout,SIP/ON-LIME/8${EXTEN:2})
exten => _+7XXXXXXXXXX,2,ResetCDR
; Внешние международные звонки
exten => _810X.,1,Macro(dialout,SIP/ON-LIME/${EXTEN:3})
exten => _810X.,2,ResetCDR
2. Sip.conf
Редактируем файл /etc/asterisk/sip.conf:
nano /etc/asterisk/sip.conf
В редакторе нажимаем [Ctrl+W] вписываем в строку поиска NAT SUPPORT
[Enter]
Если Asterisk за NAT-ом вписываем свою подсеть
localnet=192.168.51.0/255.255.255.0
В редакторе нажимаем [Ctrl+W] вписываем в строку поиска OUTBOUND SIP REGISTRATIONS
[Enter]
Добавляем в раздел ссылку на строку регистрации для исходящих вызовов
#include "/etc/asterisk/trunks/REGISTER"
Добавляем в конец файла:
;Заводим sip провайдеров
#include "/etc/asterisk/trunks/*.txt"
;Заводим абонентов
#include "/etc/asterisk/abonents/*.txt"
Добавляем абонентов в Asterisk:
# mkdir /etc/asterisk/abonents
# touch /etc/asterisk/abonents/123.txt
# chown -R asterisk:asterisk /etc/asterisk/abonents
# nano /etc/asterisk/abonents/123.txt
[123]
type=friend ; выбрать из user - только входящие, peer - только исходящие, friend - все типы звонков
host=dynamic ; задаем ip адрес телефоного аппарата или ставим dynamic - тобиш нет привязки к IP
username=123 ; имя пользователя
secret=******** ; пароль пользователя
dtmfmode=rfc2833 ; способ передачи сигналов DTMF
nat=no ; поставить yes если клиент работает из за NAT
canreinvite=no ; запрещаем соединение в обход asterisk
context=my-home ; имя контекста куда будет входить абонент
callerid="Vasya_Pupkin" <123> ; индификационная строка, отображается при звонке
callgroup=42 ; вносим абоннента в группу 1 и 3
pickupgroup=42 ; разрешаем перехват звонков вгруппе 1 и 2
call-limit=1 ; устанавливаем лимит на одновременно входящие звонки
qualify=1000 ; устанавливаем период опроса абонента в мс
disallow=all ; запрещаем все кодеки
allow=ulaw ; указываем кодек
call-limit=2 ; указываем кол-во линий доступных пользователю
Добавляем SIP провайдера:
# mkdir /etc/asterisk/trunks
# touch /etc/asterisk/trunks/4951234567.txt
# touch /etc/asterisk/trunks/REGISTER
# chown -R asterisk:asterisk /etc/asterisk/trunks
# nano /etc/asterisk/abonents/4951234567.txt
[ON-LIME] ; название транка
type=peer ; выбрать из user - только входящие, peer - только исходящие, friend - все типы звонков
fromuser=4951234567 ; вписываем SIP Login выданный провайдером
defaultuser=4951234567 ; вписываем SIP Login выданный провайдером
secret=******** ; вписываем SIP Password выданный провайдером
host=tel2.moscow.rt.ru ; вписываем SIP-сервер провайдера
fromdomain=tel2.moscow.rt.ru ; вписываем SIP-сервер провайдера
context=my-home ; имя контекста куда будет входить транк
insecure=port,invite
canreinvite=no ; запрещаем соединение в обход asterisk
nat=no ; поставить yes если SIP-провайдер работает из за NAT
dtmfmode=rfc2833 ; способ передачи сигналов DTMF
qualify=1000 ; устанавливаем период опроса абонента в мс
disallow=all ; запрещаем все кодеки
allow=alaw ; указываем кодек
allow=ulaw ; указываем кодек
call-limit=2 ; указываем кол-во линий доступных пользователям
Добавляем строку регистрации для исходящих вызовов:
# nano /etc/asterisk/trunks/REGISTER
register => 49561234567@ON-LIME/4951234567 ; Sip_Login@название_транка/extension (для "Bходящих звонков" в custom_extensions.conf)
3. Голосовое меню IVR (опционально)
Создаём фаил с голосовым меню
# mkdir /etc/asterisk/ivr
# touch /etc/asterisk/ivr/main.tree
# chown -R asterisk:asterisk /etc/asterisk/ivr
# nano /etc/asterisk/abonents/main.tree
[main_tree]
include => local-users ; разрешаем донабор коротких номеров
exten => s,1,Ringing
exten => s,2,Set(choice_counter=0)
exten => s,3,Wait(2) ; имитация вызова в течение 2-х секунд
exten => s,4,Set(TIMEOUT(response)=10) ; ждем ввода не более 10 секунд
exten => s,5,Set(TIMEOUT(digit)=5) ; пауза между набором цифр 5 секунд
exten => s,6,Background(/etc/asterisk/ivr/welcome) ; вставляем файл с голосовым приветствием
exten => s,7,WaitExten(10) ; ждем 10 секунд пока будет сделан выбор.
; если ничего не выбрали идите на ...
;exten => s,n,Queue(operator,tTk,1,,20) ; раскоментить, если используются очереди
exten => s,n,Dial(SIP/123,tTk,1,,40) ; закоментить, если используются очереди
exten => s,n,Playback(vm-nobodyavail)
exten => s,n,Hangup
; для соединения с "123" - нажмите один
exten => 1,1,Dial(SIP/4601,tTk,1,,40)
exten => 1,n,Playback(vm-nobodyavail)
exten => 1,n,Hangup
; для соединения с "321" - нажмите два
exten => 2,1,Dial(SIP/5101,tTk,1,,40)
exten => 2,n,Playback(vm-nobodyavail)
exten => 2,n,Hangup
; извините данный номер не существует ...
; отправляем абонента обратно в голосовое меню
exten => i,1,Playback(pbx-invalid)
exten => i,n,Goto(s,7)
; по истечении времени "t" ожидания на линии,
; прощаемся с абонентом (Playback(vm-goodbye)) и кладём трубку (Hangup()).
exten => t,1,Playback(vm-nobodyavail)
exten => t,2,Playback(vm-goodbye)
exten => t,n,Hangup()
Записываем файл с голосовым приветствием.
В файле custom_extensions.conf, в контекст [my-home] добавляем диалплан:
; запись звуковых сообщений
exten => 1000,1,Wait(2)
exten => 1000,2,Record(/etc/asterisk/ivr/testrecord:wav)
exten => 1000,3,Wait(2)
exten => 1000,4,Hangup
exten => 1100,1,Playback(/etc/asterisk/ivr/testrecord)
exten => 1100,2,Wait(2)
exten => 1100,3,Hangup
Набираем на телефонном аппарате номер 1000 и после гудка диктуем голосовое приветствие,
нажимаем # для завершения записи. Набираем номер 1100 для прослушивания.
Переименовываем файл:
# cp /etc/asterisk/ivr/testrecord.wav /etc/asterisk/ivr/welcome.wav
4. Очереди
Добавляем в конец файла queues.conf запись
# nano /etc/asterisk/queues.conf
#include "/etc/asterisk/conf/custom_queues.conf"
Создаём файл custom_queues.conf и редактируем его
# touch /etc/asterisk/conf/custom_queues.conf
# chown asterisk:asterisk /etc/asterisk/conf/custom_queues.conf
# nano /etc/asterisk/conf/custom_queues.conf
[operator]
context=my-home
strategy=ringall ; звонок будет поступать одновременно на все номера в группе
timeout=10
retry=2
wrapuptime=10
maxlen=15
member => SIP/123 ; номер абонента
member => SIP/321