Я использую библиотеку JsSIP для подключения к моему SIP-серверу freeswitch и вызова на нем. вот мой код, такой же, как пример кода на странице JsSIP github :
jssip_1.debug.enable('JsSIP:*');
var socket = new jssip_1.WebSocketInterface('wss://85.85.8.5:7443');
var configuration = {
sockets: [socket],
uri: 'sip:282132646427442@abc.xyz',
password: '123456',
register_expires: 1800,
};
var ua = new jssip_1.UA(configuration);
ua.start();
// Register callbacks to desired call events
var eventHandlers = {
'progress': function (e) {
console.log('call is in progress');
},
'failed': function (e) {
console.log('call failed with cause: ' + e.data.cause);
},
'ended': function (e) {
console.log('call ended with cause: ' + e.data.cause);
},
'confirmed': function (e) {
console.log('call confirmed');
}
};
var options = {
'eventHandlers': eventHandlers,
'mediaConstraints': { 'audio': true, 'video': true },
'extraHeaders': [
'X-rol: caller',
'X-rid: 01',
'X-src-app: 12345' ,
'X-srv: a2a',
'X-ver: 1'
],
};
setTimeout(function () {
var session = ua.call('sip:25896456525@abc.xyz', options);
}, 3000);
С этим кодом я отправляю запрос на регистрацию, и соединение установлено успешно. Я выложил здесь несколько журналов связи:
JsSIP: Транспортное отправляющее сообщение:
РЕГИСТРАЦИЯ sip: @ abc.xyz SIP / 2.0
Через: SIP / 2.0 / WSS hdnbf6qreal4.invalid; ветвь = z9hG4bK8363908
Макс-форварды: 69
Кому: sip: 282132646427442@abc.xyz>
От: sip: 282132646427442@abc.xyz>; tag = gkej80tf03
Call-ID: fnblcnmvcbr9p61nl9slv0
CSeq: 2 РЕГИСТРАЦИЯ
Авторизация: алгоритм дайджеста = MD5, имя пользователя = "282132646427442", realm = "abc.xyz", nonce = "16352d5c-d761-43f0-af0b-7eb4bfd607c0",
uri = "sip: abc.xyz", response = "f8c20be99ca1b84b5a6bf805c84662dd",
qop = auth, cnonce = "75c61daautv7", nc = 00000001
* +1032 * Контакт: + sip.ice; р-ID = 1 + sip.instance = ""; истекает = 1800
Истекает: 1800
Разрешить: INVITE, ACK, ОТМЕНА, BYE, ОБНОВЛЕНИЕ, СООБЩЕНИЕ, ОПЦИИ, REFER, INFO
Поддерживается: путь, груу, исходящий
Пользователь-агент: JsSIP 3.2.15
Длина содержимого: 0
JsSIP: Транспорт получило текстовое сообщение:
SIP / 2.0 200 OK
Через: SIP / 2.0 / WSS hdnbf6qreal4.invalid; ответвление = z9hG4bK8363908; получено = 192.168.104.182; rport = 57890
От:; tag = gkej80tf03
Кому:; tag = r672gj5BUmH1m
Call-ID: fnblcnmvcbr9p61nl9slv0
CSeq: 2 РЕГИСТРАЦИЯ
Контакт:; истекает = 497
Контакт:; истекает = 1800
Дата: вс, 04 ноября 2018 12:56:14 GMT
Пользователь-агент: FreeSWITCH-mod_sofia / 1.6.13 + git ~ 20161214T213702Z ~ d422498d0f ~ 64bit
Разрешить: ПРИГЛАСИТЬ, ACK, BYE, ОТМЕНА, ОПЦИИ, СООБЩЕНИЕ, ИНФОРМАЦИЯ, ОБНОВЛЕНИЕ, РЕГИСТРАЦИЯ, ССЫЛКА, УВЕДОМЛЕНИЕ
Поддерживается: таймер, путь, заменяет
После этого я ожидал, что отправлю и получу сообщение типа INVITE для начала вызова, но в консоли браузера ничего не печаталось:
JsSIP: вызов UA () + 3s browser.js: 183 JsSIP: RTCSession новый + 22м
browser.js: 183 JsSIP: RTCSession connect () + 1ms
browser.js: 183 JsSIP: RTCSession отправляет "peerconnection" + 4ms
browser.js: 183 JsSIP: RTCSession newRTCSession () + 1ms
browser.js: 183 JsSIP: сбой сеанса RTCSession + 81мс
browser.js: 183 JsSIP: RTCSession close () + 1ms
browser.js: 183 JsSIP: отправка RTCSession «сбой» + 2ms
Есть ли проблема в моем коде или на моем сервере? Я проверил логи сервера, но после регистрации нет запроса на какой-либо звонок.