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));
        }
示例#2
0
        /// <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);
        }