Alert Template can be personalized by including dynamic variables that are turned to the current system values upon sending an alert.
Syntax of Dynamic Templates
Dotcom-Monitor supports dynamic templates built upon Microsoft’s Razor parsing engine. Introduction to Razor syntax can be found here.
Customize Your Template with Dotcom-Monitor System Variables
See the Dotcom-Monitor Dynamic Variables Reference for commonly used dynamic variables. For more details, please explore the Dotcom-Monitor ObjectModel and refer to the examples provided in this article.
Dotcom-Monitor ObjectModel
Find the Dotcom-Monitor ObjectModel class diagram and the corresponding class source code below. Use the attributes as dynamic variables in the Alert Template script.
-
Dotcom-Monitor ObjectModel
-
MVTemplateModel (MetricsView Platform)
// MetricsView Platform namespace Dotcom.Server.Notification.Templating {    public class MVTemplateModel       {          public Response[] SessionResponses { get; }        public string HTMLPageSnapshotLink { get ;}        public string TraceLink            { get ;}        public string ScreenLink           { get ;}        public string WaterFallLink        { get ;}        public string OnlineReportLink     { get ;}        public string DMUserLink           { get ;}        public NotificationType       Type               { get; }        public string AlertName        {            get            {                switch (Type)                {                    case NotificationType.Error : return "ALERT";                    case NotificationType.Uptime: return "ALL CLEAR";                    case NotificationType.Test : return "TEST";                }                return "Notification alert";            }        }        public NotificationType       AlertType          { get; }        public DateTime ServerNotificationTime            { get; }        public DateTime MinResponseTime                   { get; }        public DateTime MaxResponseTime                   { get; }        public string Site_Name       { get; }        public string Contact_Full_Name { get; }        public string Contact_Org_Name  { get; }        public string Contact_Title_Name { get; }        public string Contact_Email_Addr { get; }        public string UID               { get; }        public string OnlineReportCUID  { get; }        public DateTime Monitor_DateTime { get;}        public DateTime Now { get; }        public DateTime StartMonitorDowntime { get; }        public DateTime StartMonitorUptime  { get; }        public TimeSpan DownTimeDuration        {            get ;        }        public string DownTimeDurationWellFomratted        {            get;        }        public Response FirstErrorResponse { get; }//FirstResponse        public Response DownStateResponse { get; }        public Response[] LastXResponses { get; }              public bool HasTraceRoute(Response response)              {              }              public string GetTraceLinkParam(long duration, int monitorId, DateTime startTime, string address)              {              } public State CurrentState { get; }    } } -
SVTemplateModel (ServerView Platform)
// ServerView and WebView Platforms namespace Dotcom.Server.Notification.Templating {    public class SVTemplateModel       {        public Response RootResponse { get; }        public virtual long Response_Seq_IDForWaterfallLink { get { return RootResponse.ID; } }                 public string HTMLPageSnapshotLink { get ;}        public string TraceLink            { get ;}        public string ScreenLink           { get ;}        public string WaterFallLink        { get ;}        public string OnlineReportLink     { get ;}        public string DMUserLink           { get ;}        public NotificationType       Type               { get; }        public string AlertName        {            get            {                switch (Type)                {                    case NotificationType.Error : return "ALERT";                    case NotificationType.Uptime: return "ALL CLEAR";                    case NotificationType.Test : return "TEST";                }                return "Notification alert";            }        }        public NotificationType       AlertType          { get; }        public DateTime ServerNotificationTime            { get; }        public DateTime MinResponseTime                   { get; }        public DateTime MaxResponseTime                   { get; }        public string Site_Name       { get; }        public string Contact_Full_Name { get; }        public string Contact_Org_Name  { get; }        public string Contact_Title_Name { get; }        public string Contact_Email_Addr { get; }        public string UID               { get; }        public string OnlineReportCUID  { get; }        public DateTime Monitor_DateTime { get;}        public DateTime Now { get; }        public DateTime StartMonitorDowntime { get; }        public DateTime StartMonitorUptime  { get; }        public TimeSpan DownTimeDuration        {            get ;        }        public string DownTimeDurationWellFomratted        {            get;        }                public Response FirstErrorResponse { get; }//FirstResponse        public Response DownStateResponse { get; }        public Response[] LastXResponses { get; }                                   public bool HasTraceRoute(Response response)              {                         }                          public string GetTraceLinkParam(long duration, int monitorId, DateTime startTime, string address)              {              }        public State CurrentState { get; }      } } -
UVTemplateModel (UserView/BrowserView Platform)
//UserView and BrowserView Platforms namespace Dotcom.Server.Notification.Templating {    public class UVTemplateModel       {        public Response RootResponse { get; }        public virtual long Response_Seq_IDForWaterfallLink { get { return RootResponse.ID; } }                   public string HTMLPageSnapshotLink { get ;}        public string TraceLink            { get ;}        public string ScreenLink           { get ;}        public string WaterFallLink        { get ;}        public string OnlineReportLink     { get ;}        public string DMUserLink           { get ;}        public NotificationType       Type               { get; }        public string AlertName        {            get            {                switch (Type)                {                    case NotificationType.Error : return "ALERT";                    case NotificationType.Uptime: return "ALL CLEAR";                    case NotificationType.Test : return "TEST";                }                return "Notification alert";            }        }        public NotificationType       AlertType          { get; }             public DateTime ServerNotificationTime            { get; }        public DateTime MinResponseTime                   { get; }        public DateTime MaxResponseTime                   { get; }        public string Site_Name       { get; }              public string Contact_Full_Name { get; }        public string Contact_Org_Name  { get; }        public string Contact_Title_Name { get; }        public string Contact_Email_Addr { get; }        public string UID               { get; }        public string OnlineReportCUID  { get; }        public DateTime Monitor_DateTime { get;}        public DateTime Now { get; }        public DateTime StartMonitorDowntime { get; }        public DateTime StartMonitorUptime  { get; }        public TimeSpan DownTimeDuration        {            get ;        }        public string DownTimeDurationWellFomratted        {            get;        }                   public Response FirstErrorResponse { get; }//FirstResponse        public Response DownStateResponse { get; }        public Response[] LastXResponses { get; }                              public bool HasTraceRoute(Response response)              {                         }                           public string GetTraceLinkParam(long duration, int monitorId, DateTime startTime, string address)              {              }     public State CurrentState { get; }         } } -
Response
namespace Dotcom.Reporting.Common {    [Serializable]    [System.Diagnostics.DebuggerDisplay("ID={ID};UUID={UUID};Level={Level};ParentID={ParentID};HasChild={HasChild};Start={Start,yyyy-MM-dd HH:mm:ss.fff}")]    public class Response    {        public long ID;        public long ParentID;        public long UUID;        public int Level;        public const int SUMMARY = 1;        public const int TASK = 2;        public const int SMART_USER_STEP = 3;        public const int SMART_USER_ACTION = 4;        public const int SMART_CHANNEL = 5;        public Device Device;        public Task Task;       public Monitor Monitor;        public long[] OwnErrorCodes;        public long[] ChildErrorCodes;        public Error_v2[] OwnErrors;        public Error_v2[] ChildErrors;        public Error_v2[] AllErrors { get { return ReferenceEquals(OwnErrors,null)? ChildErrors: OwnErrors.Concat(ReferenceEquals(ChildErrors, null)?new Error_v2[0]:ChildErrors).ToArray(); } }        public DateTime Start;        public bool HasTrace;        public bool HasTraceV2;        public bool HasDnsTrace;        public bool HasBody;        public bool HasChild;        public bool HasNotShadowChild;        public bool HasVideo;        public bool IsShadow;        public string Uri;        public string ContentType;        public IEnumerable<Response> Children        {            get            {            }        }        public bool IsFail        {            get           {                return (!ReferenceEquals(OwnErrorCodes, null) && OwnErrorCodes.Length > 0)                    || (!ReferenceEquals(ChildErrorCodes, null) && ChildErrorCodes.Length > 0);            }        }        public int Size;        public int SV_DurationMS;        public float MV_AggregatedValue;// MV_AvgLoadTime;        public long MV_HitCount;        public int UV_StepID;        public int DnsTime;        public int SSLTime;        public int ConnectTime;        public int RequestTime;        public int FirstByteTime;        public int ResponseTime;        public IEnumerable<KeyValuePair<Dotcom.DetailTypes, string>> DetailInfoKeyed()        {        }         public IEnumerable<Tuple<Dotcom.DetailTypes, string, bool>> DetailInfoXmlKeyed(DetailTypes[] baseType)        {        }        public IEnumerable<KeyValuePair<Dotcom.DetailTypes, string>> DetailInfoKeyed(DetailTypes[] baseType)        {        }        public IEnumerable<string> DetailInfo()        {        }        public IEnumerable<string> DetailInfo(DetailTypes[] baseType)        {        }        public bool IsPresentHitDetail(DetailTypes baseType)        {        }        public object Tag;        public virtual string Name        {           get            {            }        }              public string UVText        {           get            {            }        }    } } -
Device
namespace Dotcom.Reporting.Common {    public enum PlatformType : byte { None = 0, ServerView = 1, LoadView =2 , MetrixView=3, UserView =4 , PrivateAgent=5, BrowserView=7 , MetricsCollector = 8, WebView = 12 }    public enum DeviceState : byte { Active = 0, Postpone = 1, Deleted, CancelUpgrade, NoTasks, NotCompleted }    [Serializable]    public sealed class Device    {         public Device(int id)            : base(id)        { }        public string Name { get; }                                public int ID { get; }        public IList<Task> Tasks             { get; }        public PlatformType PlatformType      { get; }        public PlatformType PlatformTypeByTask { get; }        public DeviceState DeviceState       { get; }        public string      PackageName       { get; }    } } -
Monitor
namespace Dotcom.Reporting.Common {    [Serializable]    public class Monitor    {        public Monitor(int id)            :base( id ){}        public string Name { get; }              public int ID { get; }              } } -
Task
namespace Dotcom.Reporting.Common {    public enum TaskState : byte { Active = 0, Deleted }    public enum TaskTypes : byte    {       Unknown,        TEMPTRAX, // obsolete, not supported       HTTP,        HTTPS,        POP3,       SMTP,        Mail, // Email Round Trip Task        FTP,        Ping,        DNS,       Connection, // TelNet Task        SOAP,        Script, // Custom Script Task        UDP,        DNSBL,        MEDIA, // Streaming Media Task        SIP,        SFTP,       MV_HitCounter, // obsolete, not supported        TraceRoute,        Smart, // UserView Task        Browser // BrowserView Task       MV_PerformanceCounter, // MetricsView Windows Task Aggregated, // reserved, not supported yet        ActiveSync,      MV_ExtAPI, // MetricsView Custom Metrics Task        MV_WinAPI, // obsolete, not supported        MV_SmnpAPI, // MetricsView SNMP Collector Task       MV_Import, // reserved, not supported        MV_LinuxAPI // MetricsView Linux Task    }    [Serializable]    public sealed class Task    {         public Task(int id)            : base(id)        { }       public string Name { get; }              public int ID { get; }                   public Device Device { get; }        public string   TaskType_Name { get; }        public TaskTypes ClassTaskType { get; }        public string ClassType { get { return ClassTaskType.ToString(); } }        public TaskState TaskState    { get; }        public int      TaskTimeout  { get; }        public int      TimeOutUnit  { get; }        public IDictionary<string, object> AllParams { get; }        public string GetParameterValue(string propertyName)        {            if (ReferenceEquals(AllParams, null) || !AllParams.ContainsKey(propertyName)) return string.Empty;            object res = AllParams[propertyName];            return ReferenceEquals(res, null) ? string.Empty : res.ToString();        }        public IEnumerable<string> Targets        {            get            {                switch(ClassTaskType)                {                    case TaskTypes.Mail:                        yield return GetParameterValue("UrlPOP3");                        yield return GetParameterValue("Url");                        yield break;                                         case TaskTypes.Script: yield return GetParameterValue("File"); yield break;                    case TaskTypes.ActiveSync: yield return GetParameterValue("Server"); yield break;                    case TaskTypes.DNS: yield return GetParameterValue("CheckUrl"); yield break;                }                yield return GetParameterValue("Url");            }        }    } } -
State
public class State
{
public int ID { get; }
public DateTime StartTime { get; }
public State PreviousState { get; }
}
Examples of Alert Templates
-
Basic JSON Template
{ "devicename" : "@Model.Site_Name", "taskName" : "@Model.FirstErrorResponse.Task.Name", "error" : "Error Type:@Model.FirstErrorResponse.AllErrors[0].ErrorType;Error Code:@Model.FirstErrorResponse.AllErrors[0].ErrorCode;Reason:@Model.FirstErrorResponse.AllErrors[0].Reason", "StartMonitorDowntime" : @(((long)Model.StartMonitorDowntime.Subtract(new DateTime(1970, 1, 1)).TotalMilliseconds)) }Alert notification layout:
{ "devicename" : "bbc.com", "taskName" : "https://bbc.com", "error" : "Error Type:Validation;Error Code:300;Reason:Task maximum timeout expired. Configured Timeout: 0.010 sec. Actual Response: 13.125 sec.", "StartMonitorDowntime" : 1558991488950 } -
Comprehensive JSON Template
Although some fields may be empty in the notification depending on the response and monitoring type, the template can be used for any type of monitoring.
{ "DeviceName" : "@Model.RootResponse.Device.Name", "NotificationType" : "@Model.Type", "TaskName" : "@Model.RootResponse.Task?.Name",@*SV root response does not contain Task. what if it is an UPTIME? *@ "IfErrorTaskName" : "@Model.FirstErrorResponse?.Task?.Name", "IfErrorUrl" : "@Model.FirstErrorResponse?.Uri", "IfErrorValidNameLikeInOnlineReport" : "@Model.FirstErrorResponse?.Name", "IfErrorValidTargetLikeInOnlineReport" : "@Model.FirstErrorResponse?.Target", "LocationName" : "@Model.RootResponse.Monitor.Name", "CurrentState_StartMonitorDowntimeIfItisAError" : "@Model.CurrentState.StartTime", "PrevState_StartTime" : "@Model.CurrentState.PreviousState?.StartTime", "CurrentResponseNotificationStartTime" : "@Model.RootResponse.Start", "FirstErrorIfPresent_Type" : "@(Model.FirstErrorResponse!=null && Model.FirstErrorResponse?.AllErrors!=null && Model.FirstErrorResponse.AllErrors.Length>0 ? Model.FirstErrorResponse.AllErrors[0].ErrorType:"")", "FirstErrorIfPresent_Code" : "@(Model.FirstErrorResponse!=null && Model.FirstErrorResponse?.AllErrors!=null && Model.FirstErrorResponse.AllErrors.Length>0 ? Model.FirstErrorResponse.AllErrors[0].ErrorCode:"")", "FirstErrorIfPresent_Reason" : "@(Model.FirstErrorResponse!=null && Model.FirstErrorResponse?.AllErrors!=null && Model.FirstErrorResponse.AllErrors.Length>0 ? Model.FirstErrorResponse.AllErrors[0].Reason:"")", @if(Model.FirstErrorResponse!=null && Model.FirstErrorResponse.AllErrors!=null) { @:"ALLErrors":[ @foreach(var error in Model.FirstErrorResponse.AllErrors) { @:{ "ErrorType": "@error.Name", "ErrorCode": "@error.ErrorCode", "Reason" : " @error.Reason" } } @:], } "DNSTraceLink" : "@string.Format("{0}/DnsTree.aspx?id={1}", Model.DMUserLink, Model.RootResponse.ID)", "DNSTraceFistErrorRespLink" : "@string.Format("{0}/DnsTree.aspx?id={1}", Model.DMUserLink, Model.FirstErrorResponse?.ID)", @if(Model.FirstErrorResponse!=null && !string.IsNullOrEmpty(Model.FirstErrorResponse.Uri)) { @:"TraceRouteLink" : "string.Format("{0}/TraceRouteHistory.aspx?FP={1}", Model.DMUserLink, Uri.EscapeDataString(Model.GetTraceLinkParam(Model.FirstErrorResponse.SV_DurationMS, Model.FirstErrorResponse.Monitor.ID, Model.FirstErrorResponse.Start, Model.FirstErrorResponse.Uri)))", } "WaterFallLink" : "@Model.WaterFallLink?id=@Model.RootResponse.ID", "OnlineReportLink" : "@Model.DMUserLink/OnlineReporting.aspx?CUID=@Model.OnlineReportCUID" "FirstTagIfPresent_Name" : "@(Model.RootResponse.Device.Tags!=null && Model.RootResponse.Device.Tags.Count>0?Model.RootResponse.Device.Tags[0].Name:"")", "FirstTagIfPresent_Color" : "@(Model.RootResponse.Device.Tags!=null && Model.RootResponse.Device.Tags.Count>0?Model.RootResponse.Device.Tags[0].Color:"")", "FirstTagIfPresent_TextColor" : "@(Model.RootResponse.Device.Tags!=null && Model.RootResponse.Device.Tags.Count>0?Model.RootResponse.Device.Tags[0].TextColor:"")", @if(Model.RootResponse.Device.Tags != null && Model.RootResponse.Device.Tags.Count > 0) { @:"DeviceTags":[ @foreach(var tag in Model.RootResponse.Device.Tags) { @:{ "Name": "@tag.Name", "Color": "@tag.Color", "TextColor" : " @tag.TextColor" } } @:] } }Alert notification layout for a Single Web Page monitoring device (BrowserView):
{ Â Â Â "DeviceName" : "example.com", Â Â Â "NotificationType" : "Error", Â Â Â "TaskName" : "example.com", Â Â Â "IfErrorTaskName" : "example.com", Â Â Â "IfErrorUrl" : "", Â Â Â "IfErrorValidNameLikeInOnlineReport" : "example.com", Â Â Â "IfErrorValidTargetLikeInOnlineReport" : "", Â Â Â "LocationName" : "Mumbai", Â Â Â "CurrentState_StartMonitorDowntimeIfItisAError" : "7/28/2025 6:13:25 PM", Â Â Â "PrevState_StartTime" : "", Â Â Â "CurrentResponseNotificationStartTime" : "7/28/2025 6:35:07 PM", Â Â Â "FirstErrorIfPresent_Type" : "Certificate", Â Â Â "FirstErrorIfPresent_Code" : "104", Â Â Â "FirstErrorIfPresent_Reason" : "Certificate CN validation fault.", Â Â "ALLErrors":[ Â Â Â Â Â Â { "ErrorType": "", "ErrorCode": "104", "Reason" : " Certificate CN validation fault." } Â Â ], Â Â Â Â "DNSTraceLink" : "https://user.dotcom-monitor.com/C4879/DnsTree.aspx?id=xxxxx", Â Â Â Â "DNSTraceFistErrorRespLink" : "https://user.dotcom-monitor.com/C4879/DnsTree.aspx?id=xxxxx", Â Â Â Â "WaterFallLink" : "https://user.dotcom-monitor.com/C4879/DetailView.aspx?id=xxxxx", Â Â Â Â "OnlineReportLink" : "https://user.dotcom-monitor.com/C4879/OnlineReporting.aspx?CUID=xxxxx=" Â Â Â "FirstTagIfPresent_Name" : "High priority", Â Â Â "FirstTagIfPresent_Color" : "#FBD6E3", Â Â Â "FirstTagIfPresent_TextColor" : "#727078", Â Â "DeviceTags":[ Â Â Â Â Â Â { "Name": "High priority", "Color": "#FBD6E3", "TextColor" : " #727078" } Â Â Â Â Â Â { "Name": "My device", "Color": "#DEF0DF", "TextColor" : " #727078" } Â Â ] } -
UserView/BrowserView Device TXT Template
.TXT Alert Template
Notification Type : @Model.AlertName Location : @Model.FirstErrorResponse.Monitor.Name StartMonitorDowntime : @Model.StartMonitorDowntime Time : @Model.RootResponse.Start Platform Type : @Model.RootResponse.Device.PlatformType Browser Type : @Model.RootResponse.Device.Tasks[0].GetParameterValue("BrowserEngine") Device Name : @Model.RootResponse.Device.Name Device State : @Model.RootResponse.Device.DeviceState View Online Report : @(Model.DMUserLink)/OnlineReporting.aspx?CUID=@Model.OnlineReportCUID View Waterfall Report : @(Model.DMUserLink)/DetailView.aspx?id=@Model.RootResponse.ID&Tab=TimeWaterChart&CUID=@Model.OnlineReportCUID View Video : @(Model.DMUserLink)/DetailView.aspx?id=@Model.RootResponse.ID&Tab=TimeVideoChart&CUID=@Model.OnlineReportCUID @if (Model.RootResponse.Device.PlatformType == Dotcom.Reporting.Common.PlatformType.BrowserView) { @:Url(target) : @Model.RootResponse.Device.Tasks[0].GetParameterValue("Url") } @{ Stack<Dotcom.Reporting.Common.Response> stack = new Stack<Dotcom.Reporting.Common.Response>(); stack.Push(Model.RootResponse); Dotcom.Reporting.Common.Response currentStepResp = null; } ERROR DETAILS @while (stack.Count > 0) { var current = stack.Pop(); if (current.Level == Dotcom.Reporting.Common.Response.SMART_USER_STEP) { currentStepResp=current; } if (current.HasChild) { foreach (var r in current.Children.Reverse()) { stack.Push(r); } } if (current.Level == 3) { continue; } if (current.OwnErrors != null) { if (Model.RootResponse.Device.PlatformType == Dotcom.Reporting.Common.PlatformType.UserView && currentStepResp!=null) { @:Step ID : @currentStepResp.UV_StepID } @:Element : @current.Name if (current.IsPresentHitDetail(Dotcom.DetailTypes.Content) || current.IsPresentHitDetail(Dotcom.DetailTypes.HtmlBody)) { @:Html Body Url : @(Model.DMUserLink)/site-traceroute.aspx?hitdetail=Content&id=@current.ID } @:Trace Url : @(Model.DMUserLink)/TraceRouteHistory.aspx?FP=@Uri.EscapeDataString(Model.GetTraceLinkParam(current.SV_DurationMS, current.Monitor.ID, current.Start, current.Uri)) if (current.OwnErrors.Any(error => error.ErrorType == Dotcom.ErrorTypes.DNS)) { @:DNS Trace Url : @(Model.DMUserLink)/DnsTree.aspx?id=@current.ID } @:Details: foreach (var error in current.OwnErrors) { @: @error.ErrorType (@error.ErrorCode): @Raw(error.Reason) } } }Alert .TXT
Notification Type : ALERT Location : monitor 4_rum StartMonitorDowntime : 5/31/2019 3:59:50 PM Time : 5/31/2019 6:46:05 PM Platform Type : UserView Browser Type : Chrome Device Name : 3tasks Device State : Active View Online Report : https://user.dotcom-monitor.com/OnlineReporting.aspx?CUID=AAAAAAEAAABtYwAAALjVAzHl1ghghmHv+OXWCAAAAAB5BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtMYXN0MjRIb3VycwAAAAA= View Waterfall Report : https://user.dotcom-monitor.com/DetailView.aspx?id=1086785086&Tab=TimeWaterChart&CUID=AAAAAAEAAABtYwAAALjVAzHl1ghghmHv+OXWCAAAAAB5BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtMYXN0MjRIb3VycwAAAAA= View Video : https://user.dotcom-monitor.com/DetailView.aspx?id=1086785086&Tab=TimeVideoChart&CUID=AAAAAAEAAABtYwAAALjVAzHl1ghghmHv+OXWCAAAAAB5BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtMYXN0MjRIb3VycwAAAAA= ERROR DETAILS Step ID : 1 Element : https://www.tutrtret.by/ Trace Url : https://user.dotcom-monitor.com/TraceRouteHistory.aspx?FP=0AAAAAAAAAAEAAAAcDDDOPjl1ggPd3d3LnR1dHJ0cmV0LmJ5cNaHbvjl1ggBAAAABAAAAAAAAAA%3D DNS Trace Url : https://user.dotcom-monitor.com/DnsTree.aspx?id=1086785089 Details: DNS (12007): The host name 'www.tutrtret.by' could not be resolved.
-
ServerView Device TXT Template
 .TXT Alert Template
Notification Type : @Model.AlertName Location : @Model.FirstErrorResponse.Monitor.Name StartMonitorDowntime : @Model.StartMonitorDowntime Time : @Model.RootResponse.Start Platform Type : @Model.RootResponse.Device.PlatformType Device Name : @Model.RootResponse.Device.Name Device State : @Model.RootResponse.Device.DeviceState View Online Report : @(Model.DMUserLink)/OnlineReporting.aspx?CUID=@Model.OnlineReportCUID View Waterfall Report : @(Model.DMUserLink)/DetailView.aspx?id=@Model.RootResponse.ID&Tab=TimeWaterChart&CUID=@Model.OnlineReportCUID @{ Stack<Dotcom.Reporting.Common.Response> stack = new Stack<Dotcom.Reporting.Common.Response>(); stack.Push(Model.RootResponse); } ERROR DETAILS @while (stack.Count > 0) { var current = stack.Pop(); if (current.HasChild) { foreach (var r in current.Children.Reverse()) { stack.Push(r); } } if (current.Level == Dotcom.Reporting.Common.Response.TASK) { @:Task Name : @current.Task.Name @:Task Type : @current.Task.ClassType @:Url(target) : @string.Join(";",current.Task.Targets) } if (current.OwnErrors != null) { @:Element : @current.Name if (current.IsPresentHitDetail(Dotcom.DetailTypes.Content) || current.IsPresentHitDetail(Dotcom.DetailTypes.HtmlBody)) { @:Html Body Url : @(Model.DMUserLink)/site-traceroute.aspx?hitdetail=Content&id=@current.ID } @:Trace Url : @(Model.DMUserLink)/TraceRouteHistory.aspx?FP=@Uri.EscapeDataString(Model.GetTraceLinkParam(current.SV_DurationMS, current.Monitor.ID, current.Start, current.Uri)) if (current.OwnErrors.Any(error => error.ErrorType == Dotcom.ErrorTypes.DNS)) { @:DNS Trace Url : @(Model.DMUserLink)/DnsTree.aspx?id=@current.ID } @:Details: foreach (var error in current.OwnErrors) { @: @error.ErrorType (@error.ErrorCode): @Raw(error.Reason) } } }Alert .TXT
Notification Type : ALERT Location : monitor 1_muskat StartMonitorDowntime : 6/3/2019 1:14:26 PM Time : 6/3/2019 3:01:15 PM Platform Type : WebView Device Name : Dynamic_get Device State : Active View Online Report : https://user.dotcom-monitor.com/OnlineReporting.aspx?CUID=AQAAAO4zAAAAAAAAAMDFXXPn1giQPlYGNejWCAAAAAB5BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtMYXN0MjRIb3VycwAAAAA= View Waterfall Report : https://user.dotcom-monitor.com/DetailView.aspx?id=-158664977&Tab=TimeWaterChart&CUID=AQAAAO4zAAAAAAAAAMDFXXPn1giQPlYGNejWCAAAAAB5BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtMYXN0MjRIb3VycwAAAAA= ERROR DETAILS Task Name : https://user.dotcom-monitor.com/Wizard Task Type : HTTPS Url(target) : https://user.dotcom-monitor.com/Wizard?pid=sss Element : https://user.dotcom-monitor.com/Wizard Html Body Url : https://user.dotcom-monitor.com/site-traceroute.aspx?hitdetail=Content&id=1087506754 Trace Url : https://user.dotcom-monitor.com/TraceRouteHistory.aspx?FP=AgAAAAAAAAABAAAAkD2kQTTo1ggXdXNlci5kb3Rjb20tbW9uaXRvci5jb22wdEl3NOjWCAEAAAABAAAAAAAAAA%3D%3D Details: HTTP (404): Not Found.
-
MetricsView Device TXT Template
.TXT Alert Template
Notification Type : @Model.AlertName StartMonitorDowntime : @Model.StartMonitorDowntime Time : @Model.SessionResponses[0].Start Platform Type : @Model.SessionResponses[0].Device.PlatformType Device Name : @Model.SessionResponses[0].Device.Name Device State : @Model.SessionResponses[0].Device.DeviceState View Online Report : @(Model.DMUserLink)/OnlineReporting.aspx?CUID=@Model.OnlineReportCUID ERROR DETAILS @foreach(var current in Model.SessionResponses) { @:Task Name : @current.Task.Name @:Task Type : @current.Task.ClassType @:Element : @current.Name if (current.Task.ClassTaskType == Dotcom.Reporting.Common.TaskTypes.MV_PerfomanceCounter) { @:Category : @current.Task.GetParameterValue("Category") @:Instance : @current.Task.GetParameterValue("Instance") @:CounterName : @current.Task.GetParameterValue("CounterName") @:Machine : @current.Task.GetParameterValue("Machine") @:MachineAddress : @current.Task.GetParameterValue("MachineAddress") } if (current.OwnErrors != null) { @:Details: foreach (var error in current.OwnErrors) { @: @error.ErrorType (@error.ErrorCode): @Raw(error.Reason) } } }Alert .TXT
Notification Type : ALERT StartMonitorDowntime : 6/3/2019 3:16:23 PM Time : 6/3/2019 3:48:54 PM Platform Type : MetrixView Device Name : 12. test_mv_207.250.235.79 Device State : Active View Online Report : https://user.dotcom-monitor.com/OnlineReporting.aspx?CUID=AQAAANEiAAAAAAAAAMDFXXPn1gjgUiWuO+jWCAAAAABtBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtMYXN0MjRIb3VycwAAAAA= ERROR DETAILS Task Name : System - Local, Avg, 50_100 Task Type : MV_PerfomanceCounter Element : System - Local, Avg, 50_100 Category : System Instance : CounterName : Processes Machine : Remote MachineAddress : localhost Details: Validation (112): Maximum threshold is reached.
For more real examples or questions, create a ticket.

