public async Task <IActionResult> Post([FromForm] SlackActionPayload request) { if (request == null) { return(BadRequest()); } var actionRequest = JsonConvert.DeserializeObject <SlackActionRequest>(request.Payload); var requestApproved = actionRequest.Actions[0].Value == "approved"; var orginalTextMessage = actionRequest.OriginalMessage.Text; var key = actionRequest.Actions[0].Name; // record decision of CEO in database await _firebaseService.RecordPurchaseRequestDecisionAsync(key, requestApproved); // read data using key from database (or response) var purchaseRequest = await _firebaseService.ReadPurchaseRequestAsync(key); var regex = new Regex(@"@(.+)>.+\*(.+)\*"); var matches = regex.Matches(orginalTextMessage); var userId = purchaseRequest != null ? purchaseRequest.UserId: matches[0].Groups[2].ToString(); var item = purchaseRequest != null ? purchaseRequest.Item: matches[0].Groups[1].ToString(); // send the orginial purchase requester feedback on the decision await _slackService.SendDirectMessage( userId, $"Hi! Your purchase request for *{item}* has been *{(requestApproved ? "approved" : "denied")}*." ); // sending the CEO feedback on what they decided var response = new SlackActionResponse { Text = orginalTextMessage, Attachments = new List <SlackAttachment> { new SlackAttachment { Text = requestApproved ? "You *approved* this purchase request" : "You *denied* this purchase request" } } }; return(Ok(response)); }
private static SlackMessage handleTaggedPerson(ICollector <string> taggingQueue, SlackActionResponse requestMessage, string UserId) { taggingQueue.Add(new TaggingMessage { FaceId = requestMessage.CallbackId, UserId = UserId, TaggedByName = requestMessage.User.Name, TaggedByUserId = requestMessage.User.Id, ResponseUrl = requestMessage.ResponseUrl, }.ToJson()); return(createTaggedPersonMessage( requestMessage.OriginalMessage, requestMessage.User.Name)); }
private static SlackMessage handleWrongIdentifyPerson(ICollector <string> undoIdentifyQueue, string previouslyMarked, SlackActionResponse requestMessage) { undoIdentifyQueue.Add(new UndoIdentifyMessage { FaceId = requestMessage.CallbackId, RequestedByName = requestMessage.User.Name, ResponseUrl = requestMessage.ResponseUrl, }.ToJson()); return(createTaggingPersonMessage( requestMessage.CallbackId, requestMessage.User.Name, previouslyMarked)); }