public ActionResult IncomingCall(string callId, string callDate, string caller, string userShortNumber) { DateTime date = DateTime.Parse(callDate); CrmHelper crm = new CrmHelper(); CallerHepler callerHelper = crm.CreatePhoneCall(callId, date, caller, userShortNumber); if (callerHelper.Code == 200) { CrmHub signalRUser = new CrmHub(); ResponseHelper response = signalRUser.ExecuteSignalRIncomingCall(callerHelper); if (response.IsError) { if (response.Code == 500) { return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError)); } else if (response.Code == 404) { return(new HttpNotFoundResult("Not Found")); } } } else { return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError)); } return(new HttpStatusCodeResult(HttpStatusCode.OK)); }
/// <summary> /// Запуск звонка в браузере /// </summary> /// <param name="callerHelper">Объект с полями информации о вызывающем абоненте АТС + Короткий номер пользователя + ID звонка</param> /// <returns>status code</returns> public ResponseHelper ExecuteSignalRIncomingCall(CallerHepler callerHelper) { ResponseHelper response = new ResponseHelper(); try { SignalRUser user = connectionsList.Find(x => x.ShortNumber.Equals(callerHelper.UserShortNumber)); Guid[] connectionsIds = user.ConnectionId.ToArray(); string[] connectionsIdsToString = Array.ConvertAll(connectionsIds, x => x.ToString()); var context = GlobalHost.ConnectionManager.GetHubContext <CrmHub>(); context.Clients.Clients(connectionsIdsToString).IncomingCall(callerHelper); response.Code = 200; } catch (Exception e) { response.IsError = true; response.ErrorMessage = e.Message; response.Code = 500; return(response); } return(response); }