我目前正在尝试将 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);
只有这些说明才能建立呼叫(事件+可以收听语音/音频)。谁能告诉我我做错了什么?
答案 0 :(得分:1)
通过手动绑定远程流来修复它。
$ 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);