/// <summary> /// Send Ack Message for CrewUpdateWfmV1 /// </summary> /// <param name="ca"></param> public void SendAckMessage(CrewUpdateWfmV1 ca) { AckNackV1 ack = new AckNackV1(); ack.IsAck = true; ack.ErrNo = 0; //no error ack.Id = ca.IncidentId; ack.MessageSequence = ca.Sequence; ack.Sequence = _sequence++; //optional ack.Name = ca.IncidentId; ack.AdditionalErrorInformation = ca.ToString(); crewConnector.SendMessageToIdms(ack); }
/// <summary> /// Send Ack Message for IncidentUpdateWfmV1 /// </summary> /// <param name="incUpdate"></param> public void SendAckMessage(IncidentUpdateWfmV1 incUpdate) { AckNackV1 ack = new AckNackV1(); //required ack.IsAck = true; ack.ErrNo = 0; //no error ack.Id = incUpdate.IncidentId; ack.MessageSequence = incUpdate.Sequence; ack.Sequence = _sequence++; //optional ack.Name = incUpdate.IncidentName; ack.AdditionalErrorInformation = incUpdate.ToString(); crewConnector.SendMessageToIdms(ack); }
/// <summary> /// This gets called when a message is received from the Crew Server /// Based on the type of message, it can be just simply logged, or handled specifically based on the application needs. /// </summary> /// <param name="msg"></param> public void OnMessageFromIdms(NetMessageBase idmsMsg) { Console.Out.WriteLine("Received message " + idmsMsg.GetType()); if (idmsMsg.GetType() == typeof(AckNackV1)) { AckNackV1 ack = (AckNackV1)idmsMsg; if (ack.IsAck) { Console.Out.WriteLine("Ack for message " + ack.MessageSequence); // log the Ack message } else { Console.Out.WriteLine("NoAck for message " + ack.MessageSequence); } } else if (idmsMsg.GetType() == typeof(IncidentUpdateWfmV1)) { IncidentUpdateWfmV1 iu = (IncidentUpdateWfmV1)idmsMsg; Console.Out.WriteLine("Incident Id=" + iu.IncidentId + ", update type = " + ((eUpdateType)iu.UpdateType).ToString()); // save the incident details for later reference if (!incidentMsgList.ContainsKey(iu.IncidentId)) { incidentMsgList.Add(iu.IncidentId, iu); } else { incidentMsgList[iu.IncidentId] = iu; } SendAckMessage(iu); // Send Ack message SendIncidentStatusMessage(iu); // Send incident status message } else if (idmsMsg.GetType() == typeof(CrewUpdateWfmV1)) { CrewUpdateWfmV1 ca = (CrewUpdateWfmV1)idmsMsg; Console.Out.WriteLine("Incident Id=" + ca.IncidentId + ", crew Id = " + ca.CrewId + ", update type = " + ((eUpdateType)ca.UpdateType).ToString()); SendAckMessage(ca); // Send Ack message SendCrewEnrouteMessage(ca); // Send Crew Enrount status message SendCrewOnsiteMessage(ca); // Send Crew Onsite status message SendVehicleLocationMessage(ca); // send Vehicle location update message } }
/// <summary> /// This gets called when a message is received from the Call Server /// Based on the type of message, it can be just simply logged, or handled specifically based on the application needs. /// </summary> /// <param name="msg"></param> public void OnMessageFromIdms(NetMessageBase msg) { Console.Out.WriteLine("Received message " + msg.GetType()); MessageCount++; if (msg is HelloResponseV1) { chkHelloDateTime = DateTime.Now; HelloResponseV1 r = msg as HelloResponseV1; if (r.MySystemId != MessageBaseV1.CALL_SERVER) { Console.WriteLine("We are connecting to {0}, not the right server. Disconnecting.", r.MySystemId); callConnector.CloseConnection(); } else if (MessageCount == 10) { callConnector.CloseConnection(); } } else if (msg is AckNackV1) { AckNackV1 ack = (AckNackV1)msg; if (ack.IsAck) { Console.Out.WriteLine("Ack for message " + ack.MessageSequence); } } else if (msg is MeterEventQueryAmiV1) { createTestLogFile("MeterEventQueryAmiV1 request from call server"); MeterEventQueryAmiV1 timestmp = (MeterEventQueryAmiV1)msg; DateTime time = DateTime.Now; totime = time.ToString("yyyyMMddHHmmss"); fromtime = Convert.ToDateTime(timestmp.FromTimeStamp).ToString("yyyyMMddHHmmss"); GetMeterEventResponse(); } else if (msg is MeterPingRequestAmiV1) { createTestLogFile("MeterPingRequestAmiV1 request from call server"); // process MeterEventQueryAmiV1 here MeterPingRequestAmiV1 png = (MeterPingRequestAmiV1)msg; List <MeterIdType> MeterIds = png.MeterIds; createTestLogFile("MeterPingRequestAmiV1 - Total meter requests " + MeterIds.Count); if (MeterIds.Count > 0) { MeterPingQuery(MeterIds); } } else if (msg is MeterVoltPingReqAmiV1) { createTestLogFile("MeterVoltPingReqAmiV1 request from call server"); // process MeterVoltPingAmiV1 here MeterVoltPingReqAmiV1 vlt = (MeterVoltPingReqAmiV1)msg; List <MeterIdType> MeterIds = vlt.MeterIds; createTestLogFile("MeterVoltPingReqAmiV1 - Total meter requests " + MeterIds.Count); if (MeterIds.Count > 0) { MeterVoltEventQuery(MeterIds); } } //section 2 IVR Events else if (msg is CallQueryCivV1) { SendCallQueryResponse(); } //else if (msg is CustomerCorrectionCivV1) //{ // // process MeterEventQueryAmiV1 here //} //else if (msg is CaseNoteQueryCivV1) //{ // // process MeterEventQueryAmiV1 here //} else { } }