Exemplo n.º 1
0
        public override WebhookResponse Handle(WebhookRequest request)
        {
            var userChallenges = _conversation.conversationState.UserChallengeModel;

            var challenge = userChallenges.Challenges.FirstOrDefault(x => x.ChallengeName == _conversation.conversationState.ChallengeName);

            //try{
            if (challenge != null)
            {
                return(new WebhookResponse {
                    FulfillmentText = $@"Your team has {challenge.teamStats.DailyAverageSteps} daily average steps
                    and rank {challenge.teamStats.OverallRankInThisChallenge}. {challenge.teamStats.topper.contentderGivenName}
                    is leading with {challenge.teamStats.topper.contentderStats.DailyAverageSteps} daily average steps"
                });
            }

            /*           catch{
             *  return new WebhookResponse{
             *      FulfillmentText= $@"Sorry I could not perform the action you requested"
             *
             *  };
             * }*/

            return(new WebhookResponse {
                FulfillmentText = $@"Sorry, that challenge is not available. anything else I can help?"
            });
        }
Exemplo n.º 2
0
        public async Task <IActionResult> AddWebhook([FromBody] List <string> eventTypes)
        {
            var baseUrl        = $"https://{HttpContext.Request.Host}{HttpContext.Request.PathBase}";
            var webhookRequest = new WebhookRequest(baseUrl, "384021d9-c1ac-4ead-b0d2-b8a8430f409b", eventTypes);

            client.DefaultRequestHeaders.Clear();
            try
            {
                client.DefaultRequestHeaders.Add("Authorization", apiOptions.SecretKey);
                HttpResponseMessage result = await client.PostAsJsonAsync($"{apiOptions.GatewayUri}/webhooks", webhookRequest);

                string content = await result.Content.ReadAsStringAsync();

                object response = JsonConvert.DeserializeObject <object>(content);
                if (result.StatusCode == System.Net.HttpStatusCode.UnprocessableEntity)
                {
                    return(UnprocessableEntity(response));
                }
                else if (result.StatusCode == System.Net.HttpStatusCode.Conflict)
                {
                    return(Conflict());
                }
                else
                {
                    return(CreatedAtAction(nameof(AddWebhook), response));
                }
            }
            catch (Exception e)
            {
                return(StatusCode(500, e.Message));
            }
        }
Exemplo n.º 3
0
        public void ProcessIntends(WebhookRequest value, string intentName, ref IAppRequest iRequest, ref string controllerName)
        {
            string entityOrSlot;

            switch (intentName)
            {
            case "companyNews":
                var company = value.QueryResult.Parameters.Fields["companyName"].ToString();
                entityOrSlot = company;
                break;

            case "newsFetch":
                var newsSource = value.QueryResult.Parameters.Fields["newsSource"].ToString();
                entityOrSlot = newsSource;
                break;

            case "stockQuote":
            case "fundamentals":
                var companyName = value.QueryResult.Parameters.Fields["CompanyName"].ToString();
                entityOrSlot = companyName;
                break;

            case "marketSummary":
                entityOrSlot = "";
                break;

            case "recommend":
                entityOrSlot = "";
                break;

            default:
                return;
            }
            ProcessIntends(entityOrSlot, intentName, ref iRequest, ref controllerName);
        }
        protected virtual async Task HandleEvent(DomainEvent domainEvent, CancellationToken cancellationToken)
        {
            var eventId  = domainEvent.GetType().FullName;
            var criteria = new WebhookSearchCriteria()
            {
                IsActive      = true,
                EventIds      = new[] { eventId },
                Skip          = 0,
                Take          = int.MaxValue,
                ResponseGroup = WebhookResponseGroup.Info.ToString()
            };

            var webHookSearchResult = await _webHookSearchService.SearchAsync(criteria);

            if (webHookSearchResult.TotalCount > 0)
            {
                var eventObject = domainEvent.GetEntityWithInterface <IEntity>()
                                  .Select(x => new { objectId = x.Id, objectType = x.GetType().FullName })
                                  .ToArray();

                var request = new WebhookRequest
                {
                    EventId     = eventId,
                    EventObject = JsonConvert.SerializeObject(eventObject),
                    WebHooks    = webHookSearchResult.Results
                };

                _backgroundJobClient.Schedule(() => NotifyAsync(request, cancellationToken), TimeSpan.FromMinutes(1));
            }
        }
Exemplo n.º 5
0
        public override WebhookResponse Handle(WebhookRequest request)
        {
            var contenderName = request.QueryResult.Parameters.Fields["membername"].StringValue;



            var userChallenges = _conversation.conversationState.UserChallengeModel;

            var challenge = userChallenges.Challenges.FirstOrDefault(x => x.ChallengeName == _conversation.conversationState.ChallengeName);

            var contenderStats = challenge.contentders.FirstOrDefault(x => x.contentderGivenName == contenderName);



            //try{
            if (contenderStats != null)
            {
                _conversation.conversationState.ContenderName = contenderName;
                int userSteps;

                Int32.TryParse(challenge.userStats.DailyAverageSteps, out userSteps);

                int contentderSteps;

                Int32.TryParse(contenderStats.contentderStats.DailyAverageSteps, out contentderSteps);

                int difSteps = userSteps - contentderSteps;

                if (difSteps > 0)
                {
                    return(new WebhookResponse {
                        FulfillmentText = $@"Congrats, you are {difSteps} steps ahead of {contenderStats.contentderGivenName}. keep up."
                    });
                }
                if (difSteps == 0)
                {
                    return(new WebhookResponse {
                        FulfillmentText = $@"you and {contenderStats.contentderGivenName} have same numnber of steps. keep up."
                    });
                }

                return(new WebhookResponse {
                    FulfillmentText = $@"{contenderStats.contentderGivenName} is leading by {contentderSteps-userSteps} steps.just try to more active to beat  {contenderStats.contentderGivenName}."
                });
            }

            /*           catch{
             *  return new WebhookResponse{
             *      FulfillmentText= $@"Sorry I could not perform the action you requested"
             *
             *  };
             * }*/
            if (string.IsNullOrEmpty(contenderName))
            {
                contenderName = "This person";
            }
            return(new WebhookResponse {
                FulfillmentText = $@"{contenderName} is not enrolled in this challenge. can I help you with something else?"
            });
        }
Exemplo n.º 6
0
        public override WebhookResponse Handle(WebhookRequest request)
        {
            var challengeName = request.QueryResult.Parameters.Fields["Challengename"].StringValue;

            _conversation.conversationState.ChallengeName = challengeName;
            var userChallenges = _conversation.conversationState.UserChallengeModel;

            var challenge = userChallenges.Challenges.FirstOrDefault(x => x.ChallengeName == challengeName);

            //try{
            if (challenge != null)
            {
                return(new WebhookResponse {
                    FulfillmentText = $@"You have {challenge.userStats.DailyAverageSteps} daily average steps
                    and you are rank {challenge.userStats.RankWithInTeam} in your team and 
                    rank {challenge.userStats.OverallRankInThisChallenge} overall. Would 
                    you like to review your team progress?"
                });
            }
            //}

            /*catch{
             *  return new WebhookResponse{
             *      FulfillmentText= $@"Sorry I could not perform the action you requested"
             *
             *  };
             * }*/

            return(new WebhookResponse {
                FulfillmentText = $@"Sorry I could not find {challengeName} to review"
            });
        }
Exemplo n.º 7
0
        public override WebhookResponse Handle(WebhookRequest request)
        {
            var userChallenges = _conversation.conversationState.UserChallengeModel;

            if (userChallenges.Challenges.Count > 1)
            {
                var sb = new StringBuilder();

                foreach (var challenge in userChallenges.Challenges)
                {
                    sb.AppendLine(challenge.ChallengeName + ". ");
                }

                var s = sb.ToString();

                return(new WebhookResponse {
                    FulfillmentText = $@"Sure, you have {userChallenges.Challenges.Count} active challenges. {s} What would you like to review next?"
                });
            }
            else if (userChallenges.Challenges.Count == 1)
            {
                _conversation.conversationState.ChallengeName = userChallenges.Challenges[0].ChallengeName;
                return(new WebhookResponse {
                    FulfillmentText = $@"you have 1 active challenge, {userChallenges.Challenges[0].ChallengeName}. would you like to review?",
                });
            }

            return(new WebhookResponse {
                FulfillmentText = $@"Sorry I could not find any active challenges to review"
            });
        }
Exemplo n.º 8
0
        public async Task <WebhookResponse> HandleAsync(WebhookRequest req)
        {
            var intentName = req.QueryResult.Intent.DisplayName;
            var handler    = FindHandler(intentName);

            if (handler == null)
            {
                return(new WebhookResponse
                {
                    FulfillmentText = $"Sorry, no handler found for intent: {intentName}"
                });
            }

            try
            {
                return(handler.Handle(req) ??

                       await handler.HandleAsync(req) ??

                       new WebhookResponse

                {
                    FulfillmentText = "Error. Handler did not return a valid response."
                });
            }
            catch (Exception e) when(req.QueryResult.Intent.DisplayName != "exception.throw")
            {
                var msg = (e as GoogleApiException)?.Error.Message ?? e.Message;

                return(new WebhookResponse
                {
                    FulfillmentText = $"Sorry, there's a problem: {msg}"
                });
            }
        }
        internal async Task Send(WebhookRequest message)
        {
            var jsonString = JsonConvert.SerializeObject(message);
            var content    = new StringContent(jsonString, Encoding.UTF8);

            content.Headers.ContentType = new MediaTypeHeaderValue("application/json")
            {
                CharSet = "utf-8"
            };
            var response = await httpClient.PostAsync(webhookUrl, content);

            if (response.StatusCode != System.Net.HttpStatusCode.OK)
            {
                throw new ChatbotException((int)response.StatusCode, $"Response StatusCode is '{response.StatusCode}'.");
            }

            var responseString = await response.Content.ReadAsStringAsync();

            var result = JsonConvert.DeserializeObject <WebhookResponse>(responseString);

            if (!result.IsSuccess)
            {
                throw new ChatbotException(result.ErrorCode, result.ErrorMessage);
            }
        }
        public bool IsValid(WebhookRequest request)
        {
            var hmac               = new HMACSHA256(Encoding.ASCII.GetBytes(_apiKey));
            var signature          = hmac.ComputeHash(Encoding.ASCII.GetBytes(request.Timestamp + request.Token));
            var generatedSignature = BitConverter.ToString(signature).Replace("-", "");

            return(generatedSignature.Equals(request.Signature, StringComparison.OrdinalIgnoreCase));
        }
Exemplo n.º 11
0
        public static async Task <string> AddComment(WebhookRequest request)
        {
            var    requestParameters = request.QueryResult.Parameters;
            string issueId           = requestParameters.Fields["issue-id"].StringValue;
            string newComment        = JiraHelper.ExtractCommentFromParams(requestParameters);

            return(await JiraAPIContext.addComment(issueId, newComment));
        }
Exemplo n.º 12
0
        public dynamic ProcessDialogflowIntent(WebhookRequest dialogflowRequest)
        {
            var response = _dialogFlowService.ProcessDialogFlowRequest(dialogflowRequest);

            return(new ContentResult {
                Content = response, ContentType = "application/json"
            });
        }
Exemplo n.º 13
0
        private static string GetUserId(WebhookRequest request)
        {
            string userId = null;
            Struct intentRequestPayload = request.OriginalDetectIntentRequest?.Payload;



            return(userId);
        }
Exemplo n.º 14
0
        /// <summary>
        /// Handle the Dialogflow intent.
        /// </summary>
        /// <param name="req">Webhook request</param>
        /// <returns>Webhook response</returns>
        public override async Task <WebhookResponse> HandleAsync(WebhookRequest req)
        {
            // Create the client and ask for safe-search info from Vision API ML service.
            var visionClient = ImageAnnotatorClient.Create();
            var safe         = await visionClient.DetectSafeSearchAsync(Image.FromUri(_conversation.State.FocusedImage.Url));

            // Format safe-search result into an English sentence
            (string text, int likelyhood) Likely(string s, Likelihood l)
            {
                switch (l)
                {
                case Likelihood.Likely:
                case Likelihood.VeryLikely: return(s, 2);

                case Likelihood.Possible:
                case Likelihood.Unlikely: return(s, 1);

                default: return(s, 0);
                }
            }

            var result = new[]
            {
                Likely("has medical content", safe.Medical),
                Likely("is a spoof", safe.Spoof),
                Likely("is violent", safe.Violence),
                Likely("has racy content", safe.Racy),
                Likely("has adult content", safe.Adult)
            };

            var likely   = result.Where(x => x.likelyhood == 2).Select(x => x.text).ToList();
            var possible = result.Where(x => x.likelyhood == 1).Select(x => x.text).ToList();

            if (likely.Count == 0 && possible.Count == 0)
            {
                return(new WebhookResponse {
                    FulfillmentText = "Let's see. This picture is fine."
                });
            }

            string reply = "Let's see. ";

            if (likely.Count > 0)
            {
                reply += CombineList(likely, "It's likely this picture", "") + ".";
            }

            if (possible.Count > 0)
            {
                reply += CombineList(possible, "It's possible this picture", "") + ".";
            }

            return(new WebhookResponse {
                FulfillmentText = reply
            });
        }
Exemplo n.º 15
0
        public static async Task <string> ChangeStatusOfIssue(WebhookRequest request)
        {
            var    requestParameters = request.QueryResult.Parameters;
            string issueId           = requestParameters.Fields["issue-id"].StringValue;
            string newStatusName     = requestParameters.Fields["status"].StringValue.ToLower();
            string newStatusId       = JiraHelper.StatusNametoCode(newStatusName);
            var    responseString    = await JiraAPIContext.changeIssueStatus(issueId, newStatusId);

            return(JiraHelper.GenerateResponseForChangingStatus(responseString, issueId, newStatusName));
        }
        public void ShouldParse()
        {
            var json = GetContents();

            var request = new WebhookRequest(json);

            request.ValidationCode.Should().Be("D9192B09-82EA-44D6-8580-B4E4633F1D2E");
            request.ValidationUrl.Should().Be("https://rp-uksouth.eventgrid.azure.net:553/eventsubscriptions/webhook/validate?id=D9192B09-82EA-44D6-8580-B4E4633F1D2E&t=2021-07-18T19:19:01.2177564Z&apiVersion=2020-10-15-preview&token=H2S4f%2bp5QVubOOBf2YoeuI56iKkiOLedXxTlZEkZOkg%3d");
            request.EventType.Should().Be("Microsoft.EventGrid.SubscriptionValidationEvent");
        }
Exemplo n.º 17
0
        public override async Task <WebhookResponse> HandleAsync(WebhookRequest request)
        {
            var challengeName = request.QueryResult.Parameters.Fields["Challengename"].StringValue;
            //call go365 challenge service to add challengename for a given memeberid
            await Task.Delay(100);

            return(new WebhookResponse {
                FulfillmentText = $"You have been successfully added to {challengeName} challenge."
            });
        }
Exemplo n.º 18
0
        public JsonResult Post([FromBody] WebhookRequest value)
        {
            var response = new WebhookResponse
            {
                FulfillmentText = "Estou consultando uma informação no banco de dados. A hora do servidor é -> " + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss.fff"),
                Source          = "sample fullfillment api",
            };

            return(new JsonResult(response));
        }
        public override WebhookResponse Handle(WebhookRequest request)
        {
            var contenderName  = _conversation.conversationState.ContenderName;
            var userChallenges = _conversation.conversationState.UserChallengeModel;

            var challenge = userChallenges.Challenges.FirstOrDefault(x => x.ChallengeName == _conversation.conversationState.ChallengeName);

            var contenderStats = challenge.contentders.FirstOrDefault(x => x.contentderGivenName == contenderName);



            //try{
            if (contenderStats != null)
            {
                _conversation.conversationState.ContenderName = contenderName;
                int userSteps;

                Int32.TryParse(challenge.userStats.DailyAverageSteps, out userSteps);

                int contentderSteps;

                Int32.TryParse(contenderStats.contentderStats.DailyAverageSteps, out contentderSteps);

                int difSteps = userSteps - contentderSteps;

                if (difSteps > 0)
                {
                    return(new WebhookResponse {
                        FulfillmentText = $@"Congrats, you are already {difSteps} steps ahead of {contenderStats.contentderGivenName}. keep up."
                    });
                }
                if (difSteps == 0)
                {
                    return(new WebhookResponse {
                        FulfillmentText = $@"you and {contenderStats.contentderGivenName} have same numnber of steps. keep up and try to be more active"
                    });
                }

                return(new WebhookResponse {
                    FulfillmentText = $@"{contenderStats.contentderGivenName} is leading by {contentderSteps-userSteps} steps.just try to more active to beat  {contenderStats.contentderGivenName}.
                    you may want to register for the Humana walkathon at Tom Saywer park in Louisville on june 8th "
                });
            }

            /*           catch{
             *  return new WebhookResponse{
             *      FulfillmentText= $@"Sorry I could not perform the action you requested"
             *
             *  };
             * }*/

            return(new WebhookResponse {
                FulfillmentText = $@"{contenderName} is not enrolled in this challenge. can I help you with something else?"
            });
        }
        public async Task Created_Returns_BadRequest_For_Null_Parameter()
        {
            //Arrange
            WebhookRequest request = null;

            //Act
            var result = await _testSubject.Created(request);

            //Assert
            result.Should().BeOfType <BadRequestResult>();
        }
        /// <summary>
        /// Handle the intent.
        /// </summary>
        /// <param name="req">Webhook request</param>
        /// <returns>Webhook response</returns>
        public override async Task <WebhookResponse> HandleAsync(WebhookRequest req)
        {
            var platform = await Platform.InstanceAsync();

            (var spokenDescription, string[] textDescription) = GetDetailedDescription(platform);

            DialogflowApp.Show(string.Join("", textDescription.Select(x => $"<div>{x}</div>")));
            return(new WebhookResponse {
                FulfillmentText = spokenDescription
            });
        }
        private async Task <WebhookResponse> RegisterWebhook()
        {
            var webhookRequest = new WebhookRequest()
            {
                Url         = "https://checkout.com/webhooks",
                ContentType = WebhookContentType.Json,
                EventTypes  = _paymentEventTypes
            };

            return(await PreviousApi.WebhooksClient().RegisterWebhook(webhookRequest));
        }
Exemplo n.º 23
0
        public string GetNutrientName(WebhookRequest request)
        {
            try
            {
            }
            catch
            {
            }

            return("");
        }
Exemplo n.º 24
0
        public override async Task <WebhookResponse> HandleAsync(WebhookRequest req)
        {
            var searchTerm = req.QueryResult.Parameters.Fields["searchterm"].StringValue;

            DialogflowApp.Show($"<div>Searching for pictures of: {searchTerm}</div><div>Please wait...</div>");

            var searchService = CreateSearchClient();
            var result        = await searchService.Images.SearchAsync(query : searchTerm);

            // Store images in state
            var images = result.Value
                         .Select(x => new ConvState.Image {
                Title = x.Name, Url = x.ThumbnailUrl
            })
                         .ToList();

            conversation.State.ImageList = images;

            var imageList = images.Select(x => $"<li><img src=\"{x.Url}\" alt=\"{WebUtility.HtmlEncode(x.Title)}\" style=\"width:200px\" /></li>");

            DialogflowApp.Show($"<ol>{string.Join("", imageList)}</ol>");


            // var response = new WebhookResponse();
            var message = new Intent.Types.Message();

            message.CarouselSelect = new Intent.Types.Message.Types.CarouselSelect();
            foreach (var image in images)
            {
                var item = new Intent.Types.Message.Types.CarouselSelect.Types.Item();
                item.Title = image.Title;
                var current = new Intent.Types.Message.Types.Image();
                current.ImageUri = image.Url;
                item.Image       = current;

                message.CarouselSelect.Items.Add(item);
            }
            // response.FulfillmentMessages.Add(message);
            // response.FulfillmentText = $"Found some pictures of: {searchTerm}. Now, select a picture.";

            // return response;

            return(new WebhookResponse
            {
                FulfillmentMessages = { message },
                FulfillmentText = $"Found some pictures of: {searchTerm}. Now, select a picture.",
                Source = ""
            });
            // return new WebhookResponse
            // {
            //     FulfillmentText = $"Found some pictures of: {searchTerm}. Now, select a picture."
            // };
        }
Exemplo n.º 25
0
        public void DeserializeDemoJson()
        {
            WebhookRequest WebhookRequest = JsonConvert.DeserializeObject <WebhookRequest>(File.ReadAllText("Resources/Json/WebhookRequestSimple.json"));

            Assert.NotNull(WebhookRequest);

            WebhookResponse WebhookResponse = JsonConvert.DeserializeObject <WebhookResponse>(File.ReadAllText("Resources/Json/WebhookResponseSimple.json"));

            Assert.NotNull(WebhookResponse);

            Assert.AreEqual(WebhookRequest.responseId, "ea3d77e8-ae27-41a4-9e1d-174bd461b68c");
        }
Exemplo n.º 26
0
        public override WebhookResponse Handle(WebhookRequest req)
        {
            var errorMessage = LocationSearchIntent.ExtractAndValidateParameters(req, out string location);

            if (errorMessage != null)
            {
                return(new WebhookResponse
                {
                    FulfillmentText = errorMessage
                });
            }

            errorMessage = DateSearchIntent.ExtractAndValidateParameters(req, out DateTime? startDate, out DateTime? endDate);
            if (errorMessage != null)
            {
                return(new WebhookResponse
                {
                    FulfillmentText = errorMessage
                });
            }

            _conversation.State.Location  = location;
            _conversation.State.StartDate = startDate.Value;
            _conversation.State.EndDate   = endDate;

            var storage = new Struct
            {
                Fields = { ["data"] = Value.ForStruct(new Struct {
                        Fields =                                 { ["lastSearchedLocation"]= Value.ForString(location) }
                    }) }
            }.ToString();

            string fulfillmentText = $"<speak>There's lots going on in {_conversation.State.Location} on <say-as interpret-as=\"date\" format=\"dm\" detail=\"1\">{_conversation.State.StartDate.Day}-{_conversation.State.StartDate.Month}</say-as>. Where else are you interested in going?</speak>";

            if (endDate.HasValue)
            {
                fulfillmentText = $"<speak>There's lots going on in {_conversation.State.Location} between <say-as interpret-as=\"date\" format=\"dm\" detail=\"1\">{_conversation.State.StartDate.Day}-{_conversation.State.StartDate.Month}</say-as> and <say-as interpret-as=\"date\" format=\"dm\" detail=\"1\">{_conversation.State.EndDate.Value.Day}-{_conversation.State.EndDate.Value.Month}</say-as>. Where else are you interested in going?</speak>";
            }

            return(new WebhookResponse
            {
                Payload = new Struct
                {
                    Fields =
                    {
                        ["google"] = Value.ForStruct(new Struct {
                            Fields =                            { ["userStorage"]= Value.ForString(storage) }
                        })
                    }
                },
                FulfillmentText = fulfillmentText
            });
        }
Exemplo n.º 27
0
        public static WebhookResponse BuildBaseResponse(this WebhookRequest webhookRequest)
        {
            var webhookResponse = new WebhookResponse();

            var dataContext = webhookRequest.QueryResult.OutputContexts.GetContext($"{webhookRequest.Session}/contexts/{DataKey}");

            if (dataContext != null)
            {
                webhookResponse.OutputContexts.Add(dataContext);
            }

            return(webhookResponse);
        }
        public async Task Created_Sends_Mediator_Command_When_Request_Is_Valid_And_Returns_200()
        {
            //Arrange
            WebhookRequest request = new WebhookRequest();

            //Act
            var result = await _testSubject.Created(request);

            //Assert
            await _mediator.Received().Send(Arg.Is <InviteeCreatedCommand>(x => x.RequestData == request));

            result.Should().BeOfType <OkResult>();
        }
Exemplo n.º 29
0
        private async Task <IActionResult> WebhookInnerAsync(WebhookRequest request)
        {
            // check request payload parsed correctly
            if (request == null)
            {
                return(BadRequest("Wrong request format"));
            }

            // check authentication header
            if (!Request.Headers.TryGetValue(HeaderNames.Authorization, out var authHeader))
            {
                return(Unauthorized("Authentication header is not provided with the request"));
            }

            // validate authentication api key
            var requestApiKey = authHeader.ToString().Replace("Bearer ", "");

            if (!_freshdeskService.ValidateWebhookApiKey(requestApiKey))
            {
                return(Unauthorized("Wrong authentication key"));
            }

            try
            {
                await _freshdeskService.StoreWebhookPayloadAsync(Request.Body);
            }
            catch
            {
                // ignore, because it's for debug reasons only
            }

            try
            {
                var webhook = _mapper.Map <Webhook>(request);
                await _freshdeskService.OnWebhookAsync(webhook);
            }
            catch (NotFoundException ex)
            {
                return(NotFound(ex.Message));
            }
            catch (ArgumentException ex)
            {
                return(BadRequest(ex));
            }
            catch (Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, ex.Message));
            }

            return(Ok());
        }
Exemplo n.º 30
0
        public async Task <IActionResult> Webhook([FromBody] WebhookRequest request)
        {
            var result = await WebhookInnerAsync(request);

            if (!(result is OkResult))
            {
                await _freshdeskService.StoreWebhookPayloadAsync(Request.Body, result);
            }

            // must always return Ok to caller, or they create ticket and ask you to investigate, etc,
            // but they don't give you any useful troubleshooting info. It's better just to say
            // everything is ok, and to log errors internally
            return(Ok());
        }