2016-05-18 5 views
1

Ich versuche derzeit ApiRTC (apirtc) mit AngularJS und Cordova zu verwenden.AngularJS und ApiRTC

Ich möchte den Angerufenen "Annehmen", bevor der Anruf beginnt. Wenn der Angerufene akzeptiert, haben die Anrufer eine andere Benutzeroberfläche.

Aber immer, wenn ich versuche, mit callAudio() statt call()this example in meinem Projekt zu reproduzieren:

Der Anruf aufgebaut wird, bevor die Angerufene auf einem Klick kann „annehmen/ablehnen“ . Mit anderen Worten, das Ereignis callEstablished wird an den Aufrufer ausgelöst, bevor der Angerufene auf die Schaltfläche "Annehmen" klickt.

Wenn der Angerufene auf "Akzeptieren" klickt, wird ein weiterer callEstablished Ereignis ausgelöst.

Ich verwende die folgenden Anweisungen in dieser Reihenfolge

apiRTC.init({ 
    apiCCId : $scope.callData.callerId, 
    apiKey : "<MY_API_KEY>", 
    onReady: sessionReadyHandler, 
    idConversionActivated : false, 
}); 

dann

apiRTC.addEventListener("callEstablished", callEstablishedHandler); 
apiRTC.addEventListener("userMediaSuccess", userMediaSuccessHandler); 
apiRTC.addEventListener("incomingCall", incomingCallHandler); 
apiRTC.addEventListener("userMediaError", userMediaErrorHandler); 
apiRTC.addEventListener("hangup", hangupHandler); 
apiRTC.addEventListener("remoteStreamAdded", remoteStreamAddedHandler); 
apiRTC.addEventListener("connectedUsersListUpdate", connectedUsersListUpdateHandler); 
apiRTC.addEventListener("error", function(e) {...}); 

dann

// webRTC client creation 
webRTCClient = apiRTC.session.createWebRTCClient({ 
}); 

// Multi calls Activation 
webRTCClient.setAllowMultipleCalls(true); 

// Bandwitdh limitation 
webRTCClient.setVideoBandwidth(300); 

// Accept-Refuse 
webRTCClient.setUserAcceptOnIncomingCall(true); 

und schließlich:

webRTCClient.callAudio($scope.callData.receiverId); 

Und nur mit diesen Anweisungen wird der Anruf hergestellt (Event + kann Sprache/Audio hören). Kann mir jemand sagen, was ich falsch mache?

Antwort

1

es behoben, durch den Remote-Stream manuell zu binden.

  • Caller: in der callEstablished Handler
  • Callee: in meinem acceptCall() Funktion durch Klicken des Nutzers aufgerufen.

$ scope.callState.active = true; webRTCClient.acceptCall ($ scope.callId);

// Add streams 
    if ($scope.localStreamEvent && $scope.remoteStreamEvent) { 
    console.log("STREAMS:"); 
    console.log($scope.localStreamEvent.detail.stream.id); 
    console.log($scope.remoteStreamEvent.detail.stream.id); 

    webRTCClient.addStreamInDiv($scope.remoteStreamEvent.detail.stream, $scope.remoteStreamEvent.detail.callType, 
     "remote", 'remoteElt-' + $scope.remoteStreamEvent.detail.callId, 
      {width : "640px", height : "480px"}, false); 

    $scope.callState.active = true; 
    } 

$ scope.localStreamEvent und $ scope.remoteStreamEvent wird hier gefüllt:

function userMediaSuccessHandler(e) { 
    $scope.localStreamEvent = e; 

    webRTCClient.addStreamInDiv($scope.localStreamEvent.detail.stream, $scope.localStreamEvent.detail.callType, 
      "mini", 'miniElt-' + $scope.localStreamEvent.detail.callId, 
      {width : "128px", height : "96px"}, true); 

} 

function remoteStreamAddedHandler(e) { 
    $scope.remoteStreamEvent = e; 
} 
0

Setzen Sie die folgende Option korrekt auf Ihrem Client?

Try this:

webRTCClient.setUserAcceptOnIncomingCall(true); 
+0

Ich habe einen Code Beschreibung hinzugefügt, es kann helfen, das Problem zu zielen. – cacciutt