private async Task <CaseDetails> GetCustomerContactAsync()
        {
            CaseDetails caseDetails = new CaseDetails();
            HttpClient  cxmClient   = new HttpClient();

            cxmClient.BaseAddress = new Uri(cxmEndPoint);
            String             requestParameters = "key=" + cxmAPIKey;
            HttpRequestMessage request           = new HttpRequestMessage(HttpMethod.Get, "/api/service-api/norbert/case/" + caseReference + "?" + requestParameters);

            try
            {
                HttpResponseMessage response = cxmClient.SendAsync(request).Result;
                if (response.IsSuccessStatusCode)
                {
                    HttpContent responseContent = response.Content;
                    String      responseString  = responseContent.ReadAsStringAsync().Result;
                    JObject     caseSearch      = JObject.Parse(responseString);
                    caseDetails.customerContact = (String)caseSearch.SelectToken("values.enquiry_details");
                }
                else
                {
                    await SendFailureAsync("Getting case details for " + caseReference, response.StatusCode.ToString());

                    Console.WriteLine("ERROR : GetStaffResponseAsync : " + request.ToString());
                    Console.WriteLine("ERROR : GetStaffResponseAsync : " + response.StatusCode.ToString());
                }
            }
            catch (Exception error)
            {
                await SendFailureAsync("Getting case details for " + caseReference, error.Message);

                Console.WriteLine("ERROR : GetStaffResponseAsync : " + error.StackTrace);
            }
            return(caseDetails);
        }
        public async Task FunctionHandler(object input, ILambdaContext context)
        {
            if (await GetSecrets())
            {
                JObject o = JObject.Parse(input.ToString());
                caseReference = (string)o.SelectToken("CaseReference");
                taskToken     = (string)o.SelectToken("TaskToken");
                Boolean liveInstance = false;
                try
                {
                    if (context.InvokedFunctionArn.ToLower().Contains("prod"))
                    {
                        Console.WriteLine("Prod version");
                        liveInstance = true;
                        tableName    = "MailBotCasesLive";
                    }
                }
                catch (Exception)
                {
                }

                if (liveInstance)
                {
                    cxmEndPoint = secrets.cxmEndPointLive;
                    cxmAPIKey   = secrets.cxmAPIKeyLive;
                    caseDetails = await GetCustomerContactAsync();

                    Sentiment sentimentLive = await GetSentimentFromAWSAsync(caseDetails.customerContact);

                    if (await UpdateCaseDetailsAsync(sentimentLive))
                    {
                        await SendSuccessAsync();
                    }
                }
                else
                {
                    cxmEndPoint = secrets.cxmEndPointTest;
                    cxmAPIKey   = secrets.cxmAPIKeyTest;
                    caseDetails = await GetCustomerContactAsync();

                    Sentiment sentimentTest = await GetSentimentFromAWSAsync(caseDetails.customerContact);

                    if (await UpdateCaseDetailsAsync(sentimentTest))
                    {
                        await SendSuccessAsync();
                    }
                }
            }
        }