/// <summary> /// Create Notification Object /// </summary> /// <param name="genStoreDAO"></param> /// <returns></returns> private NotifyObject GetNotifyObject(Interface.Alarm.AlarmObject alarmObject, GenStoreInfo genStoreInfo, NotifyMobiles notifyMobiles) { string toPhoneNumber = string.Empty; string toName = string.Empty; string message = string.Empty; NotificationStyle notificationStyle = new NotificationStyle(); //*Initialize NotifyObject*// NotifyObject notifyObject = new NotifyObject(); //*Mobile Number*// toPhoneNumber = notifyMobiles.MobileNumber; //*Mobile name*// toName = notifyMobiles.Name; //* Message *// message = alarmObject.Value.ToString(); //if message length is greater than zero, get the format string for the message// if (message.Length > 0) { message = notificationStyle.GetFormatString(alarmObject, 1, "MessageBoard"); } //replace line breaks with spaces message = message.Replace("\\n", " "); //substitute actual values for the format strings using the alarm object message = notificationStyle.SubstituteFormatString(message, alarmObject); ///*Assigning values to notification object*/ notifyObject.NotificationType = "SMS"; ///*Assign values to Notification settings*/ Hashtable notificationSettings = new Hashtable(); notificationSettings.Add("COMPort", genStoreInfo.MobileCOMPort); notificationSettings.Add("COMSettings", genStoreInfo.MobileCOMSettings); notificationSettings.Add("PIN1", genStoreInfo.PIN1); notificationSettings.Add("PIN2", genStoreInfo.PIN2); notificationSettings.Add("ServiceCenterNumber", genStoreInfo.SMSProviderServiceCenter); notificationSettings.Add("ToPhoneNumber", toPhoneNumber); notificationSettings.Add("FrqBand", genStoreInfo.FrequencyBand); notificationSettings.Add("ToName", toName); notificationSettings.Add("NotificationID", alarmObject.NotificationID); notificationSettings.Add("AttemptCount", "0"); notifyObject.NotifierSettings = notificationSettings; ///* Notification Data */ notifyObject.NotificationData = message; return(notifyObject); }
/// <summary> /// Get Notification settings for SNPP /// </summary> /// <param name="alarmObject"></param> /// <param name="notifyPagerAddress"></param> /// <returns></returns> private NotifyObject GetNotifySNPPObject(Interface.Alarm.AlarmObject alarmObject, NotifyPagerAddress notifyPagerAddress) { string snppServer = "", defaultPagerSubject = "", defaultPagerBody = "", defaultSubject = "", defaultBody = ""; string subject = "", body = "", toAddress = ""; int snppPort = 0; int pagerDelay = 0; string pagerMessage = string.Empty; /*Create Notification Style object*/ NotificationStyle notificationStyle = new NotificationStyle(); /*Create notification object */ NotifyObject notifyObject = new NotifyObject(); /*Set Notification Type*/ notifyObject.NotificationType = "Pager"; /*Create hashtable for notification settings*/ Hashtable notificationSettings = new Hashtable(); /*Set Default pager subject*/ defaultPagerSubject = notificationStyle.GetFormatString(alarmObject, 1, "EmailSubjectPager"); /*Set default pager body*/ defaultPagerBody = notificationStyle.GetFormatString(alarmObject, 1, "EmailBodyPager"); /*Set default subject*/ defaultSubject = notificationStyle.GetFormatString(alarmObject, 1, "EmailSubject"); /*Set default body*/ defaultBody = notificationStyle.GetFormatString(alarmObject, 1, "EmailBody"); /*If default pager subject is empty set default subject as default pager subject*/ defaultPagerSubject = (defaultPagerSubject == string.Empty) ? defaultSubject : defaultPagerSubject; /*If default pager body is empty set default body as default pager body*/ defaultPagerBody = (defaultPagerBody == string.Empty) ? defaultBody : defaultPagerBody; /*Set Email Body and Subject format*/ subject = defaultPagerSubject; body = defaultPagerBody; subject = notificationStyle.SubstituteFormatString(subject, alarmObject); body = notificationStyle.SubstituteFormatString(body, alarmObject); /*Pager Body as notification data*/ /*If pager body is empty assign the default pager body from alarm object*/ /*Check this logic in old application*/ /*In case of missed communication assign the custom body and subject*/ if (alarmObject.IsMissCommNotification || body == string.Empty) { body = alarmObject.PagerMessage; } notificationSettings.Add("DeliveryMethod", notifyPagerAddress.DeliveryMethod); /*Get SNPP settings from GenStores*/ GenStoreInfo genStoreInfo = null; /*Get GenStore Information*/ genStoreInfo = GenStoreInfo.GetInstance(); snppServer = genStoreInfo.SNPPServer; snppPort = genStoreInfo.SNPPPort; /*Set PhoneNumber to Pager destination field*/ toAddress = notifyPagerAddress.PhoneNumber; /*Pager Subject*/ notificationSettings.Add("PagerSubject", subject); notificationSettings.Add("Name", notifyPagerAddress.PagerName); /*Pager Destination Address*/ notificationSettings.Add("ToAddress", toAddress); /* if the delivery type is modem*/ if (notifyPagerAddress.DeliveryMethod != 1) { pagerDelay = notifyPagerAddress.PagerDelay; if (alarmObject.PagerMessage.Trim() != string.Empty) { pagerMessage = alarmObject.PagerMessage; } else { pagerMessage = notifyPagerAddress.PagerMessage; } pagerMessage = notificationStyle.SubstituteFormatString(pagerMessage, alarmObject); notificationSettings.Add("PagerDelay", pagerDelay); notificationSettings.Add("PagerMessage", pagerMessage); notificationSettings.Add("AttemptCount", "0"); notificationSettings.Add("LastSentTime", DateTime.Now); } notificationSettings.Add("PagerComPort", genStoreInfo.PagerComPort); notificationSettings.Add("COMportInitString", genStoreInfo.ComPortInitStr); LogBook.Debug("SNPP Server: " + snppServer); LogBook.Debug("SNPP Port: " + snppPort); notificationSettings.Add("NotificationID", alarmObject.NotificationID); if (notifyPagerAddress.DeliveryMethod == 1) { if (snppServer != string.Empty) { /*Set Default SNPP port if not assigned*/ snppPort = (snppPort < 1 || snppPort > 32767) ? 444 : snppPort; /*If pager destination address is empty record notification as fail*/ if (toAddress != string.Empty) { /*SNPP Server or Host*/ notificationSettings.Add("SNPPServer", genStoreInfo.SNPPServer); /*SNPP Port Number*/ notificationSettings.Add("SNPPPort", snppPort); } else { notificationStyle.RecordNotification(ErrorMessages.PagerComposer_SNPPToAddressNotSupplied, alarmObject.NotificationID, 0, NotifyStatus.FAIL, NotifyTypes.PAGER); /*Exit and return empty notification object*/ return(null); } } else { /*Record notification if SNPP settings are not supplied properly*/ notificationStyle.RecordNotification(ErrorMessages.PagerComposer_SNPPParmsNotSupplied, alarmObject.NotificationID, 0, NotifyStatus.FAIL, NotifyTypes.PAGER); /*Exit and return empty notification object*/ return(null); } } /*Set notification setting to notification object*/ notifyObject.NotifierSettings = notificationSettings; /*Pager body*/ notifyObject.NotificationData = body; return(notifyObject); }
public INotifyObject[] Compose(AlarmObject alarmObject) { List <INotifyObject> notifyList = null; try { notifyList = new List <INotifyObject>(); LogBook.Write("Executing compose method"); //if the dynamic notification is already cleared , no need to send to Notify objects list to notify engine if (alarmObject.IsDynamicNotificationClearProcessStarted == true) { return(new List <INotifyObject>().ToArray()); } //if IsDynamicNotificationCleared is true we need to set the below flag in order skip notifications //received from any escalations while the clear process is going on if (alarmObject.IsDynamicNotificationCleared) { alarmObject.IsDynamicNotificationClearProcessStarted = true; } //to store the message string message = string.Empty; LogBook.Write("Formatting the message"); //create instance of notification style to generate format strings, parse it NotificationStyle notificationStyle = new NotificationStyle(); //get the message from the alarm object message = alarmObject.Value == null ? string.Empty : alarmObject.Value.ToString(); //if message length is greater than zero, get the format string for the message if (message.Length > 0) { message = notificationStyle.GetFormatString(alarmObject, 1, "MessageBoard"); } //replace line breaks with spaces message = message.Replace("\\n", " "); //substitute actual values for the format strings using the alarm object message = notificationStyle.SubstituteFormatString(message, alarmObject); LogBook.Write("Completed message formatting"); //to format the message for missed communications if (alarmObject.IsMissCommNotification == true) { LogBook.Write("Constructing missed comm message"); message = "Missed Communication" + " [" + alarmObject.MissedCommSensorCount + "] sensors"; } if (alarmObject.IsDynamicNotificationCleared) { var prvNotificationList = from info in PreviousNotificationsList where info.SensorAlarmID == alarmObject.SensorAlarmID select info; CurrentClearedBoards = string.Empty; for (int index = prvNotificationList.Count() - 1; index >= 0; index--) { PreviousNotifications info = prvNotificationList.ToList <PreviousNotifications>()[index]; alarmObject.NotificationID = info.NotificationID; alarmObject.NotifyProfileID = info.NotifyProfileID; PreapreMessage(alarmObject, message, ref notifyList); PreviousNotificationsList.Remove(info); } } else { if (!alarmObject.SetServerTime) { AddNotificationToList(alarmObject); } PreapreMessage(alarmObject, message, ref notifyList); } } catch (Exception ex) { LogBook.Write(ex, " CooperAtkins.NotificationClient.NotificationComposer.MsgBrdNotificationComposer"); } return(notifyList.ToArray()); }
/// <summary> /// Create Notification Object /// </summary> /// <param name="genStoreDAO"></param> /// <returns></returns> private NotifyObject GetNotifyObject(Interface.Alarm.AlarmObject alarmObject, GenStoreInfo genStoreInfo, NotifyEmailAddress notifyEmailAddress) { bool isAlphaPager = false, isSSL = false, isTSL = false, isBodyHtml = false; int bodyFormat = Common.FORMAT_TEXT, smtpPort = 0, timeOut = 15000; string subject = "", body = "", emailToAddress = "", emailFromAddress = "", name = "", fromName = "TempTrak Monitor"; string defaultSubject = "", defaultBody = "", defaultPagerSubject = "", defaultPagerBody = "", notifyTree = ""; Int16 alphaPager = 0; /*Initialize NotifyObject*/ NotifyObject notifyObject = new NotifyObject(); /*Initialize NotificationStyle*/ NotificationStyle notificationStyle = new NotificationStyle(); /*Set SSL and TLS flags*/ isSSL = (genStoreInfo.SmtpFlags & 1) == 1 ? true : false; isTSL = (genStoreInfo.SmtpFlags & 2) == 2 ? true : false; /*Set default SMTP Port value*/ if (genStoreInfo.SmtpPort.ToInt() == 0 || genStoreInfo.SmtpPort.ToInt() < 1 || genStoreInfo.SmtpPort.ToInt() > 32767) { /*Default SMTP port number*/ smtpPort = 25; /*If SSL is enables set SMTP port to 465*/ if (isSSL) { smtpPort = 465; } } else { smtpPort = genStoreInfo.SmtpPort.ToInt(); } /*Email Address*/ emailToAddress = notifyEmailAddress.EmailAddress; /*Email notification name*/ name = notifyEmailAddress.Name; /*Alpha Pager*/ alphaPager = notifyEmailAddress.AlphaPager; /*Default Subject*/ defaultSubject = notificationStyle.GetFormatString(alarmObject, 1, "EmailSubject"); /*Default Body*/ defaultBody = notificationStyle.GetFormatString(alarmObject, 1, "EmailBody"); /*Default Pager Subject*/ defaultPagerSubject = notificationStyle.GetFormatString(alarmObject, 1, "EmailSubjectPager"); /*Default Pager Body*/ defaultPagerBody = notificationStyle.GetFormatString(alarmObject, 1, "EmailBodyPager"); /*Notification Tree*/ notifyTree = notificationStyle.GetFormatString(alarmObject, 1, "NotifyTree"); /*Default Pager Subject*/ defaultPagerSubject = (defaultPagerSubject == string.Empty) ? defaultSubject : defaultPagerSubject; /*Default Pager Subject*/ defaultPagerBody = (defaultPagerBody == string.Empty) ? defaultBody : defaultPagerBody; ///*Set Email Body and Subject format*/ if (alphaPager == 0) { isAlphaPager = false; subject = defaultSubject; if (body.ToStr() == string.Empty) { if (alarmObject.AlarmType != AlarmType.COMMUNICATIONS && alarmObject.AlarmType != AlarmType.RESETCOMMUNICATIONS) { body = notificationStyle.GetEmailBody(alarmObject); } else { if (alarmObject.AlarmType == AlarmType.COMMUNICATIONS) { bodyFormat = Common.FORMAT_HTML; body = "<html><head><style>TH{font-family: Verdana,Arial;font-weight: bold;font-size: 10pt;background: #333333;color: white;}TD{font-family: Verdana,Arial;font-weight: normal;font-size: 10pt;}</style></head><body style='font-family: Verdana, Arial; font-size: 10pt;'><span style='font-weight: bold; font-size: 14pt; background: black; color: yellow;'>!!! Missed Communication !!!</span><br /><br /><br /><span style='font-weight: bold;'>Sensor Name: %%NAME%%</span><br>FactoryID: %%ID%%<br /><br /><table border='0' cellpadding='1' cellspacing='1'><tr><th align='left'>TYPE:</th><td>%%TYPE%%</td></tr><tr><th align='left'>GROUP:</th><td>%%GROUP%%</td></tr><tr><th align='left'>Time out of range:</th><td>%%TimeOutOfRange%%</td></tr></table></body></html>"; } else { bodyFormat = Common.FORMAT_HTML; body = "<html><head><style>TH{font-family: Verdana,Arial;font-weight: bold;font-size: 10pt;background: #333333;color: white;}TD{font-family: Verdana,Arial;font-weight: normal;font-size: 10pt;}</style></head><body style='font-family: Verdana, Arial; font-size: 10pt;'><span style='font-weight: bold; font-size: 14pt; background: black; color: yellow;'>!!! Back In Sight/Connection Resumed !!!</span><br /><br /><br /><span style='font-weight: bold;'>Sensor Name: %%NAME%%</span><br>FactoryID: %%ID%%<br /><br /><table border='0' cellpadding='1' cellspacing='1'><tr><th align='left'>TYPE:</th><td>%%TYPE%%</td></tr><tr><th align='left'>GROUP:</th><td>%%GROUP%%</td></tr><tr><th align='left'>Time out of range:</th><td>%%TimeOutOfRange%%</td></tr></table></body></html>"; } } if (body.ToStr() == string.Empty) { body = defaultBody; } else { bodyFormat = Common.FORMAT_HTML; if (defaultBody.ToStr() != string.Empty) { defaultBody = defaultBody.Replace("\\n", "<br>"); body = body + "<BR></BR>" + defaultBody; } } if (notifyTree.ToStr() != string.Empty) { notifyTree = notifyTree.Replace("\\n", "<br>"); body = body + "<BR><BR><TABLE WIDTH=500 style='padding:5px;'><TR><TD><HR><H4>Alarm Notification Action(s)</H4></TD></TR><TR><TD style='border:1px dotted #000000;background:#99ffff;'>" + notifyTree + "</TD></TR></TABLE>"; } } } else /*Alpha pager*/ { isAlphaPager = true; subject = defaultPagerSubject; body = defaultPagerBody.Replace("\\n", Environment.NewLine); } /*Assign default subject and body values*/ subject = (subject == string.Empty) ? defaultSubject : subject; body = (body.ToStr() == string.Empty) ? "" : body; /*commented on 02/28/2011 to display from email address properly*/ /*Get a default "From" address*/ //if (emailToAddress != string.Empty) //{ // foreach (string item in emailToAddress.ToStr().Split(',')) // { // emailFromAddress = item; // break; // } //} emailFromAddress = genStoreInfo.FromAddress; /*Format Subject*/ subject = notificationStyle.SubstituteFormatString(subject, alarmObject); /*Format Body*/ body = notificationStyle.SubstituteFormatString(body, alarmObject); /*Body Format*/ isBodyHtml = (bodyFormat == Common.FORMAT_HTML) ? true : false; /*In case of missed communication set the custom message*/ if (alarmObject.IsMissCommNotification) { subject = "Missed Communication"; //set the appropriate message body = alarmObject.MissedCommSensorInfo; isBodyHtml = true; } /*Set Email From Name*/ fromName = (genStoreInfo.FromName != string.Empty) ? genStoreInfo.FromName : fromName; /*Assigning values to notification object*/ notifyObject.NotificationType = "EMAIL"; /*Assign values to Notification settings*/ Hashtable notificationSettings = new Hashtable(); notificationSettings.Add("SMTPServer", genStoreInfo.SmtpServer); /*0=via SMTPGateway, 1=MX Direct*/ notificationSettings.Add("SMTPSendMethod", genStoreInfo.SmtpSendMethod); notificationSettings.Add("SMTPAuthUserName", genStoreInfo.SmtpAuthUserName); notificationSettings.Add("SMTPAuthPassword", genStoreInfo.SmtpAuthPassword); notificationSettings.Add("SMPTAuthDomain", genStoreInfo.SmtpAuthDomain); notificationSettings.Add("SMTPAuthMethod", genStoreInfo.SMTPAuthMethod); notificationSettings.Add("SMTPFlags", genStoreInfo.SmtpFlags); /*Bitmask: Bit 1=Use SSL, 2=Use TLS*/ notificationSettings.Add("IsSSL", isSSL); notificationSettings.Add("IsTLS", isTSL); notificationSettings.Add("SMTPPort", smtpPort); notificationSettings.Add("BodyFormat", bodyFormat); notificationSettings.Add("FromAddress", emailFromAddress); notificationSettings.Add("ToAddress", emailToAddress); notificationSettings.Add("Subject", subject); notificationSettings.Add("EmailToName", name); notificationSettings.Add("FromName", fromName); notificationSettings.Add("IsAlphaPager", isAlphaPager); notificationSettings.Add("IsBodyHTML", isBodyHtml); //notificationSettings.Add("ReadTimeOut", timeOut); //Default Time out value 15 Sec in old code notifyObject.NotifierSettings = notificationSettings; /* Notification Data */ notifyObject.NotificationData = body; notifyObject.NotifierSettings.Add("NotificationID", alarmObject.NotificationID); return(notifyObject); }
public INotifyObject[] Compose(AlarmObject alarmObject) { NotifyPopupAddressList notificationPopupAddressList = null; string popupMessage = ""; /*Notify List*/ List <INotifyObject> notifyList = new List <INotifyObject>(); /*Initialize NotifySettings*/ NotificationStyle notificationStyle = new NotificationStyle(); if (alarmObject.IsMissCommNotification) { _logContent = "Missed Communication"; } else { _logContent = "SensorID: " + alarmObject.UTID.ToStr() + " SensorAlarmID: " + alarmObject.SensorAlarmID.ToStr(); } /*Check whether server popup or remote popup*/ if (alarmObject.IsServerPopup) { /*Write Log: * Started Server popup Notification * Reached Server popup Notification Composer*/ LogBook.Write("*** Started Composing Server popup Notification for " + _logContent + "***"); /*Get custom message for missed communication*/ if (alarmObject.IsMissCommNotification) { popupMessage = "Missed Communication" + " [" + alarmObject.MissedCommSensorCount + "] sensors"; } else { /*Get popup message*/ popupMessage = notificationStyle.GetFormatString(alarmObject, 1, "Popup"); /*Substitute message parameters*/ popupMessage = notificationStyle.SubstituteFormatString(popupMessage, alarmObject); } /*Server popup*/ NotifyPopupAddress notifyPopupAddress = new NotifyPopupAddress(); notifyPopupAddress.NetSendTo = ConfigurationManager.AppSettings.Get("NetSendTo").ToStr(); notifyPopupAddress.Name = ConfigurationManager.AppSettings.Get("NetSendFromName").ToStr(); /*Get Notification Object*/ INotifyObject notifyObject = GetNotifyObject(alarmObject, popupMessage, notifyPopupAddress); if (notifyList.Count > 0) { /*Write Log * Sending Server Popup notification data to Notification Engine*/ LogBook.Write(_logContent + " Sending notification data to Server Popup Notification Engine."); } notifyList.Add(notifyObject); } else { /*Write Log: * Started Server popup Notification * Reached Server popup Notification Composer*/ LogBook.Write("*** Started Composing Remote popup Notification for " + _logContent + "***"); /*Get custom message for missed communication*/ if (alarmObject.IsMissCommNotification) { popupMessage = "Missed Communication" + " [" + alarmObject.MissedCommSensorCount + "] sensors"; } else { /*Get NetSend message*/ popupMessage = notificationStyle.GetFormatString(alarmObject, 1, "NetSend"); /*Notification Tree*/ string notifyTree = notificationStyle.GetFormatString(alarmObject, 1, "NotifyTree"); /*Format Subject*/ string netSendMsg = notificationStyle.SubstituteFormatString(popupMessage, alarmObject); popupMessage = netSendMsg; /*Format Notify Tree*/ string netTreeMsg = notificationStyle.SubstituteFormatString(notifyTree, alarmObject); notifyTree = netTreeMsg; if (notifyTree != string.Empty) { popupMessage = popupMessage + "%%NOTIFYTREE%%" + notifyTree; } } /*Get Notification Popup Address List*/ notificationPopupAddressList = GetNotifyPopupAddressList(alarmObject); if (notificationPopupAddressList.Count != 0) { /*Get Popup Notification list*/ notifyList = GetNotificationList(notificationPopupAddressList, alarmObject, popupMessage); } else { /*Log when we don't have Popup address to notify*/ LogBook.Write(_logContent + " Error: Missing entry in NotifyEmails/Groups"); } if (notifyList.Count > 0) { /*Write Log * Sending Remote Popup notification data to Notification Engine*/ LogBook.Write(_logContent + " Sending notification data to Remote Popup Notification Engine."); } } return(notifyList.ToArray()); }