private void Forward(UASInviteTransaction uasTx) { SIPB2BUserAgent b2bua = new SIPB2BUserAgent(_sipTransport, null, uasTx, null); b2bua.CallAnswered += (uac, resp) => ForwardCallAnswered(uac, b2bua); var dst = _getDestination(uasTx); if (dst == null) { Logger.LogInformation($"B2BUA lookup did not return a destination. Rejecting UAS call."); var notFoundResp = SIPResponse.GetResponse(uasTx.TransactionRequest, SIPResponseStatusCodesEnum.NotFound, null); uasTx.SendFinalResponse(notFoundResp); } else { Logger.LogInformation($"B2BUA forwarding call to {dst.Uri}."); b2bua.Call(dst); } }
private async Task Forward(UASInviteTransaction uasTx, ISIPAccount callerSIPAccount) { var invReq = uasTx.TransactionRequest; //uasTx.TransactionStateChanged += (tx) => Logger.LogDebug($"B2B uas tx state changed to {tx.TransactionState}."); //uasTx.TransactionTraceMessage += (tx, msg) => Logger.LogDebug($"B2B uas tx trace message. {msg}"); Logger.LogDebug($"B2B commencing forward for caller {invReq.Header.From.FromURI} to {invReq.URI}."); SIPB2BUserAgent b2bua = new SIPB2BUserAgent(_sipTransport, null, uasTx, callerSIPAccount); bool isAuthenticated = false; if (callerSIPAccount != null) { isAuthenticated = b2bua.AuthenticateCall(); } if (callerSIPAccount == null || isAuthenticated == true) { b2bua.CallAnswered += (uac, resp) => ForwardCallAnswered(uac, b2bua); var dst = await _sipdialPlan.Lookup(uasTx, null); if (dst == null) { Logger.LogInformation($"B2BUA lookup did not return a destination. Rejecting UAS call."); var notFoundResp = SIPResponse.GetResponse(uasTx.TransactionRequest, SIPResponseStatusCodesEnum.NotFound, null); uasTx.SendFinalResponse(notFoundResp); OnAcceptCallFailure?.Invoke(uasTx.TransactionRequest.RemoteSIPEndPoint, CallFailureEnum.NotFound, invReq); } else { Logger.LogInformation($"B2BUA forwarding call to {dst.Uri}."); b2bua.Call(dst); } } }