День добрый.
Провели на предприятие ip телефонию. Подняли свой сервер и через него раздаем внутренних абонентов.
server - Ubuntu 20.04.2 LTS
Версия астериск - Asterisk 16.2.1 - астериск чистый
Проблем со связью две:
1 Эхо на городские номера, но провайдер упорно говорит что это нормально и зависит от оборудования через которое создается канал.
2 - ОСНОВНАЯ - заикание на канале. Не всегда, но очень часто абонент начинает заикаться, случится может как прямо с первой секунды так и через несколько минут.
Проблема двусторонняя т.е. заикаемся и мы и абонент.
Проверял на потерю пакетов с провайдером через mtr -
за пол часа потеряно 100 пакетов, средний пинг 20ms максимальный 120ms
схема подключения:
конфиги :
sip conf :
[general]
deny=0.0.0.0/0.0.0.0
permit=192.168.0.44/255.255.255.0
permit=****/255.255.255.0
allowsubscribe=yes
callcounter=yes
subscribecontext=BLF
[authentication]
[20111]
type=friend
host=dynamic
secret=*****
nat=force_rport,comedia
canreinvite=no
context=internal
qualify=yes
call-limit=2
disallow=all
allow=alaw
deny=0.0.0.0/0.0.0.0
permit=192.168.0.0/255.255.255.0
allowsubscribe=yes
callcounter=yes
subscribecontext=BLF
extensions.conf
[general]
static=yes
writeprotect=no
[globals]
DBHost = localhost
DBuser = ********
DBpass = ********
DBname = asterisk
DBowners = owners
[default]
;Вешаем трубку
[handup-sip]
exten => _X!,1,HangUp()
; Busy Lamp Functionality
[BLF]
exten => _1XX,hint,SIP/20${EXTEN}
[internal]
;исходящие звонки с внутренних аппаратов попадают сюда
exten => _[123]XX,1,Set(fname=${STRFTIME(${EPOCH},,%Y-%m-%d-%H%M)}-${CALLERID(number)}-${EXTEN})
same => n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)
same => n,Monitor(wav,/home/asterisk/records/inner/${fname},mb)
same => n,Dial(SIP/20${EXTEN},30)
[rset] ;входящие звонки с транка попадают сюда
exten => _201[123]X,1,Set(fname=${STRFTIME(${EPOCH},,%Y-%m-%d-%H%M)}-${CALLERID(number)}-${EXTEN})
same => n,Monitor(wav,/home/asterisk/records/in/${fname},mb)
same => n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)
same => n,Playback(/home/asterisk/records/service/allRecord)
same => n,Dial(SIP/${EXTEN},30,rTt)