Как сделать SIP звонок с помощью Node.JS?

Всем привет, задача следующего характера: Есть приложение на node.js, есть учетка у SIP-провайдера myvoiptraffic.com. Нужно из приложения совершить дозвон абоненту через этого провайдера. Достаточно просто дозвониться (или получить в ответ "занято"), после этого прекратить звонок (делается для того, чтоб быть уверенным в том, что клиент взял в руку телефон). Нашел на просторах npm модуль sip-client. Делаю все по инструкции:
var SIPClient = require('sip-client');
var util = require('util');

// I suppose these are pretty self explanatory
var opts = {
	user: 'YYYYYYYYYY', // логин пользователя на myvoiptraffic.com
	password: 'QWERTYQWERTY', // пароль пользователя
	host: 'sip.myvoiptraffic.com',
	debug: true //unless you want to see HARDCORE SIP ACTION!
};

var client = new SIPClient(opts);

var uri = {
	schema: 'sip',
	host: opts.host,
	user: opts.user
};
var headers = {
	contact: "<sip:"+opts.host+":5060>",
	from: {
		name: '<sip:YYYYYYYYYY@sip.myvoiptraffic.com>',
		uri: uri
	},
	to: {
		name: '<sip:XXXXXXXXXXX@sip.myvoiptraffic.com>',
		uri: uri
	}
};

var message = client.message('register', {host: opts.host}, headers);
message.send();

message.on('success', function(msg) {
	client.on('invite', function(msg){
		var from = client.sip.parseUri(msg.headers.from.uri);
		util.log("The most handsome dude(ette), "+from.name+" at "+from.user);
	});
});

вываливается на таймауте подключения:
bash-3.2$ node .
> REGISTER sip:sip.myvoiptraffic.com SIP/2.0
> contact: <sip:sip.myvoiptraffic.com:5060>
> From: <sip:YYYYYYYYYY@sip.myvoiptraffic.com> <sip:YYYYYYYYYY@sip.myvoiptraffic.com>
> To: <sip:XXXXXXXXXXX@sip.myvoiptraffic.com> <sip:YYYYYYYYYY@sip.myvoiptraffic.com>
> call-id: 11b677-1e00e7-1eb415-18569c
> Via: SIP/2.0/TCP sip.myvoiptraffic.com
> CSeq: 1 REGISTER
> content-length: 0
> 
> 

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: connect ETIMEDOUT
    at errnoException (net.js:904:11)
    at Object.afterConnect [as oncomplete] (net.js:895:19)


Очень сомнительного качества модуль, неизвестно, работал ли он когда-нибудь. Кто-нибудь случайно не сталкивался с похожей задачей? Может есть идеи какие-нибудь?

П.С. В коде и в логе логин пользователя везде заменен на YYYYYYYYYY, номер абонента на ХХХХХХХХХХХ и пароль пользователя на QWERTYQWERTY. Естественно в коде используются реальные значения, используя которые удалось удачно созвониться через сотфон Linphone
  • Вопрос задан
  • 7160 просмотров
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы