AngularJS和ApiRTC

时间:2016-05-18 15:15:10

标签: webrtc

我目前正在尝试将 ApiRTC apirtc)与AngularJS和cordova一起使用。

我希望被叫者接受"接受"在通话开始之前。当被叫方接受时,呼叫者具有不同的UI。

但是,每当我尝试使用 callAudio()而不是 call()在我的项目中重现this example时:

在被叫方点击"接受/拒绝"之前建立呼叫。 换句话说,在被调用者点击"接受"之前, callEstablished 事件将被调用给调用者。按钮。

当被叫方点击"接受"时,它会触发另一个 callEstablished 事件。

我按顺序使用以下说明

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

然后

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) {...});

然后

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

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

// Bandwitdh limitation
webRTCClient.setVideoBandwidth(300);

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

最后:

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

只有这些说明才能建立呼叫(事件+可以收听语音/音频)。谁能告诉我我做错了什么?

2 个答案:

答案 0 :(得分:1)

通过手动绑定远程流来修复它。

  • 来电者:在 callEstablished 处理程序
  • Callee :在用户点击时调用的 acceptCall()函数中。

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

<%= link_to @item.previous, title: "xxx" do %>
<span class="glyphicon glyphicon-chevron-left" style="color:#eeeeee"></span>
<% end %>

$ scope.localStreamEvent $ scope.remoteStreamEvent 在这里填写:

  // 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;
  }

答案 1 :(得分:0)

您是否在客户端上正确设置了以下选项?

试试这个:

webRTCClient.setUserAcceptOnIncomingCall(true);