/// <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");
        }
示例#2
0
        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());
        }