2017-04-04 16 views
1

私は電気通信会社に勤務しています。私たちはSIP電話機のJsSIPライブラリを開発したいと考えています。しかし、私たちはそれをすることはできません。このようなテスト用の基本フォームを作成します。JsSIP実装

var socket = new JsSIP.WebSocketInterface('*****'); 
var configuration = { 
    sockets : [ socket ], 
    uri  : '*****', 
    password : '*****' 
}; 

var ua = new JsSIP.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 } 
}; 

var session = ua.call('680', options); 

上記のコードは動作しています。私たちはどこにでも電話することができますが、電話をかけるユーザーの声は私たちには来ません。どうやってやるの?私たちは何をすべきですか?誰もこのプロジェクトのサンプルコードを持っていますか?

答えて

0

コールが確立されているにもかかわらず、音声パスが存在しない場合は、おそらく、発信者/着信者のSDPエンドポイントには互いにアクセスできません。

この場合、理由が「RTPタイムアウト」でコールが切断されます。 JsSIP.debug.enable( 'JsSIP:*')を実行して

  1. 電源を入れJSSIPコンソールデバッグON:ここ

    はいくつかのヒントです。

  2. ページをリロードします。

  3. 詳細については、電話をかけ、ブラウザのコンソールログを確認してください。その上

より:http://jssip.net/documentation/3.0.x/api/debug/

あなたはSDP IPの間違ったセットが出て行くかで来て対処表示された場合、ICE候補が適切な順序に誤りがあるかどうか。

この場合、STUNやその他の設定を調整する必要があります。 http://jssip.net/documentation/0.3.x/api/ua_configuration_parameters/

また、jssipのデモページを参照してソースコードを表示し、追加の設定がどのように適用されるかを確認してください。 https://tryit.jssip.net/

1

サンプルコードをお探しの場合は、react-sip(JsSIPをReactアプリケーションに組み込むのに役立つパッケージ)の実装をチェックしてください。特に、Reactを使用していなくてもthe source of <SipProvider/> componentが便利です。

おそらく、ユーザーの声が聞こえない理由は、ページにHTML5 <audio/> DOM要素がなく、JsSIPインスタンスに添付されているためです。ここで

は、追加すべきかおおよそ次のとおりです。

// in the beginning, e.g. before you create an instance of JsSIP.WebSocketInterface 
var remoteAudio = window.document.createElement('audio'); 
window.document.body.appendChild(remoteAudio); 

// inside rtcSession.on('accepted', function() {...}) 
remoteAudio.src = window.URL.createObjectURL(
    rtcSession.connection.getRemoteStreams()[0] 
); 
remoteAudio.play(); 
// rtcSession comes from an argument in 
// ua.on('newRTCSession', ({ originator, session: rtcSession }) => {}); 

// when no longer need to make calls (e.g. on user logout) 
delete remoteAudio;