private string ValidateCue(SignalDbRecord signal, Cue cue) { try { CueOption cueExists = signal.Signal.Cues[cue.CueId]; } catch (Exception) { throw new Exception($"Cue [{cue.CueId}] Does Not Exist In Signal [{signal.Id}]."); } if (signal.IsActive == false) { return($"Signal [{cue.Id}] Is Not Active."); } if (signal.Signal.MaxReplies > 0) { int validCount = 0; foreach (string actionKey in signal.Actions.Keys) { if (signal.Actions[actionKey].IsValid) { validCount++; } } if (validCount >= signal.Signal.MaxReplies) { return($"Signal [{cue.Id}] Has Exceeded the Maximum Valid Replies Allowed."); } } return(null); }
private void SendStatusNotification(Status status, string reporterId, string routerId, string routerType) { Signal signal = new Signal(); signal.ReporterId = reporterId; signal.RouterId = routerId; signal.RouterType = routerType; signal.Name = "Status Update"; signal.Description = $"Id: [{status.Id}], ActionId [{status.ActionId}]"; signal.IncludeId = false; CueOption cue = new CueOption(); cue.Name = status.NewStatus.ToString(); if (!String.IsNullOrWhiteSpace(status.Message)) { cue.Description = status.Message; } else if (status.Data != null) { cue.Description = JsonTools.Serialize(status.Data, false); } signal.Cues = new Dictionary <string, CueOption>(); signal.Cues["update"] = cue; SendStatusNotification(signal); }
public static SlackMessage CreateSlackMessage(ChannelRequest request) { SlackMessage message = new SlackMessage(); Signal signal = request.Signal; String webHook = request?.Channel?.Target; string mainTitle = $"{signal.Name}\n{signal.Description}"; if (String.IsNullOrEmpty(signal.Name)) { mainTitle = signal.Description; } else if (String.IsNullOrEmpty(signal.Description)) { mainTitle = signal.Name; } if (!String.IsNullOrWhiteSpace(mainTitle)) { message.Text = mainTitle; } else if (signal.Cues == null) { message.Text = " "; } if (signal.IncludeId) { if (String.IsNullOrWhiteSpace(message.Text)) { message.Text = $"Id : {request.Id}"; } else { message.Text += $"\n(Id : {request.Id})"; } } if (signal.Cues != null) { foreach (string key in signal.Cues.Keys) { CueOption cue = signal.Cues[key]; SlackAttachment attachment = CreateSlackAttachment(request.Id, key, cue); message.Attachments.Add(attachment); } } return(message); }
// ****************************************************************** // *** MessageCard Methods // ****************************************************************** public static MessageCard CreateMessageCardMessage(ChannelRequest request) { MessageCard message = new MessageCard(); Signal signal = request.Signal; message.Title = String.IsNullOrEmpty(signal.Name) ? " " : signal.Name; message.Text = String.IsNullOrEmpty(signal.Description) ? " " : signal.Description; if (signal.IncludeId) { if (String.IsNullOrWhiteSpace(message.Title)) { message.Title = $"Id: {request.Id}"; } else { message.Title += $" (Id: {request.Id})"; } } if (signal.Cues != null) { int totalCues = signal.Cues.Count; foreach (string key in signal.Cues.Keys) { CueOption cue = signal.Cues[key]; MessageCardSection section = new MessageCardSection { Title = cue.Name, Text = cue.Description }; message.Sections.Add(section); foreach (SignalVariable cueAction in cue.Actions) { MessageCardAction action = CreateMessageCardAction(request, key, cueAction); if (action != null) { message.PotentialActions.Add(action); } } } } return(message); }
public static SlackAttachment CreateSlackAttachment(string signalId, string cueId, CueOption cue) { SlackAttachment attachment = new SlackAttachment(); string cueTitle = $"{cue.Name}\n{cue.Description}"; if (String.IsNullOrEmpty(cue.Name)) { cueTitle = cue.Description; } else if (String.IsNullOrEmpty(cue.Description)) { cueTitle = cue.Name; } attachment.Text = cueTitle; attachment.CallbackId = $"{signalId}|{cueId}"; foreach (SignalVariable action in cue.Actions) { SlackAction slackAction = CreateSlackAction(action); attachment.Actions.Add(slackAction); } return(attachment); }
public static AdaptiveCard CreateAdaptiveCard(string signalId, string cueId, CueOption cue) { AdaptiveCard card = new AdaptiveCard(); card.Body.Add(new AdaptiveCardBody()); card.Body[0].Separator = true; AdaptiveCardBodyItems header = new AdaptiveCardBodyItems(); header.Weight = "Bolder"; header.Type = "TextBlock"; header.Size = "Medium"; header.Text = cue.Name; header.Wrap = true; card.Body[0].Items.Add(header); AdaptiveCardBodyItems description = new AdaptiveCardBodyItems(); description.Text = cue.Description; description.Type = "TextBlock"; description.Size = "Medium"; description.Wrap = true; card.Body[0].Items.Add(description); foreach (SignalVariable action in cue.Actions) { AdaptiveCardAction myAction = new AdaptiveCardAction(); if (action.Type == VariableType.button) { myAction.Type = "Action.Submit"; myAction.Id = action.Id; myAction.Title = action.Text; myAction.Data = new AdaptiveCardActionData(); myAction.Data.CallbackId = $"{signalId}|{cueId}"; myAction.Data.Action = action.DefaultValue; card.Actions.Add(myAction); } else if (action.Type == VariableType.choice) { myAction.Type = "Action.ShowCard"; myAction.Title = action.Text; myAction.Card = new AdaptiveCard(); myAction.Card.Type = "AdaptiveCard"; AdaptiveCardAction choiceAction = new AdaptiveCardAction(); choiceAction.Type = "Action.Submit"; choiceAction.Title = "Submit"; choiceAction.Data = new AdaptiveCardActionData(); choiceAction.Data.CallbackId = $"{signalId}|{cueId}"; myAction.Card.Actions.Add(choiceAction); AdaptiveCardBody myBody = new AdaptiveCardBody(); myBody.Type = "Container"; myBody.Separator = true; myBody.Items = new System.Collections.Generic.List <AdaptiveCardBodyItems>(); AdaptiveCardBodyItems choiceItems = new AdaptiveCardBodyItems(); choiceItems.Type = "Input.ChoiceSet"; choiceItems.Id = action.Id; foreach (string key in action.Values.Keys) { AdaptiveCardBodyChoice teamsChoice = new AdaptiveCardBodyChoice(); teamsChoice.Title = action.Values[key]; teamsChoice.Value = key; choiceItems.Choices.Add(teamsChoice); } myBody.Items.Add(choiceItems); myAction.Card.Body.Add(myBody); card.Actions.Add(myAction); } } return(card); }