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 void SetParameter(string key, object value) { if (Parameters.ContainsKey(key)) { JObject jObj = JObject.Parse(JsonTools.Serialize(Template)); foreach (TemplateVariableType variable in Parameters[key]) { JToken newToken = JToken.FromObject(value); JToken token = jObj.SelectToken(variable.Path); if (token == null) { continue; } if (!String.IsNullOrWhiteSpace(variable.Replace)) { string source = token.ToObject <string>(); Regex r = new Regex(variable.Replace); string newValue = r.Replace(source, value.ToString()); newToken = JToken.FromObject(newValue); } token.Replace(newToken); } Template = jObj.ToObject <Dictionary <string, object> >(); } }
public void ProcessCue(CueRequest req) { Resolver resolver; ResolverRequest request; lock (__lockObj) { SignalDbRecord signalDbRecord = DbEngine.Get <SignalDbRecord>(req.Id); Cue cue = req.Cue; ActionType action = new ActionType { CueId = cue.CueId, Status = StatusType.New, IsValid = true, Time = DateTime.UtcNow }; action.Variables = cue.Variables; if (signalDbRecord.Actions == null) { signalDbRecord.Actions = new System.Collections.Generic.Dictionary <string, ActionType>(); } resolver = signalDbRecord.Signal.Cues[cue.CueId].Resolver; request = new ResolverRequest(); try { ValidateCue(signalDbRecord, cue); request.Id = cue.Id; request.ActionId = req.ActionId; request.CueId = cue.CueId; signalDbRecord.Status = StatusType.Received; } catch (Exception e) { // TODO : Check for "Terminal" Status As Well. if (signalDbRecord.Status != StatusType.Received) { signalDbRecord.Status = StatusType.Invalid; } action.Status = StatusType.Error; action.StatusMessage = e.Message; } signalDbRecord.Actions.Add(req.ActionId, action); signalDbRecord = DbEngine.Update <SignalDbRecord>(signalDbRecord, true); request.Signal = signalDbRecord.Signal; request.Actions = signalDbRecord.Actions; request.Trace = signalDbRecord.Trace; } Logger.Info($"Sending To Resolver [{resolver.Name}]. {JsonTools.Serialize(request)}"); SendToResolver(resolver, request); }
public void SendMessage(AzureBotServiceMessage message) { Dictionary <string, string> headers = new Dictionary <string, string> { { "Authorization", $"Bearer {BearerToken}" } }; String body = JsonTools.Serialize(message); String url = $"{BaseUrl}/{ConversationId}/activities"; WebResponse response = Utils.PostMessage(url, body, headers); }
public static MessageCard Publish(ChannelRequest request) { MessageCard message = CreateMessageCardMessage(request); string json = JsonTools.Serialize(message, true); Signal signal = request.Signal; String webHook = request?.Channel?.Target; if (webHook != null) { SendMessage(webHook, message); return(message); } else { throw new Exception("No Target Information Was Provided."); } }
public static void SendMessage(string webHook, SlackMessage message) { string body = JsonTools.Serialize(message); Utils.PostMessage(webHook, body); }
public static MessageCardAction CreateMessageCardAction(ChannelRequest request, string cueId, SignalVariable action) { string actionUrl = request.Channel?.Config?["actionUrl"]?.ToString(); MessageCardAction potnetialAction = new MessageCardAction(); potnetialAction.Name = action.Text; Dictionary <string, object> actionBody = new Dictionary <string, object>(); actionBody.Add("signalId", request.Id); actionBody.Add("cueId", cueId); if (action.Type == VariableType.choice) { potnetialAction.Type = MessageCardActionType.ActionCard; potnetialAction.Inputs = new List <MessageCardInput>(); potnetialAction.Actions = new List <MessageCardAction>(); MessageCardInput input = new MessageCardInput(); input.Type = MessageCardInputType.MultichoiceInput; input.Id = action.Id; input.Title = action.Text; input.Value = action.DefaultValue; input.Style = MessageCardInputStyle.expanded; // Expanded = Radio Buttons. Remove for Drop Down" input.IsMultiSelect = false; input.Choices = new List <MessageCardInputChoice>(); foreach (string key in action.Values.Keys) { MessageCardInputChoice messageChoice = new MessageCardInputChoice() { Name = action.Values[key], Value = key }; input.Choices.Add(messageChoice); } potnetialAction.Inputs.Add(input); actionBody.Add(action.Id, "{{" + action.Id + ".value}}"); MessageCardAction submit = new MessageCardAction() { Type = MessageCardActionType.HttpPOST, Name = "Submit", Target = actionUrl, Body = JsonTools.Serialize(actionBody) }; potnetialAction.Actions.Add(submit); } else if (action.Type == VariableType.button) { actionBody.Add(action.Id, action.DefaultValue); potnetialAction.Type = MessageCardActionType.HttpPOST; potnetialAction.Target = actionUrl; potnetialAction.Body = JsonTools.Serialize(actionBody); } else { // Unknown or Unsupported Action Type. Ignore It. potnetialAction = null; } return(potnetialAction); }