/// <summary> /// Parse directly from token /// </summary> /// <param name="token"></param> /// <returns></returns> public IWebhookResponse ParseFromToken(string token) { var payload = this.ValidateToken(token); JObject payloadObj = JObject.Parse(payload); if (payloadObj.ContainsKey("id") && payloadObj.ContainsKey("msisdn")) { // Delivery status webhook if (payloadObj.ContainsKey("time") && payloadObj.ContainsKey("status")) { return(WebhookDeliveryStatus.ParseResponse(payload)); } // Delivery status webhook if (payloadObj.ContainsKey("receiver") && payloadObj.ContainsKey("message") && payloadObj.ContainsKey("senttime") && payloadObj.ContainsKey("webhook_label")) { return(WebhookIncomingMessage.ParseResponse(payload)); } } throw new WebhookException("Failed to parse payload from webhook"); }
public IActionResult Catch() { var webhookHandler = new GatewayAPIWebhookHandler("secret"); var webhook = webhookHandler.ParseFromRequest(Request); if (webhook is WebhookDeliveryStatus) { WebhookDeliveryStatus test = (WebhookDeliveryStatus)webhook; Console.WriteLine(test.status); } else if (webhook is WebhookIncomingMessage) { WebhookIncomingMessage test = (WebhookIncomingMessage)webhook; Console.WriteLine(test.message); } return(Ok()); }