Pull to refresh

Ньюансы настройки GSM-шлюзов Addpac

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


За подробностями — под кат!


Файл sip.conf с комментариями

addpac_channels;_ шаблон дублирующихся настроек для каналов шлюза
host=dynamic;____ IP адрес или имя хоста. Для самостоятельной регистрации пира используется dynamic
type=friend;__ двусторонние звонки(входящие и исходящие)
context=from_addpac;_ входящие сначала обрабатываются здесь для получения callerid звонящего из
;____ remote-party-id, а затем уйдут для обработки прочих правил в контекст _sip
qualify=yes;_____ контроль активности sip-пиров, а не GSM-каналов шлюза
nat=no;__ использую шлюз в локальной сети asterisk
canreinvite=no;____ сервер Asterisk никогда не будет производить процедуру re-invite
insecure=port,invite;____ игнорировать порт и поле invite
disallow=all;_
сначала запрещаем все кодеки
allow=alaw; и разрешаем нужные
allow=ulaw
allow=gsm
maxcallbitrate=64
dtmfmode=rfc2833
call-limit=1;
в каждом слоте одна SIM-карта — максимум один звонок на канал.
relaxdtmf=yes;____ часто выручает при плохой слышимости в канале (помогает от пропуска или дублирования цифр)
sendrpid = yes;____ Asterisk добавит Remote-Party-ID: "имя sip-пира" <sip: номер звонящего@ip-адрес>
trustrpid = no;_____ Asterisk возьмет номер из RPI header (вместо From) из запроса при входящем вызове


; __детали пиров каналов шлюза
79220000001;_ 1-й GSM-слот, в котором стоит SIM с соответствующим номером
description=Addpac-1004-246 1-й слот;_ удобная вещь — увидите в выводе команды sip show peers в консоли астериска
username=79220000001;____
no comments
secret=Vm1;__no comments
permit=192.168.1.24;___ ip-адрес GSM-шлюза
fromdomain=192.168.1.24


; остальные каналы по аналогии


В конфигурации подставьте свои данные. Обратите внимание на прописанные команды called-party-number to-field и
remote-party-id — именно они позволяют транслировать входящий номер в Asterisk.


Конфигурация шлюза(Addpac-1004c)

!
! APOS(tm) configuration saved from vty
! 2016/01/26 00:41:19
!
version 8.51.004
!
hostname GS1004-24
!
username root password router administrator
!
!
script ntpdate default
resynchronize 12 10
server ip ntp1.dlink.com
!
interface Loopback0
ip address 127.0.0.1 255.0.0.0
!
interface FastEthernet0/0
ip address "IP-адрес шлюза" 255.255.255.0
speed auto
no qos-control
!
ip route 0.0.0.0 0.0.0.0 "IP-адрес Asterisk" 16
!
!
!
ftp server
!
!
dns name-server "IP-адрес шлюза в интернет"
logging command
logging event 4-warning
logging on
!
!
!
!
! VoIP configuration.
!
!
! Voice service voip configuration.
!
voice service voip
protocol sip
dtmf-relay out-of-band
fax protocol t38 redundancy 0
fax rate 9600
h323 call start fast
h323 call tunnel enable
timeout tinit 15
timeout tidt 5
static-jitter-buffer 35
ignore-dtmf-abcd-tone
no call-barring unconfigured-ip-address
no voip-inbound-call-barring enable
!
!
! Voice port configuration.
!
!
!
! GSM
voice-port 1/0
connection plar 79220000001
ring detect-timeout 70
caller-id enable
caller-id type etsi
caller-id name disable
!
! GSM
voice-port 1/1
connection plar 79220000002
ring detect-timeout 70
caller-id enable
caller-id type etsi
caller-id name disable
!
! GSM
voice-port 1/2
connection plar 79220000003
ring detect-timeout 70
caller-id enable
caller-id type etsi
caller-id name disable
!
! GSM
voice-port 1/4
connection plar 79220000001
ring detect-timeout 70
caller-id enable
caller-id type etsi
caller-id name disable
!
! Pots peer configuration.
!
dial-peer voice 0 pots
destination-pattern 00T
port 1/0
call-waiting
user-name 79220000001
user-password Vm1
translate-outgoing called-number 0
!
dial-peer voice 1 pots
destination-pattern 01T
port 1/1
call-waiting
user-name 79220000002
user-password Vm2
translate-outgoing called-number 1
!
dial-peer voice 2 pots
destination-pattern 02T
port 1/2
call-waiting
user-name 79220000003
user-password Vm3
translate-outgoing called-number 2
!
dial-peer voice 3 pots
destination-pattern 03T
port 1/3
user-name 79220000004
user-password Vm4
translate-outgoing called-number 3
!
!
!
! Voip peer configuration.
!
dial-peer voice 2000 voip
destination-pattern T
session target sip-server
session protocol sip
voice-class codec 1
no vad
dtmf-relay rtp-2833
!
!
!
dial-peer call-hold h
dial-peer call-transfer h
!
!
!
gatekeeper
!
!
! Gateway configuration.
!
gateway
h323-id voip."IP-адрес Asterisk"
ignore-msg-from-other-gk
shutdown
!
!
! Codec classes configuration.
!
voice class codec 0
codec preference 1 g711alaw
codec preference 2 g711ulaw
codec preference 3 g729
!
!
!
! Translation Rule configuration.
!
translation-rule 0
rule 0 007T 8T
!
translation-rule 1
rule 0 017T 8T
!
translation-rule 2
rule 0 027T 8T
!
translation-rule 3
rule 0 037T 8T
!
!
!
! SIP UA configuration.
!
sip-ua
user-register
sip-server "IP-адрес Asterisk" 5060 1
called-party-number to-field
remote-party-id
session-refresh update
register e164
!
!
! Tones
!
!
!
!
! SMTP sendmail configuration
!
sms-delivery
!
!
!
line console
!
line vty
!
gsm dev-restart-by-unreg 300
!
gsm 1/0
sms-language utf8
!
gsm 1/1
sms-language utf8
!
gsm 1/2
sms-language utf8
!
gsm 1/3
sms-language utf8
!


Идём дальше… Таким образом в переменных прописываю GSM-каналы для удобства — пропадает необходимость править диалплан по мелочам. Обратите внимание MEG-Channel-1=SIP/79220000001/00 — выбор канала для исходящего звонка. Соответствие найдете в конфиге addpac-а:


dial-peer voice 0 pots
destination-pattern 00T
port 1/0


Лишние цифры в начале строки обрезаются — 007 заменяется на 8, остальное транслируется без изменений.


translation-rule 0
rule 0 007T 8T


Определение каналов в переменных

[globals]
MEG-Channel-1=SIP/79220000001/00; GSM1 канал на шлюзе Addpac 1004c — 192.168.1.24 — 1 слот
MEG-Channel-2=SIP/79220000002/01; GSM2 канал на шлюзе Addpac 1004c — 192.168.1.24 — 2 слот
MEG-Channel-3=SIP/79220000003/02; GSM1 канал на шлюзе Addpac 1004c — 192.168.1.24 — 3 слот
MEG-Channel-4=SIP/79220000004/02; GSM1 канал на шлюзе Addpac 1004c — 192.168.1.24 — 4 слот


Комментарии внутри...


Контекст для получения входящих номеров из заголовка Remote-Party-ID

[from_addpac]; — актуально для шлюзов Addpac


exten => _X.,1,NoOP(${EXTEN}); номер шлюзовой SIM-карты, на которую поступил звонок
same => n,NoOP(${SIP_HEADER(Remote-Party-ID)}); весь заголовок до выборки
same => n,Set(whoid=${SIP_HEADER(Remote-Party-ID)}); присваиваем переменной whoid значение rpid
;(т.е whoid=sip:79221112233@172.16.128.228;screen=yes;party=calling)
same => n,Set(whoid=${CUT(whoid,@,1)}); выдираем из whoid подстроку "<sip:79221112233" — строка до собаки
same => n,Set(whoid=${CUT(whoid,:,2)}); выдираем сам номер — 79221112233 — после двоеточия
same => n,Set(CALLERID(num)=${whoid}); ну тут и так понятно
same => n,Goto(_sip,${EXTEN},1); уходим в основной контекст приема звонков _sip (замените на свой)


Комментарии внутри...


Входящие с шлюзовых SIM-карт

[sip]
; DISA-Call numbers — exten =>
[7,8]922000000[1,2,3,4],1,Goto(VoiceDisa,s,1); входящие c шлюзовых номеров
exten =>
[7,8]922000000[1,2,3,4]/79221112233,1,Dial(SIP/1001,30,mtT); простое перенаправление
; звонка в зависимости от номера звонящего.


Комментарии внутри...


Исходящие через каналы шлюза

[macro-dial-to-megafon]

… Dial(${MEG-Channel-1}7${ARG1:1:10},45,mgtF); Звоним через 1-й канал в макросе — ARG это EXTEN,
; отправленный в макрос


Буду рад советам и корректировкам в комментариях.

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.