/// <summary> /// Subscription for mission modification /// </summary> /// <param name="es">Subscriptiob object</param> /// <param name="callback">callback for telemetry subscription</param> public void SubscribeMission(ObjectModificationSubscription es, System.Action <Mission> callback) { UnsubscribeAll(); _objectNotificationSubscription = es; _eventSubscriptionWrapper.ObjectModificationSubscription = _objectNotificationSubscription; SubscribeEventRequest requestEvent = new SubscribeEventRequest(); requestEvent.ClientId = _connect.AuthorizeHciResponse.ClientId; requestEvent.Subscription = _eventSubscriptionWrapper; var responce = _connect.Executor.Submit <SubscribeEventResponse>(requestEvent); var subscribeEventResponse = responce.Value; SubscriptionToken st = new SubscriptionToken(subscribeEventResponse.SubscriptionId, _getObjectNotificationHandler <Mission>( (token, exception, mission) => { if (token == ModificationType.MT_UPDATE) { _messageReceived(mission); } } ), _eventSubscriptionWrapper); _notificationListener.AddSubscription(st); tokens.Add(st); _callback = callback; }
public override AbstractResponse OnEvent_SubscribeRequest(SubscribeEventRequest subscribeEventRequest) { WriteLog("GetSubscribeReply"); ReplyInfo subscribeReply = ReplyHelper.GetSubscribeReply(); AbstractResponse result; if (subscribeReply == null) { WriteLog("subscribeReply == null"); result = null; } else { WriteLog("取消关注再关注,进入这个事件"); subscribeReply.Keys = "登录"; AbstractResponse response = this.GetResponse(subscribeReply, subscribeEventRequest.FromUserName); if (response == null) { this.GotoManyCustomerService(subscribeEventRequest); } response.ToUserName = subscribeEventRequest.FromUserName; response.FromUserName = subscribeEventRequest.ToUserName; result = response; //取消关注再关注,进入这个事件 ScanVisitDistributor(subscribeEventRequest, subscribeEventRequest.EventKey); } return(result); }
public void SubscribeTelemtry(Action <int, bool> downlinkCallback) { _downlinkCb = downlinkCallback; _eventSubscriptionWrapper.TelemetryBatchSubscription = new TelemetryBatchSubscription() { PollingPeriodMilliseconds = POLLING_INTERVAL, PollingPeriodMillisecondsSpecified = true }; SubscribeEventRequest requestEvent = new SubscribeEventRequest(); requestEvent.ClientId = _connectionService.ClientId; requestEvent.Subscription = _eventSubscriptionWrapper; var responce = _connectionService.Submit <SubscribeEventResponse>(requestEvent); if (responce.Exception != null) { throw responce.Exception; } if (responce.Value == null) { throw new System.Exception("Server return empty response on SubscribeTelemtry event"); } var subscribeEventResponse = responce.Value; SubscriptionToken st = new SubscriptionToken(subscribeEventResponse.SubscriptionId, _getTelemetryNotificationHandler( (telemetry) => { _onTelemetryBatchReceived(telemetry); }), _eventSubscriptionWrapper); _connectionService.NotificationListener.AddSubscription(st); }
/// <summary> /// Example how to activate subscription for server log messages /// </summary> /// <param name="es"></param> /// <param name="callback"></param> public void SubscribeLog(ObjectModificationSubscription es, System.Action <VehicleLogEntry> callback) { _callback = callback; _objectNotificationSubscription = es; _eventSubscriptionWrapper.ObjectModificationSubscription = _objectNotificationSubscription; SubscribeEventRequest requestEvent = new SubscribeEventRequest(); requestEvent.ClientId = _connect.AuthorizeHciResponse.ClientId; requestEvent.Subscription = _eventSubscriptionWrapper; var responce = _connect.Executor.Submit <SubscribeEventResponse>(requestEvent); var subscribeEventResponse = responce.Value; SubscriptionToken st = new SubscriptionToken(subscribeEventResponse.SubscriptionId, _getObjectNotificationHandler <VehicleLogEntry>( (token, exception, log) => { if (token == ModificationType.MT_CREATE) { _oneMessageReceived(log); } } ), _eventSubscriptionWrapper); _notificationListener.AddSubscription(st); _callback = callback; }
/// <summary> /// Example how to activate subscription to all vehicles telemetry /// </summary> public void SubscribeTelemtry() { _eventSubscriptionWrapper.TelemetrySubscription = _telemetrySubscription; SubscribeEventRequest requestEvent = new SubscribeEventRequest(); requestEvent.ClientId = _connect.AuthorizeHciResponse.ClientId; requestEvent.Subscription = _eventSubscriptionWrapper; var responce = _connect.Executor.Submit <SubscribeEventResponse>(requestEvent); var subscribeEventResponse = responce.Value; SubscriptionToken st = new SubscriptionToken(subscribeEventResponse.SubscriptionId, _getTelemetryNotificationHandler( (vehicleId, telemetry) => { if (!_telemetryDTOList.ContainsKey(vehicleId)) { _telemetryDTOList.Add(vehicleId, new ServiceActionTelemetry() { ServiceTelemetryDTO = new ServiceTelemetryDTO() }); } _telemetryReceived(vehicleId, telemetry); }), _eventSubscriptionWrapper); _notificationListener.AddSubscription(st); }
public void SubscribeTelemtry(Action <int, TelemetryKey, TelemetryValue> cb) { _tlmCallBack = cb; _eventSubscriptionWrapper.TelemetryBatchSubscription = new TelemetryBatchSubscription() { PollingPeriodMilliseconds = POLLING_INTERVAL, PollingPeriodMillisecondsSpecified = true }; SubscribeEventRequest requestEvent = new SubscribeEventRequest { ClientId = _connectionService.GetClientId(), Subscription = _eventSubscriptionWrapper }; var responce = _connectionService.Submit <SubscribeEventResponse>(requestEvent); if (responce.Exception != null) { throw responce.Exception; } if (responce.Value == null) { throw new InvalidOperationException("Server return empty response on SubscribeTelemtry event"); } var subscribeEventResponse = responce.Value; SubscriptionToken st = new SubscriptionToken(subscribeEventResponse.SubscriptionId, getTelemetryNotificationHandler( (telemetry) => { onTelemetryBatchReceived(telemetry); }), _eventSubscriptionWrapper); _connectionService.NotificationListener.AddSubscription(st); }
/// <summary> /// Example how to activate subscription o vehicle modifications /// </summary> /// <param name="es">ObjectModification with vehicle object id</param> /// <param name="callBack">callback with received event</param> public void SubscribeVehicle(ObjectModificationSubscription es, System.Action <Vehicle> callBack) { _objectNotificationSubscription = es; _eventSubscriptionWrapper.ObjectModificationSubscription = _objectNotificationSubscription; SubscribeEventRequest requestEvent = new SubscribeEventRequest(); requestEvent.ClientId = _connect.AuthorizeHciResponse.ClientId; requestEvent.Subscription = _eventSubscriptionWrapper; var responce = _connect.Executor.Submit <SubscribeEventResponse>(requestEvent); var subscribeEventResponse = responce.Value; SubscriptionToken st = new SubscriptionToken(subscribeEventResponse.SubscriptionId, _getObjectNotificationHandler <Vehicle>( (token, exception, vehicle) => { if (token == ModificationType.MT_UPDATE && _vehicleList.ContainsKey(vehicle.Id)) { _messageReceived(vehicle, _vehicleList[vehicle.Id]); } } ), _eventSubscriptionWrapper); _notificationListener.AddSubscription(st); tokens.Add(st); AddVehicleIdTolistener(es.ObjectId, callBack); }
public override AbstractResponse OnEvent_SubscribeRequest(SubscribeEventRequest subscribeEventRequest) { string text = ""; if (subscribeEventRequest.EventKey != null) { text = subscribeEventRequest.EventKey; } if (text.Contains("qrscene_")) { text = text.Replace("qrscene_", "").Trim(); if (text == "1") { if (WeiXinHelper.BindAdminOpenId.Count > 10) { WeiXinHelper.BindAdminOpenId.Clear(); } if (WeiXinHelper.BindAdminOpenId.ContainsKey(subscribeEventRequest.Ticket)) { WeiXinHelper.BindAdminOpenId[subscribeEventRequest.Ticket] = subscribeEventRequest.FromUserName; } else { WeiXinHelper.BindAdminOpenId.Add(subscribeEventRequest.Ticket, subscribeEventRequest.FromUserName); } return(new TextResponse { CreateTime = System.DateTime.Now, Content = "您正在扫描尝试绑定管理员身份,身份已识别", ToUserName = subscribeEventRequest.FromUserName, FromUserName = subscribeEventRequest.ToUserName }); } ScanInfos scanInfosByTicket = ScanHelp.GetScanInfosByTicket(subscribeEventRequest.Ticket); Globals.Debuglog(text + ":" + subscribeEventRequest.Ticket, "_Debuglog.txt"); if (!MemberProcessor.IsExitOpenId(subscribeEventRequest.FromUserName) && scanInfosByTicket != null && scanInfosByTicket.BindUserId > 0) { this.CreatMember(subscribeEventRequest.FromUserName, scanInfosByTicket.BindUserId); ScanHelp.updateScanInfosLastActiveTime(System.DateTime.Now, scanInfosByTicket.Sceneid); } } WeiXinHelper.UpdateRencentOpenID(subscribeEventRequest.FromUserName); Hidistro.Entities.VShop.ReplyInfo subscribeReply = ReplyHelper.GetSubscribeReply(); if (subscribeReply == null) { return(null); } subscribeReply.Keys = "登录"; AbstractResponse response = this.GetResponse(subscribeReply, subscribeEventRequest.FromUserName); if (response == null) { this.GotoManyCustomerService(subscribeEventRequest); } response.ToUserName = subscribeEventRequest.FromUserName; response.FromUserName = subscribeEventRequest.ToUserName; return(response); }
public string GetSubscribedEvent(LoginRequest request) { string response = ""; try { string getResponseJSON = ""; IList <SubscribeEventRequest> eventList = new List <SubscribeEventRequest>(); int count = 0; JObject jObj = null; FirebaseResponse getResponse = firebaseDBEvent.Get(); if (getResponse.Success) { if (getResponse.JSONContent != null && !getResponse.JSONContent.ToString().Equals("") && !getResponse.JSONContent.ToString().Equals("null") && !getResponse.JSONContent.ToString().Equals("{}")) { getResponseJSON = getResponse.JSONContent; jObj = JObject.Parse(getResponseJSON); count = jObj.Count; foreach (var result in jObj) { SubscribeEventRequest subscribeRequest = null; Console.WriteLine(result.Key); getResponseJSON = result.Value["InstanceId"].ToString(); if (!getResponseJSON.ToString().Equals("") && !getResponseJSON.ToString().Equals("null") && !getResponseJSON.ToString().Equals("{}")) { JObject instanceJson = JObject.Parse(getResponseJSON); Console.WriteLine(getResponseJSON); foreach (var instances in instanceJson) { Console.WriteLine(instances.Key); if (!instances.Key.Equals("") && (instances.Key == request.InstanceId)) { subscribeRequest = new SubscribeEventRequest(); subscribeRequest.EventId = result.Value["EventId"].ToString(); subscribeRequest.EventName = result.Value["EventName"].ToString(); eventList.Add(subscribeRequest); break; } } } } } } if (eventList.Count > 0) { var json = new JavaScriptSerializer().Serialize(eventList); response = json.ToString(); } } catch (Exception Ex) { throw Ex; } return(response); }
public string DeleteFromTopic(Globals.eventdetails eventdetails, SubscribeEventRequest subscribeEvent = null, SubscribeVenueRequest subscribeVenue = null) { string response = string.Empty; string EventId = string.Empty; string InstanceId = string.Empty; try { if (eventdetails == Globals.eventdetails.FromEvent) { EventId = subscribeEvent.EventId; InstanceId = subscribeEvent.InstanceId; } else if (eventdetails == Globals.eventdetails.FromVenue) { EventId = subscribeVenue.VenueId; InstanceId = subscribeVenue.InstanceId; } WebRequest tRequest = WebRequest.Create(URLConstants.FirebaseUnSubscribeTopic); tRequest.Method = "post"; tRequest.ContentType = "application/json"; var data = new { to = "/topics/" + EventId, registration_tokens = new string[] { InstanceId } }; var json = JsonConvert.SerializeObject(data); Byte[] byteArray = Encoding.UTF8.GetBytes(json); tRequest.Headers.Add(string.Format("Authorization: key={0}", serverKey)); tRequest.ContentLength = byteArray.Length; using (Stream dataStream = tRequest.GetRequestStream()) { dataStream.Write(byteArray, 0, byteArray.Length); using (WebResponse tResponse = tRequest.GetResponse()) { using (Stream dataStreamResponse = tResponse.GetResponseStream()) { using (StreamReader tReader = new StreamReader(dataStreamResponse)) { String sResponseFromServer = tReader.ReadToEnd(); string str = sResponseFromServer; } } } } } catch (Exception ex) { throw ex; } return(response); }
public void SubscribeVehicle(System.Action <ClientVehicleDto, Enums.ModificationType> callBack) { var subscription = new ObjectModificationSubscription { ObjectType = "Vehicle" }; _eventSubscriptionWrapper.ObjectModificationSubscription = subscription; SubscribeEventRequest requestEvent = new SubscribeEventRequest { ClientId = _connectionService.GetClientId(), Subscription = _eventSubscriptionWrapper }; var responce = _connectionService.Submit <SubscribeEventResponse>(requestEvent); if (responce.Exception != null) { logger.Error(responce.Exception); throw new InvalidOperationException("Failed to subscribe on vehicle modifications. Try again or see log for more details."); } var subscribeEventResponse = responce.Value; SubscriptionToken st = new SubscriptionToken(subscribeEventResponse.SubscriptionId, getObjectNotificationHandler <Vehicle>( (token, vehicleId, vehicle) => { if (token == Sdk.Protocol.Encoding.ModificationType.MT_UPDATE || token == Sdk.Protocol.Encoding.ModificationType.MT_CREATE) { var newCvd = new ClientVehicleDto() { VehicleId = vehicle.Id, Name = vehicle.Name }; messageReceived(callBack, newCvd, Enums.ModificationType.UPDATED); } else { var newCvd = new ClientVehicleDto() { VehicleId = vehicleId, Name = string.Empty }; messageReceived(callBack, newCvd, Enums.ModificationType.DELETED); } }), _eventSubscriptionWrapper); _connectionService.NotificationListener.AddSubscription(st); tokens.Add(st); }
public void SubscribeVehicle(System.Action <ClientVehicleDTO, ModificationTypeDTO> callBack) { var subscription = new ObjectModificationSubscription(); subscription.ObjectType = "Vehicle"; _eventSubscriptionWrapper.ObjectModificationSubscription = subscription; SubscribeEventRequest requestEvent = new SubscribeEventRequest(); requestEvent.ClientId = _connectionService.ClientId; requestEvent.Subscription = _eventSubscriptionWrapper; var responce = _connectionService.Submit <SubscribeEventResponse>(requestEvent); if (responce.Exception != null) { logger.Error(responce.Exception); throw new Exception("Failed to subscribe on vehicle modifications. Try again or see log for more details."); } var subscribeEventResponse = responce.Value; SubscriptionToken st = new SubscriptionToken(subscribeEventResponse.SubscriptionId, _getObjectNotificationHandler <Vehicle>( (token, vehicleId, vehicle) => { if (token == ModificationType.MT_UPDATE || token == ModificationType.MT_CREATE) { var newCvd = new ClientVehicleDTO() { VehicleId = vehicle.Id, Name = vehicle.Name, TailNumber = vehicle.SerialNumber }; _messageReceived(callBack, newCvd, ModificationTypeDTO.UPDATED); } else { var newCvd = new ClientVehicleDTO() { VehicleId = vehicleId, Name = string.Empty, TailNumber = string.Empty }; _messageReceived(callBack, newCvd, ModificationTypeDTO.DELETED); } }), _eventSubscriptionWrapper); _connectionService.NotificationListener.AddSubscription(st); tokens.Add(st); }
public HttpResponseMessage UnsubscribeEvent(SubscribeEventRequest request) { bool response = false; try { EventDetails eventDetails = new EventDetails(); response = eventDetails.UnsubscribeEvent(request); return(Request.CreateResponse(HttpStatusCode.OK, response)); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.InternalServerError, false)); } }
public string AddtoTopic(Globals.eventdetails eventdetails, SubscribeEventRequest subscribeEvent = null, SubscribeVenueRequest subscribeVenue = null) { string response = string.Empty; string EventId = string.Empty; string InstanceId = string.Empty; try { if (eventdetails == Globals.eventdetails.FromEvent) { EventId = subscribeEvent.EventId; InstanceId = subscribeEvent.InstanceId; } else if (eventdetails == Globals.eventdetails.FromVenue) { EventId = subscribeVenue.VenueId; InstanceId = subscribeVenue.InstanceId; } WebRequest tRequest = WebRequest.Create(URLConstants.FirebaseSubscribeTopic + "" + InstanceId + "/rel/topics/" + EventId); tRequest.Method = "post"; tRequest.ContentType = "application/json"; tRequest.Headers.Add(string.Format("Authorization: key={0}", serverKey)); tRequest.ContentLength = 0; using (WebResponse tResponse = tRequest.GetResponse()) { using (Stream dataStreamResponse = tResponse.GetResponseStream()) { using (StreamReader tReader = new StreamReader(dataStreamResponse)) { String sResponseFromServer = tReader.ReadToEnd(); string str = sResponseFromServer; } } } } catch (Exception ex) { throw ex; } return(response); }
public bool SubscribeEvent(SubscribeEventRequest request) { bool response; try { Event eventObj = new Event(); response = eventObj.SubscribeEvent(request); if (response) { MakeFireBaseCalls makeFireBaseCalls = new MakeFireBaseCalls(); makeFireBaseCalls.AddtoTopic(Globals.eventdetails.FromEvent, request); } } catch (Exception Ex) { throw Ex; } return(response); }
public override AbstractResponse OnEvent_SubscribeRequest(SubscribeEventRequest subscribeEventRequest) { WeiXinHelper.UpdateRencentOpenID(subscribeEventRequest.FromUserName, this.wid); ReplyInfo subscribeReply = ReplyHelper.GetSubscribeReply(this.wid); if (subscribeReply == null) { return(null); } subscribeReply.Keys = "登录"; AbstractResponse response = this.GetResponse(subscribeReply, subscribeEventRequest.FromUserName); if (response == null) { this.GotoManyCustomerService(subscribeEventRequest); } response.ToUserName = subscribeEventRequest.FromUserName; response.FromUserName = subscribeEventRequest.ToUserName; return(response); }
public override AbstractResponse OnEvent_SubscribeRequest(SubscribeEventRequest subscribeEventRequest) { ReplyInfo subscribeReply = ReplyHelper.GetSubscribeReply(); if (subscribeReply == null) { return(null); } subscribeReply.Keys = "登录"; AbstractResponse response = this.GetResponse(subscribeReply, subscribeEventRequest.FromUserName); if (response == null) { this.GotoManyCustomerService(subscribeEventRequest); } response.ToUserName = subscribeEventRequest.FromUserName; response.FromUserName = subscribeEventRequest.ToUserName; // 关注成功送优惠卷信息 AddCoupon(subscribeEventRequest.FromUserName); return(response); }
public bool UnsubscribeEvent(SubscribeEventRequest request) { try { string getResponseJSON = ""; FirebaseResponse getResponse = firebaseDBEvent.Get("?orderBy=\"EventId\"&equalTo=\"" + request.EventId + "\""); if (getResponse.Success) { if (getResponse.JSONContent != null && !getResponse.JSONContent.ToString().Equals("") && !getResponse.JSONContent.ToString().Equals("null") && !getResponse.JSONContent.ToString().Equals("{}")) { getResponseJSON = getResponse.JSONContent; JObject jObj = JObject.Parse(getResponseJSON); foreach (var result in jObj) { Console.WriteLine(result.Key); getResponseJSON = result.Key; if ((string)result.Value["EventId"] == request.EventId) { Console.WriteLine("DELETE Request"); FirebaseResponse deleteResponse = firebaseDBEvent .NodePath(getResponseJSON + "/InstanceId/" + request.InstanceId).Delete(); Console.WriteLine(deleteResponse.Success); if (deleteResponse.Success) { return(true); } } } } } } catch (Exception Ex) { throw Ex; } return(false); }
public override AbstractResponse OnEvent_SubscribeRequest(SubscribeEventRequest subscribeEventRequest) { ReplyInfo subscribeReply = ReplyHelper.GetSubscribeReply(); AbstractResponse result; if (subscribeReply == null) { result = null; } else { subscribeReply.Keys = "登录"; AbstractResponse response = this.GetResponse(subscribeReply, subscribeEventRequest.FromUserName); if (response == null) { this.GotoManyCustomerService(subscribeEventRequest); } response.ToUserName = subscribeEventRequest.FromUserName; response.FromUserName = subscribeEventRequest.ToUserName; result = response; } return(result); }
public static AbstractRequest GetRequestEntity(XDocument doc) { RequestMsgType msgType = MsgTypeHelper.GetMsgType(doc); AbstractRequest textRequest = null; switch (msgType) { case RequestMsgType.Text: { textRequest = new TextRequest(); break; } case RequestMsgType.Image: { textRequest = new ImageRequest(); break; } case RequestMsgType.Voice: { textRequest = new VoiceRequest(); break; } case RequestMsgType.Video: { textRequest = new VideoRequest(); break; } case RequestMsgType.Location: { textRequest = new LocationRequest(); break; } case RequestMsgType.Link: { textRequest = new LinkRequest(); break; } case RequestMsgType.Event: { switch (EventTypeHelper.GetEventType(doc)) { case RequestEventType.Subscribe: { textRequest = new SubscribeEventRequest(); break; } case RequestEventType.UnSubscribe: { textRequest = new UnSubscribeEventRequest(); break; } case RequestEventType.Scan: { textRequest = new ScanEventRequest(); break; } case RequestEventType.Location: { textRequest = new LocationEventRequest(); break; } case RequestEventType.Click: { textRequest = new ClickEventRequest(); break; } default: { throw new ArgumentOutOfRangeException(); } } break; } default: { throw new ArgumentOutOfRangeException(); } } EntityHelper.FillEntityWithXml <AbstractRequest>(textRequest, doc); return(textRequest); throw new ArgumentOutOfRangeException(); }
static void Main(string[] args) { //Connect TcpClient tcpClient = new TcpClient(); tcpClient.Connect("localhost", 3334); MessageSender messageSender = new MessageSender(tcpClient.Session); MessageReceiver messageReceiver = new MessageReceiver(tcpClient.Session); MessageExecutor messageExecutor = new MessageExecutor(messageSender, messageReceiver, new InstantTaskScheduler()); messageExecutor.Configuration.DefaultTimeout = 10000; var notificationListener = new NotificationListener(); messageReceiver.AddListener(-1, notificationListener); //auth AuthorizeHciRequest request = new AuthorizeHciRequest(); request.ClientId = -1; request.Locale = "en-US"; var future = messageExecutor.Submit <AuthorizeHciResponse>(request); future.Wait(); AuthorizeHciResponse AuthorizeHciResponse = future.Value; int clientId = AuthorizeHciResponse.ClientId; System.Console.WriteLine("AuthorizeHciResponse precessed"); //login LoginRequest loginRequest = new LoginRequest(); loginRequest.UserLogin = "******"; loginRequest.UserPassword = "******"; loginRequest.ClientId = clientId; var loginResponcetask = messageExecutor.Submit <LoginResponse>(loginRequest); loginResponcetask.Wait(); //Lock vehicle example AcquireLockRequest lockRequest = new AcquireLockRequest { ClientId = clientId, ObjectType = "Vehicle", ObjectId = 2 }; var resultLock = messageExecutor.Submit <AcquireLockResponse>(lockRequest); resultLock.Wait(); // Click&Go example var sendCommandRequestGuided = new SendCommandRequest { ClientId = clientId, Command = new UGCS.Sdk.Protocol.Encoding.Command { Code = "guided", Subsystem = Subsystem.S_FLIGHT_CONTROLLER } }; sendCommandRequestGuided.Vehicles.Add(new Vehicle { Id = 2 }); var sendCommandResponseGuided = messageExecutor.Submit <SendCommandResponse>(sendCommandRequestGuided); sendCommandResponseGuided.Wait(); var sendCommandRequest = new SendCommandRequest { ClientId = clientId, Command = new UGCS.Sdk.Protocol.Encoding.Command { Code = "waypoint", Subsystem = Subsystem.S_FLIGHT_CONTROLLER } }; sendCommandRequest.Command.Arguments.AddRange(new CommandArgument[] { new CommandArgument { Code = "latitude", Value = new Value { DoubleValue = 0.994445232147517 } }, new CommandArgument { Code = "longitude", Value = new Value { DoubleValue = 0.4201742565140717 } }, new CommandArgument { Code = "altitude_agl", Value = new Value { DoubleValue = 5.0 } }, new CommandArgument { Code = "ground_speed", Value = new Value { DoubleValue = 5.0 } }, new CommandArgument { Code = "heading", Value = new Value { DoubleValue = 0.017453292519943295 } } }); sendCommandRequest.Vehicles.Add(new Vehicle { Id = 2 }); var sendCommandResponse = messageExecutor.Submit <SendCommandResponse>(sendCommandRequest); sendCommandResponse.Wait(); System.Console.WriteLine("Click&Go command sent"); //Import mission var byteArray = File.ReadAllBytes("Demo mission.xml"); ImportMissionFromXmlRequest importMissionRequest = new ImportMissionFromXmlRequest() { ClientId = clientId, MissionXml = byteArray }; var importMissionResponse = messageExecutor.Submit <ImportMissionFromXmlResponse>(importMissionRequest); importMissionResponse.Wait(); //mission contains imported mission from Demo mission.xml var mission = importMissionResponse.Value.Mission; System.Console.WriteLine("Demo mission.xml imported to UCS with name '{0}'", mission.Name); //Get all vehicles GetObjectListRequest getObjectListRequest = new GetObjectListRequest() { ClientId = clientId, ObjectType = "Vehicle", RefreshDependencies = true }; getObjectListRequest.RefreshExcludes.Add("PayloadProfile"); getObjectListRequest.RefreshExcludes.Add("Route"); var task = messageExecutor.Submit <GetObjectListResponse>(getObjectListRequest); task.Wait(); var list = task.Value; foreach (var v in list.Objects) { System.Console.WriteLine(string.Format("name: {0}; id: {1}; type: {2}", v.Vehicle.Name, v.Vehicle.Id, v.Vehicle.Type.ToString())); } Vehicle vehicle = task.Value.Objects.FirstOrDefault().Vehicle; //Get mission from server GetObjectRequest getMissionObjectRequest = new GetObjectRequest() { ClientId = clientId, ObjectType = "Mission", ObjectId = mission.Id, RefreshDependencies = true }; var getMissionObjectResponse = messageExecutor.Submit <GetObjectResponse>(getMissionObjectRequest); getMissionObjectResponse.Wait(); //missionFromUcs contains retrieved mission var missionFromUcs = getMissionObjectResponse.Value.Object.Mission; System.Console.WriteLine("mission id '{0}' retrieved from UCS with name '{1}'", mission.Id, missionFromUcs.Name); //vehicles in mission System.Console.WriteLine("Vehicles in mission:"); foreach (var vehicleMission in missionFromUcs.Vehicles) { System.Console.WriteLine(vehicleMission.Vehicle.Name); } missionFromUcs.Vehicles.Clear(); //Add vehicle to mission missionFromUcs.Vehicles.Add( new MissionVehicle { Vehicle = vehicle }); System.Console.WriteLine("Vehicles in mission after add vehicle:"); foreach (var vehicleMission in missionFromUcs.Vehicles) { System.Console.WriteLine(vehicleMission.Vehicle.Name); } //save mission CreateOrUpdateObjectRequest createOrUpdateObjectRequestForMission = new CreateOrUpdateObjectRequest() { ClientId = clientId, Object = new DomainObjectWrapper().Put(missionFromUcs, "Mission"), WithComposites = true, ObjectType = "Mission", AcquireLock = false }; var updateMissionTask = messageExecutor.Submit <CreateOrUpdateObjectResponse>(createOrUpdateObjectRequestForMission); updateMissionTask.Wait(); //Import route var byteArrayRoute = File.ReadAllBytes("Demo route for Copter.xml"); ImportRouteRequest importRouteRequest = new ImportRouteRequest() { ClientId = clientId, RouteData = byteArrayRoute, Filename = "Demo route for Copter.xml" }; var importRouteResponse = messageExecutor.Submit <ImportRouteResponse>(importRouteRequest); importRouteResponse.Wait(); //importedRoute contains imported route from Demo route for Copter.xml var importedRoute = importRouteResponse.Value.Route; System.Console.WriteLine("Demo route for Copter.xml imported to UCS with name '{0}'", importedRoute.Name); //Add vehicle profile to route GetObjectRequest requestVehicle = new GetObjectRequest() { ClientId = clientId, ObjectType = "Vehicle", ObjectId = 1, //EMU-COPTER-17 RefreshDependencies = true }; var responseVehicle = messageExecutor.Submit <GetObjectResponse>(requestVehicle); responseVehicle.Wait(); importedRoute.VehicleProfile = responseVehicle.Value.Object.Vehicle.Profile; //Add route to mission importedRoute.Mission = missionFromUcs; //Save route on server CreateOrUpdateObjectRequest routeSaveRequest = new CreateOrUpdateObjectRequest() { ClientId = clientId, Object = new DomainObjectWrapper().Put(importedRoute, "Route"), WithComposites = true, ObjectType = "Route", AcquireLock = false }; var updateRouteTask = messageExecutor.Submit <CreateOrUpdateObjectResponse>(routeSaveRequest); updateRouteTask.Wait(); System.Console.WriteLine("route '{0}' added to mission '{1}'", updateRouteTask.Value.Object.Route.Name, missionFromUcs.Name); //Get route from server GetObjectRequest getRouteObjectRequest = new GetObjectRequest() { ClientId = clientId, ObjectType = "Route", ObjectId = updateRouteTask.Value.Object.Route.Id, RefreshDependencies = true }; var geRouteObjectResponse = messageExecutor.Submit <GetObjectResponse>(getRouteObjectRequest); geRouteObjectResponse.Wait(); //routeFromUcs contains retrieved route var routeFromUcs = geRouteObjectResponse.Value.Object.Route; System.Console.WriteLine(string.Format("route id '{0}' retrieved from UCS with name '{1}'", updateRouteTask.Value.Object.Route.Id, routeFromUcs.Name)); //add action to route ActionDefinition actionDefenition = new ActionDefinition(); actionDefenition.HeadingDefinition = new HeadingDefinition(); actionDefenition.HeadingDefinition.Heading = 1.57079633; // 90 degrees actionDefenition.HeadingDefinition.RelativeToNorth = true; if (routeFromUcs.Segments.Count > 2) { routeFromUcs.Segments[1].ActionDefinitions.Add(actionDefenition); } System.Console.WriteLine(string.Format("action to route '{0}'", routeFromUcs.Name)); //save route CreateOrUpdateObjectRequest createOrUpdateRouteRequest = new CreateOrUpdateObjectRequest() { ClientId = clientId, Object = new DomainObjectWrapper().Put(routeFromUcs, "Route"), WithComposites = true, ObjectType = "Route", AcquireLock = false }; var createOrUpdateRouteResponseTask = messageExecutor.Submit <CreateOrUpdateObjectResponse>(createOrUpdateRouteRequest); createOrUpdateRouteResponseTask.Wait(); if (createOrUpdateRouteResponseTask.Value != null) { System.Console.WriteLine(string.Format("'{0}' route updated on UCS", routeFromUcs.Name)); } else { System.Console.WriteLine(string.Format("fail to update route '{0}' on UCS", routeFromUcs.Name)); } // Payload control SendCommandRequest requestPaload = new SendCommandRequest { ClientId = clientId, Command = new UGCS.Sdk.Protocol.Encoding.Command { Code = "direct_payload_control", Subsystem = Subsystem.S_GIMBAL, Silent = true, ResultIndifferent = true } }; requestPaload.Vehicles.Add(new Vehicle() { Id = vehicle.Id }); List <CommandArgument> listCommands = new List <CommandArgument>(); listCommands.Add(new CommandArgument { Code = "roll", Value = new Value() { DoubleValue = 1 } }); listCommands.Add(new CommandArgument { Code = "pitch", Value = new Value() { DoubleValue = 0 } }); listCommands.Add(new CommandArgument { Code = "yaw", Value = new Value() { DoubleValue = 0 } }); listCommands.Add(new CommandArgument { Code = "zoom", Value = new Value() { DoubleValue = 0 } }); requestPaload.Command.Arguments.AddRange(listCommands); var resultPayload = messageExecutor.Submit <SendCommandResponse>(requestPaload); resultPayload.Wait(); //update vehicle object CreateOrUpdateObjectRequest createOrUpdateObjectRequest = new CreateOrUpdateObjectRequest() { ClientId = clientId, Object = new DomainObjectWrapper().Put(vehicle, "Vehicle"), WithComposites = true, ObjectType = "Vehicle", AcquireLock = false }; var createOrUpdateObjectResponseTask = messageExecutor.Submit <CreateOrUpdateObjectResponse>(createOrUpdateObjectRequest); createOrUpdateObjectResponseTask.Wait(); //Vehicle notification subscription var eventSubscriptionWrapper = new EventSubscriptionWrapper(); eventSubscriptionWrapper.ObjectModificationSubscription = new ObjectModificationSubscription(); eventSubscriptionWrapper.ObjectModificationSubscription.ObjectId = vehicle.Id; eventSubscriptionWrapper.ObjectModificationSubscription.ObjectType = "Vehicle"; SubscribeEventRequest requestEvent = new SubscribeEventRequest(); requestEvent.ClientId = clientId; requestEvent.Subscription = eventSubscriptionWrapper; var responce = messageExecutor.Submit <SubscribeEventResponse>(requestEvent); responce.Wait(); var subscribeEventResponse = responce.Value; SubscriptionToken st = new SubscriptionToken(subscribeEventResponse.SubscriptionId, ( (notification) => { //Vehicle notification } ), eventSubscriptionWrapper); notificationListener.AddSubscription(st); // Get Telemetry for vehicle DateTime utcTime = DateTime.Now.ToUniversalTime(); DateTime posixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); TimeSpan span = utcTime - posixEpoch; var beginningMilliseconds = (long)span.TotalMilliseconds; GetTelemetryRequest telemetryRequest = new GetTelemetryRequest { ClientId = clientId, FromTime = beginningMilliseconds, Limit = 10, Vehicle = new Vehicle() { Id = 1 } }; var responseTelemetry = messageExecutor.Submit <GetTelemetryResponse>(telemetryRequest); responseTelemetry.Wait(); //Go to manual mode SendCommandRequest manualModeCommand = new SendCommandRequest { ClientId = clientId, Command = new UGCS.Sdk.Protocol.Encoding.Command { Code = "manual", Subsystem = Subsystem.S_FLIGHT_CONTROLLER, Silent = false, ResultIndifferent = false } }; manualModeCommand.Vehicles.Add(new Vehicle() { Id = 2 }); var manualMode = messageExecutor.Submit <SendCommandResponse>(manualModeCommand); manualMode.Wait(); //Go to joystick mode SendCommandRequest joystickModeCommand = new SendCommandRequest { ClientId = clientId, Command = new UGCS.Sdk.Protocol.Encoding.Command { Code = "joystick", Subsystem = Subsystem.S_FLIGHT_CONTROLLER, Silent = false, ResultIndifferent = false } }; joystickModeCommand.Vehicles.Add(new Vehicle() { Id = 2 }); var joystickMode = messageExecutor.Submit <SendCommandResponse>(joystickModeCommand); joystickMode.Wait(); // Vehicle control in joystick mode SendCommandRequest vehicleJoystickControl = new SendCommandRequest { ClientId = clientId, Command = new UGCS.Sdk.Protocol.Encoding.Command { Code = "direct_vehicle_control", Subsystem = Subsystem.S_FLIGHT_CONTROLLER, Silent = true, ResultIndifferent = true } }; vehicleJoystickControl.Vehicles.Add(new Vehicle() { Id = 2 }); //List of current joystick values to send to vehicle. List <CommandArgument> listJoystickCommands = new List <CommandArgument>(); listJoystickCommands.Add(new CommandArgument { Code = "roll", Value = new Value() { DoubleValue = 0 } }); listJoystickCommands.Add(new CommandArgument { Code = "pitch", Value = new Value() { DoubleValue = 0 } }); listJoystickCommands.Add(new CommandArgument { Code = "yaw", Value = new Value() { DoubleValue = 0 } }); listJoystickCommands.Add(new CommandArgument { Code = "throttle", Value = new Value() { DoubleValue = 1 } }); vehicleJoystickControl.Command.Arguments.AddRange(listJoystickCommands); for (int i = 1; i < 11; i++) { var sendJoystickCommandResponse = messageExecutor.Submit <SendCommandResponse>(vehicleJoystickControl); resultPayload.Wait(); System.Console.WriteLine("Joystick command to go UP {0}", i); Thread.Sleep(1000); } //TelemetrySubscription var telemetrySubscriptionWrapper = new EventSubscriptionWrapper(); telemetrySubscriptionWrapper.TelemetrySubscription = new TelemetrySubscription(); SubscribeEventRequest requestTelemetryEvent = new SubscribeEventRequest(); requestTelemetryEvent.ClientId = clientId; requestTelemetryEvent.Subscription = telemetrySubscriptionWrapper; var responceTelemetry = messageExecutor.Submit <SubscribeEventResponse>(requestTelemetryEvent); responceTelemetry.Wait(); var subscribeEventResponseTelemetry = responceTelemetry.Value; SubscriptionToken stTelemetry = new SubscriptionToken(subscribeEventResponseTelemetry.SubscriptionId, ( (notification) => { foreach (Telemetry t in notification.Event.TelemetryEvent.Telemetry) { System.Console.WriteLine("Vehicle id: {0} Code: {1} Semantic {2} Subsystem {3} Value {4}", notification.Event.TelemetryEvent.Vehicle.Id, t.TelemetryField.Code, t.TelemetryField.Semantic, t.TelemetryField.Subsystem, getTelemetryValue(t.Value)); } } ), telemetrySubscriptionWrapper); notificationListener.AddSubscription(stTelemetry); //Log notification subscription var logSubscriptionWrapper = new EventSubscriptionWrapper(); logSubscriptionWrapper.ObjectModificationSubscription = new ObjectModificationSubscription(); logSubscriptionWrapper.ObjectModificationSubscription.ObjectType = "VehicleLogEntry"; SubscribeEventRequest requestLogEvent = new SubscribeEventRequest(); requestLogEvent.ClientId = clientId; requestLogEvent.Subscription = logSubscriptionWrapper; var responceLog = messageExecutor.Submit <SubscribeEventResponse>(requestLogEvent); var subscribeEventResponseLog = responceLog.Value; SubscriptionToken stLog = new SubscriptionToken(subscribeEventResponseLog.SubscriptionId, ( (notification) => { var eventType = notification.Event.ObjectModificationEvent.ModificationType; var eventLog = notification.Event.ObjectModificationEvent.Object.VehicleLogEntry; if (eventType == ModificationType.MT_CREATE) { DateTime start = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); DateTime date = start.AddMilliseconds(eventLog.Time).ToLocalTime(); var command = eventLog.CommandArguments != null ? eventLog.CommandArguments.CommandCode : string.Empty; System.Console.WriteLine("LOG: {0} Vehicle id: {1} Command: {2} Message: {3}", date.ToString("HH:mm:ss"), eventLog.Vehicle.Id, command, eventLog.Message); } }), logSubscriptionWrapper); notificationListener.AddSubscription(stLog); //Object notification subscription, subscribe for mission changed var missionObjectSubscriptionWrapper = new EventSubscriptionWrapper(); missionObjectSubscriptionWrapper.ObjectModificationSubscription = new ObjectModificationSubscription(); missionObjectSubscriptionWrapper.ObjectModificationSubscription.ObjectType = "Mission"; SubscribeEventRequest requestMissionEvent = new SubscribeEventRequest(); requestMissionEvent.ClientId = clientId; requestMissionEvent.Subscription = missionObjectSubscriptionWrapper; var responceMission = messageExecutor.Submit <SubscribeEventResponse>(requestMissionEvent); var subscribeEventResponseMission = responceMission.Value; SubscriptionToken stMission = new SubscriptionToken(subscribeEventResponseMission.SubscriptionId, ( (notification) => { var eventType = notification.Event.ObjectModificationEvent.ModificationType; var missionObject = notification.Event.ObjectModificationEvent.Object.Mission; if (eventType == ModificationType.MT_UPDATE) { System.Console.WriteLine("Mission id: {0} updated", missionObject.Id); } }), missionObjectSubscriptionWrapper); notificationListener.AddSubscription(stMission); System.Console.ReadKey(); tcpClient.Close(); messageSender.Cancel(); messageReceiver.Cancel(); messageExecutor.Close(); notificationListener.Dispose(); }
public override AbstractResponse OnEvent_SubscribeRequest(SubscribeEventRequest subscribeEventRequest) { string text = ""; MemberProcessor.UpdateUserFollowStateByOpenId(subscribeEventRequest.FromUserName, 1); if (subscribeEventRequest.EventKey != null) { text = subscribeEventRequest.EventKey; } if (text.Contains("qrscene_")) { text = text.Replace("qrscene_", "").Trim(); if (text == "1") { if (WeiXinHelper.BindAdminOpenId.Count > 10) { WeiXinHelper.BindAdminOpenId.Clear(); } if (WeiXinHelper.BindAdminOpenId.ContainsKey(subscribeEventRequest.Ticket)) { WeiXinHelper.BindAdminOpenId[subscribeEventRequest.Ticket] = subscribeEventRequest.FromUserName; } else { WeiXinHelper.BindAdminOpenId.Add(subscribeEventRequest.Ticket, subscribeEventRequest.FromUserName); } return(new TextResponse { CreateTime = System.DateTime.Now, Content = "您正在扫描尝试绑定管理员身份,身份已识别", ToUserName = subscribeEventRequest.FromUserName, FromUserName = subscribeEventRequest.ToUserName }); } ScanInfos scanInfosByTicket = ScanHelp.GetScanInfosByTicket(subscribeEventRequest.Ticket); bool flag = MemberProcessor.IsExitOpenId(subscribeEventRequest.FromUserName); int num = scanInfosByTicket.BindUserId; if (num < 0) { num = 0; } if (!flag && scanInfosByTicket != null) { this.CreatMember(subscribeEventRequest.FromUserName, num, ""); ScanHelp.updateScanInfosLastActiveTime(System.DateTime.Now, scanInfosByTicket.Sceneid); } } else { bool flag2 = MemberProcessor.IsExitOpenId(subscribeEventRequest.FromUserName); Globals.Debuglog("关注公众号1", "_DebuglogConcern.txt"); int num2 = 0; if (num2 < 0) { num2 = 0; } if (!flag2) { Globals.Debuglog("关注公众号生成用户1", "_DebuglogConcern.txt"); this.CreatMember(subscribeEventRequest.FromUserName, num2, ""); } } WeiXinHelper.UpdateRencentOpenID(subscribeEventRequest.FromUserName); string text2 = ""; System.Data.DataSet dataSet = new System.Data.DataSet(); string text3 = System.Web.HttpContext.Current.Server.MapPath("/config/WifiConfig.xml"); if (System.IO.File.Exists(text3)) { dataSet.ReadXml(text3); if (dataSet != null && dataSet.Tables.Count > 0) { foreach (System.Data.DataRow dataRow in dataSet.Tables[0].Rows) { if (dataRow["id"].ToString() == text) { text2 = string.Concat(new string[] { dataRow["WifiDescribe"].ToString(), "\r\nWIFI帐号:", dataRow["WifiName"].ToString(), "\r\n WIFI密码:", dataRow["WifiPwd"].ToString() }); } } } } if (text2 != "") { return(new TextResponse { CreateTime = System.DateTime.Now, Content = text2, ToUserName = subscribeEventRequest.FromUserName, FromUserName = subscribeEventRequest.ToUserName }); } Hidistro.Entities.VShop.ReplyInfo subscribeReply = ReplyHelper.GetSubscribeReply(); if (subscribeReply == null) { return(null); } subscribeReply.Keys = "登录"; AbstractResponse response = this.GetResponse(subscribeReply, subscribeEventRequest.FromUserName); if (response == null) { this.GotoManyCustomerService(subscribeEventRequest); } response.ToUserName = subscribeEventRequest.FromUserName; response.FromUserName = subscribeEventRequest.ToUserName; return(response); }
//关注事件 public override AbstractResponse OnEvent_SubscribeRequest(SubscribeEventRequest subscribeEventRequest) { Utils.LogWriter.SaveLog("产生关注事件:" + subscribeEventRequest.EventKey); string event_key = subscribeEventRequest.EventKey; if (!string.IsNullOrEmpty(event_key) && event_key.IndexOf("qrscene_") != -1) { //关联上级 /* * 打开分享图片 * 获取用户信息 * * */ string open_id = subscribeEventRequest.FromUserName; Utils.LogWriter.SaveLog("产生关注事件step1:" + open_id); int ReferralUserId = int.Parse(subscribeEventRequest.EventKey.Replace("qrscene_", "")); Utils.LogWriter.SaveLog("产生关注事件step2:" + ReferralUserId); //判断是否会员 if (MemberProcessor.IsExitOpenId(open_id)) { Utils.LogWriter.SaveLog("产生关注事件step3:已存在会员信息"); Hidistro.Entities.Members.MemberInfo m = MemberProcessor.GetMembers(open_id); if (m.ReferralUserId == 0 && m.OpenId != open_id) { m.ReferralUserId = ReferralUserId; MemberProcessor.UpdateMember(m); //Utils.LogWriter.SaveLog("扫码填补上级ID:" + ReferralUserId); return(null); } } else { Utils.LogWriter.SaveLog("产生关注事件step3:不存在会员信息"); //关联上级并增加客户资料 SiteSettings masterSettings = SettingsManager.GetMasterSettings(true); JObject wx_user_info = TokenApi.GetUserInfo(masterSettings.WeixinAppId, masterSettings.WeixinAppSecret, open_id); Utils.LogWriter.SaveLog("产生关注事件step4:" + wx_user_info["nickname"].ToString()); string generateId = Globals.GetGenerateId(); Hidistro.Entities.Members.MemberInfo member = new Hidistro.Entities.Members.MemberInfo { GradeId = MemberProcessor.GetDefaultMemberGrade(), UserName = Globals.UrlDecode(wx_user_info["nickname"].ToString()), OpenId = open_id, CreateDate = DateTime.Now, SessionId = generateId, SessionEndTime = DateTime.Now.AddYears(10), ReferralUserId = ReferralUserId }; Utils.LogWriter.SaveLog("创建客户资料"); MemberProcessor.CreateMember(member); //获取上级 Hidistro.Entities.Members.MemberInfo parentInfo = MemberProcessor.GetMember(ReferralUserId); //获取第多少个会员 int count = MemberProcessor.GetMemberCount(); TextResponse r = new TextResponse { CreateTime = DateTime.Now, Content = "恭喜您!您已通过【" + parentInfo.UserName + "】的推荐成为本站会员,您是本站第" + (10000 + count) + "个会员,点击右下方【创业良机】~【组建团队】进入财富倍增快通道。", ToUserName = subscribeEventRequest.FromUserName, FromUserName = subscribeEventRequest.ToUserName }; return(r); } } ReplyInfo subscribeReply = ReplyHelper.GetSubscribeReply(); if (subscribeReply == null) { return(null); } subscribeReply.Keys = "登录"; AbstractResponse response = this.GetResponse(subscribeReply, subscribeEventRequest.FromUserName); if (response == null) { this.GotoManyCustomerService(subscribeEventRequest); } response.ToUserName = subscribeEventRequest.FromUserName; response.FromUserName = subscribeEventRequest.ToUserName; return(response); }
public override AbstractResponse OnEvent_SubscribeRequest(SubscribeEventRequest subscribeEventRequest) { string eventKey = ""; if (subscribeEventRequest.EventKey != null) { eventKey = subscribeEventRequest.EventKey; } if (eventKey.Contains("qrscene_")) { eventKey = eventKey.Replace("qrscene_", "").Trim(); if (eventKey == "1") { if (WeiXinHelper.BindAdminOpenId.Count > 10) { WeiXinHelper.BindAdminOpenId.Clear(); } if (WeiXinHelper.BindAdminOpenId.ContainsKey(subscribeEventRequest.Ticket)) { WeiXinHelper.BindAdminOpenId[subscribeEventRequest.Ticket] = subscribeEventRequest.FromUserName; } else { WeiXinHelper.BindAdminOpenId.Add(subscribeEventRequest.Ticket, subscribeEventRequest.FromUserName); } return(new TextResponse { CreateTime = DateTime.Now, Content = "您正在扫描尝试绑定管理员身份,身份已识别", ToUserName = subscribeEventRequest.FromUserName, FromUserName = subscribeEventRequest.ToUserName }); } ScanInfos scanInfosByTicket = ScanHelp.GetScanInfosByTicket(subscribeEventRequest.Ticket); bool flag = MemberProcessor.IsExitOpenId(subscribeEventRequest.FromUserName); int bindUserId = scanInfosByTicket.BindUserId; if (bindUserId < 0) { bindUserId = 0; } if (!flag && (scanInfosByTicket != null)) { this.CreatMember(subscribeEventRequest.FromUserName, bindUserId, ""); ScanHelp.updateScanInfosLastActiveTime(DateTime.Now, scanInfosByTicket.Sceneid); } } else { bool flag2 = MemberProcessor.IsExitOpenId(subscribeEventRequest.FromUserName); Globals.Debuglog("关注公众号1", "_DebuglogConcern.txt"); int referralUserId = 0; if (referralUserId < 0) { referralUserId = 0; } if (!flag2) { Globals.Debuglog("关注公众号生成用户1", "_DebuglogConcern.txt"); this.CreatMember(subscribeEventRequest.FromUserName, referralUserId, ""); } } WeiXinHelper.UpdateRencentOpenID(subscribeEventRequest.FromUserName); string str2 = ""; DataSet set = new DataSet(); string path = HttpContext.Current.Server.MapPath("/config/WifiConfig.xml"); if (File.Exists(path)) { set.ReadXml(path); if ((set != null) && (set.Tables.Count > 0)) { foreach (DataRow row in set.Tables[0].Rows) { if (row["id"].ToString() == eventKey) { str2 = row["WifiDescribe"].ToString() + "\r\nWIFI帐号:" + row["WifiName"].ToString() + "\r\n WIFI密码:" + row["WifiPwd"].ToString(); } } } } if (str2 != "") { return(new TextResponse { CreateTime = DateTime.Now, Content = str2, ToUserName = subscribeEventRequest.FromUserName, FromUserName = subscribeEventRequest.ToUserName }); } Hidistro.Entities.VShop.ReplyInfo subscribeReply = ReplyHelper.GetSubscribeReply(); if (subscribeReply == null) { return(null); } subscribeReply.Keys = "登录"; AbstractResponse response = this.GetResponse(subscribeReply, subscribeEventRequest.FromUserName); if (response == null) { this.GotoManyCustomerService(subscribeEventRequest); } response.ToUserName = subscribeEventRequest.FromUserName; response.FromUserName = subscribeEventRequest.ToUserName; return(response); }
public static AbstractRequest GetRequestEntity(XDocument doc) { RequestMsgType msgType = MsgTypeHelper.GetMsgType(doc); AbstractRequest entity = null; switch (msgType) { case RequestMsgType.Text: entity = new TextRequest(); break; case RequestMsgType.Image: entity = new ImageRequest(); break; case RequestMsgType.Voice: entity = new VoiceRequest(); break; case RequestMsgType.Video: entity = new VideoRequest(); break; case RequestMsgType.Location: entity = new LocationRequest(); break; case RequestMsgType.Link: entity = new LinkRequest(); break; case RequestMsgType.Event: switch (EventTypeHelper.GetEventType(doc)) { case RequestEventType.Subscribe: entity = new SubscribeEventRequest(); goto Label_00D7; case RequestEventType.UnSubscribe: entity = new UnSubscribeEventRequest(); goto Label_00D7; case RequestEventType.Scan: entity = new ScanEventRequest(); goto Label_00D7; case RequestEventType.Location: entity = new LocationEventRequest(); goto Label_00D7; case RequestEventType.Click: entity = new ClickEventRequest(); goto Label_00D7; case RequestEventType.MASSSENDJOBFINISH: entity = new MassendJobFinishEventRequest(); goto Label_00D7; } throw new ArgumentOutOfRangeException(); default: throw new ArgumentOutOfRangeException(); } Label_00D7: EntityHelper.FillEntityWithXml <AbstractRequest>(entity, doc); Regex regex = new Regex(@"<MsgID>(?<url>\d+)</MsgID>"); if (entity.MsgId == 0L) { Match match = Regex.Match(doc.Root.ToString(), @"<MsgID>(?<msgid>\d+)</MsgID>", RegexOptions.IgnoreCase); if (match.Success) { entity.MsgId = long.Parse(match.Groups["msgid"].Value); entity.CreateTime = DateTime.Now; } } return(entity); }
public override AbstractResponse OnEvent_SubscribeRequest(SubscribeEventRequest subscribeEventRequest) { string fromUserName = subscribeEventRequest.FromUserName; try { MemberProcessor.UpdateWXUserIsSubscribeStatus(fromUserName, true); } catch (Exception ex) { IDictionary <string, string> dictionary = new Dictionary <string, string>(); dictionary.Add("openId", fromUserName); Globals.WriteExceptionLog(ex, dictionary, "UpdateWXUserIsSubscribeStatus"); } ReplyInfo replyInfo = ReplyHelper.GetSubscribeReply(); if (replyInfo == null) { replyInfo = new ReplyInfo(); } replyInfo.Keys = "登录"; if (WeiXinRedEnvelopeProcessor.CheckRedEnvelopeGetRecordNoAttentionIsExist(subscribeEventRequest.FromUserName)) { replyInfo.Keys = "红包"; } if (subscribeEventRequest != null && !string.IsNullOrEmpty(subscribeEventRequest.EventKey) && subscribeEventRequest.EventKey.Split('_').Length == 2) { string text = subscribeEventRequest.EventKey.Split('_')[1]; if (text == "referralregister") { replyInfo.Keys = "分销注册"; } else if (text.Contains("referraluserid")) { if (text.Split(':').Length == 2) { int referralUserId = text.Split(':')[1].ToInt(0); MemberWXReferralInfo wXReferral = VShopHelper.GetWXReferral(subscribeEventRequest.FromUserName); if (wXReferral != null && wXReferral.Id > 0) { VShopHelper.UpdateWXReferral(subscribeEventRequest.FromUserName, referralUserId); } else { VShopHelper.AddWXReferral(subscribeEventRequest.FromUserName, referralUserId); } } } else if (text.Contains("shoppingguiderid")) { if (text.Split(':').Length == 2) { int shoppingGuiderId = text.Split(':')[1].ToInt(0); MemberWXShoppingGuiderInfo memberWXShoppingGuider = MemberHelper.GetMemberWXShoppingGuider(subscribeEventRequest.FromUserName); if (memberWXShoppingGuider != null && memberWXShoppingGuider.Id > 0) { MemberHelper.UpdateWXShoppingGuider(subscribeEventRequest.FromUserName, shoppingGuiderId); } else { MemberHelper.AddWXShoppingGuider(subscribeEventRequest.FromUserName, shoppingGuiderId); } } } else { int num = text.ToInt(0); if (num > 0) { RedEnvelopeSendRecord redEnvelopeSendRecordById = WeiXinRedEnvelopeProcessor.GetRedEnvelopeSendRecordById(num); if (redEnvelopeSendRecordById != null && WeiXinRedEnvelopeProcessor.IsGetInToday(subscribeEventRequest.FromUserName, redEnvelopeSendRecordById.SendCode, true, "")) { replyInfo.Keys = "今日已领红包"; } } } } AbstractResponse response = this.GetResponse(replyInfo, subscribeEventRequest.FromUserName, subscribeEventRequest); if (response == null) { return(this.GotoManyCustomerService(subscribeEventRequest)); } response.ToUserName = subscribeEventRequest.FromUserName; response.FromUserName = subscribeEventRequest.ToUserName; return(response); }
public static AbstractRequest GetRequestEntity(XDocument doc) { AbstractRequest abstractRequest; switch (MsgTypeHelper.GetMsgType(doc)) { case RequestMsgType.Text: abstractRequest = new TextRequest(); break; case RequestMsgType.Image: abstractRequest = new ImageRequest(); break; case RequestMsgType.Voice: abstractRequest = new VoiceRequest(); break; case RequestMsgType.Video: abstractRequest = new VideoRequest(); break; case RequestMsgType.Location: abstractRequest = new LocationRequest(); break; case RequestMsgType.Link: abstractRequest = new LinkRequest(); break; case RequestMsgType.Event: switch (EventTypeHelper.GetEventType(doc)) { case RequestEventType.Subscribe: abstractRequest = new SubscribeEventRequest(); break; case RequestEventType.UnSubscribe: abstractRequest = new UnSubscribeEventRequest(); break; case RequestEventType.Scan: abstractRequest = new ScanEventRequest(); break; case RequestEventType.Location: abstractRequest = new LocationEventRequest(); break; case RequestEventType.Click: abstractRequest = new ClickEventRequest(); break; default: throw new ArgumentOutOfRangeException(); } break; default: throw new ArgumentOutOfRangeException(); } EntityHelper.FillEntityWithXml <AbstractRequest>(abstractRequest, doc); return(abstractRequest); }
public static AbstractRequest GetRequestEntity(XDocument doc) { RequestMsgType msgType = MsgTypeHelper.GetMsgType(doc); AbstractRequest entity = null; switch (msgType) { case RequestMsgType.Text: entity = new TextRequest(); break; case RequestMsgType.Image: entity = new ImageRequest(); break; case RequestMsgType.Voice: entity = new VoiceRequest(); break; case RequestMsgType.Video: entity = new VideoRequest(); break; case RequestMsgType.Location: entity = new LocationRequest(); break; case RequestMsgType.Link: entity = new LinkRequest(); break; case RequestMsgType.Event: switch (EventTypeHelper.GetEventType(doc)) { case RequestEventType.Subscribe: entity = new SubscribeEventRequest(); goto Label_00C5; case RequestEventType.UnSubscribe: entity = new UnSubscribeEventRequest(); goto Label_00C5; case RequestEventType.Scan: entity = new ScanEventRequest(); goto Label_00C5; case RequestEventType.Location: entity = new LocationEventRequest(); goto Label_00C5; case RequestEventType.Click: entity = new ClickEventRequest(); goto Label_00C5; } throw new ArgumentOutOfRangeException(); default: throw new ArgumentOutOfRangeException(); } Label_00C5: EntityHelper.FillEntityWithXml <AbstractRequest>(entity, doc); return(entity); }
public virtual AbstractResponse OnEvent_SubscribeRequest(SubscribeEventRequest subscribeEventRequest) { return(this.DefaultResponse(subscribeEventRequest)); }
public bool SubscribeEvent(SubscribeEventRequest request) { try { string getResponseJSON = ""; bool isExist = false; int count = 0; JObject jObj = null; FirebaseResponse getResponse = firebaseDBEvent.Get("?orderBy=\"EventId\"&equalTo=\"" + request.EventId + "\""); if (getResponse.Success) { if (getResponse.JSONContent != null && !getResponse.JSONContent.ToString().Equals("") && !getResponse.JSONContent.ToString().Equals("null") && !getResponse.JSONContent.ToString().Equals("{}")) { getResponseJSON = getResponse.JSONContent; jObj = JObject.Parse(getResponseJSON); count = jObj.Count; foreach (var result in jObj) { Console.WriteLine(result.Key); getResponseJSON = (string)result.Value["EventId"]; if (getResponseJSON == request.EventId) { FirebaseResponse patchInstanceId = firebaseDBEvent .NodePath(result.Key + "/InstanceId") .Patch("{\"" + request.InstanceId + "\":\"true\"}"); Console.WriteLine(patchInstanceId.Success); if (patchInstanceId.Success) { isExist = true; return(true); } } } } } if (!isExist) { jObj = null; count = 0; getResponse = firebaseDBEvent.Get(); if (getResponse.Success) { if (getResponse.JSONContent != null && !getResponse.JSONContent.ToString().Equals("") && !getResponse.JSONContent.ToString().Equals("null") && !getResponse.JSONContent.ToString().Equals("{}")) { getResponseJSON = getResponse.JSONContent; jObj = JObject.Parse(getResponseJSON); count = jObj.Count; } } Console.WriteLine("Patch Login Request"); FirebaseResponse patchRequest = firebaseDBEvent.Patch("{\"E" + (count + 1) + "\":{\"EventId\":\"" + request.EventId + "\",\"EventName\":\"" + request.EventName + "\",\"InstanceId\":{\"" + request.InstanceId + "\":\"true\"}}}"); Console.WriteLine(patchRequest.Success); if (patchRequest.Success) { return(true); } } } catch (Exception Ex) { throw Ex; } return(false); }