Ejemplo n.º 1
0
        public async Task DoStepAsync(Step step, ICall call)
        {
            _call = call;
            if (!string.IsNullOrEmpty(call.CallState.GetBridgeId()))
            {
                await call.StopHoldingBridgeAsync().ConfigureAwait(false);
            }
            _callBridge = await call.CreateBridgeAsync(BridgeType.NoDTMF).ConfigureAwait(false);

            call.CallState.CalledPartyAcceptTime = DateTimeOffset.Now;
            call.CallState.SetBridge(_callBridge);
            call.InputProcessor.ChangeInputSettings(null);

            if (!await AreBothLinesStillConnected())
            {
                await call.FireStateChange(Trigger.FailedCallFlow);

                return;
            }
            await call.AddLineToBridgeAsync(call.CallState.GetIncomingLineId(), _callBridge.Id).ConfigureAwait(false);

            //await call.SipBridgingApi.MuteLineAsync(call.CallState.GetIncomingLineId());
            await call.AddLineToBridgeAsync(call.CallState.GetOutgoingLineId(), _callBridge.Id).ConfigureAwait(false);

            //await call.SipBridgingApi.MuteLineAsync(call.CallState.GetOutgoingLineId());

            call.CallState.AddStepToIncomingQueue(step.GetStepFromConnector(NextStep));
            await call.FireStateChange(Trigger.NextCallFlowStep);
        }