Взял тестовый номерок на YouMagiс. Решил через него астериск погонять. И тут выяснилось, что все примеры используют стандартный chan_sip или для FreePBX. А у меня pjsip стоит и рулю я ручками через конфиги:).
Вообщем в итоге получилось, вот так :
pjsip.conf
======================
[global]
type=global
; да, я даже freepbx заводил в виртуалке 🙂 но не понравилось
; оно мне, часть конфига спер оттуда.
user_agent=FPBX-13.0.190.19(13.14.0)
default_outbound_endpoint=dpma_endpoint
; debug не понравился. Лучше tcpdump для отладки еще
; ничего не придумали 🙂
;debug=yes
[dpma_endpoint]
type=endpoint
context=dpma-invalid
[0.0.0.0-udp]
type=transport
protocol=udp
bind=0.0.0.0:5060
; разумеется вместо 999 надо писать реальный IP роутера,
; за которым за натом стоит астериск
external_media_address=999.999.999.999
external_signaling_address=999.999.999.999
allow_reload=yes
local_net=192.168.0.0/24
; тут определены два внутренних телефона 100 и 101
; много текста не показано
;==== YouMagic =======================
; Предположим, что МТТ дали телефон, он же логин (хотя логин
; при регистрации можно установить любой):
; 74990000000
; и пароль: хитрыйпароль
[reg_voip.mtt.ru]
type = registration
retry_interval = 20
max_retries = 10
contact_user = 74990000000
expiration = 120
transport = 0.0.0.0-udp
outbound_auth = auth_reg_voip.mtt.ru
client_uri = sip:74990000000@voip.mtt.ru
server_uri = sip:voip.mtt.ru:5060
[auth_reg_voip.mtt.ru]
type = auth
password = хитрыйпароль
username = 74990000000
[mytrunk]
type = aor
contact = sip:74990000000@voip.mtt.ru
[mytrunk]
type = identify
endpoint = mytrunk
; это IP MTT сервера
match = 80.75.132.66
[mytrunk]
type = auth
username = 74990000000
password = хитрыйпароль
;realm = voip.mtt.ru
[mytrunk]
type = endpoint
context = from-external
transport=0.0.0.0-udp
disallow = all
allow = ulaw
allow = alaw
rtp_symmetric = yes
rewrite_contact = yes
from_user = 74990000000
from_domain=voip.mtt.ru
; МТТ не может аутентифицироваться на нашем сервере
; поэтому не включаем аутентификацию при входящих с МТТ
;auth = mytrunk
outbound_auth = mytrunk
aors = mytrunk
=======================================================
extensions.conf
=====================================================
[others]
[from-internal]
exten => 100,1,Dial(PJSIP/100,20)
exten => 100,2,VoiceMail(100,u)
exten => 101,1,Dial(PJSIP/101,20)
exten => 101,2,VoiceMail(101,u)
exten => *98,1,VoiceMailMain(${CALLERID(num)},s)
exten => _810X.,1,Busy
exten => _8XXX.,1,NoOp(«8xxx»)
exten => _8XXX.,n,Dial(PJSIP/${EXTEN}@mytrunk)
exten => _8XXX.,n,Hangup
[from-external]
exten => 74990000000,1,Dial(PJSIP/100)
exten => 74990000000,n,Hangup
=======================================================
Разумеется, мой сервер за натом. И, разумеется, в фаерволе разрешены хождение пакетов и их проброс только с сервера МТТ.