Настройка 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

Метки: , ,
Copyright © 2022

Опубликовано 01.12.2022 от admin в категории "HowTo