Ошибка «Unable to retrieve PJSIP transport …» возникает когда TRANSPORT не существует или указан не верно.
Допустим в файле /etc/asterisk/pjsip.conf настроен TRANSPORT:
;================================ TRANSPORTS ==
[transport-udp]
type=transport
protocol=udp ;udp,tcp,tls,ws,wss,flow
bind=0.0.0.0
И соответственно он должен быть указан в шаблоне или в endpoint:
;===============ENDPOINT TEMPLATES
[endpoint-basic](!)
type=endpoint
transport=transport-udp ;ЗДЕСЬ
context=from-internal
disallow=all
allow=alaw
;===============EXTENSION 221
[221](endpoint-basic)
auth=auth221
aors=221
То есть как видим в моем примере указан «transport-udp» в TRANSPORTS и в ENDPOINT TEMPLATES либо напрямую в endpoint:
[221]
type=endpoint
transport=transport-udp ;ЗДЕСЬ
context=from-internal
disallow=all
allow=alaw
auth=auth221
aors=221
Перезапустим asterisk и убедимся что нет ошибки:
service asterisk restart
asterisk -rvv
pjsip show transports
pjsip show transport transport-udp
exit
Если указывается несколько TRANSPORT, то они должны быть на разных портах, пример указания порта (если порт не указывать, то по умолчанию используется 5060):
bind=0.0.0.0:5061
Смотрите также мою статью:
Установка Asterisk из исходного кода