protected async Task <object> ProcessMessageRequestAsync(HttpRequest request, GoogleAdapter GoogleAdapter, BotCallbackHandler botCallbackHandler)
        {
            GoogleRequestBody actionRequest;
            Payload           actionPayload;

            var memoryStream = new MemoryStream();

            request.Body.CopyTo(memoryStream);
            memoryStream.Position = 0;

            var projectId = AuthenticationHelpers.GetProjectIdFromRequest(request);

            GoogleAdapter.ActionProjectId = projectId;

            using (var bodyReader = new StreamReader(memoryStream, Encoding.UTF8))
            {
                var skillRequestContent = bodyReader.ReadToEnd();
                try
                {
                    actionRequest = JsonConvert.DeserializeObject <GoogleRequestBody>(skillRequestContent);
                    actionPayload = actionRequest.OriginalDetectIntentRequest.Payload;
                }
                catch
                {
                    actionPayload = JsonConvert.DeserializeObject <Payload>(skillRequestContent);
                }
            }

            var responseBody = await GoogleAdapter.ProcessActivity(
                actionPayload,
                botCallbackHandler);

            return(responseBody);
        }
Beispiel #2
0
        public async Task <HttpResponseMessage> ProcessMessageRequestAsync(HttpRequestMessage request, GoogleAdapter googleAdapter, Func <ITurnContext, Task> botCallbackHandler, CancellationToken cancellationToken)
        {
            GoogleRequestBody skillRequest;
            Payload           actionPayload;

            byte[] requestByteArray;

            try
            {
                requestByteArray = await request.Content.ReadAsByteArrayAsync();

                skillRequest = await request.Content.ReadAsAsync <GoogleRequestBody>(googleMessageMediaTypeFormatters, cancellationToken);

                actionPayload = skillRequest.OriginalDetectIntentRequest.Payload;
            }
            catch (Exception)
            {
                try
                {
                    actionPayload = await request.Content.ReadAsAsync <Payload>(googleMessageMediaTypeFormatters, cancellationToken);
                }
                catch (Exception e)
                {
                    throw new JsonSerializationException("Invalid JSON received");
                }
            }

            var GoogleResponseBody = await googleAdapter.ProcessActivity(
                actionPayload,
                _googleOptions,
                null);

            if (GoogleResponseBody == null)
            {
                return(null);
            }

            var GoogleResponseBodyJson = JsonConvert.SerializeObject(GoogleResponseBody, Formatting.None,
                                                                     new JsonSerializerSettings
            {
                NullValueHandling = NullValueHandling.Ignore,
                ContractResolver  = new DefaultContractResolver {
                    NamingStrategy = new CamelCaseNamingStrategy()
                }
            });

            var response = request.CreateResponse(HttpStatusCode.OK);

            response.Content = new StringContent(GoogleResponseBodyJson);
            response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

            return(response);
        }
        protected async Task <GoogleResponseBody> ProcessMessageRequestAsync(HttpRequest request, GoogleAdapter googleAdapter, BotCallbackHandler botCallbackHandler)
        {
            GoogleRequestBody actionRequest;
            Payload           actionPayload;

            var memoryStream = new MemoryStream();

            request.Body.CopyTo(memoryStream);
            var requestBytes = memoryStream.ToArray();

            memoryStream.Position = 0;

            using (var bodyReader = new StreamReader(memoryStream, Encoding.UTF8))
            {
                var skillRequestContent = bodyReader.ReadToEnd();
                try
                {
                    actionRequest = JsonConvert.DeserializeObject <GoogleRequestBody>(skillRequestContent);
                    actionPayload = actionRequest.OriginalDetectIntentRequest.Payload;
                }
                catch (Exception ex)
                {
                    try
                    {
                        actionPayload = JsonConvert.DeserializeObject <Payload>(skillRequestContent);
                    }
                    catch (Exception e)
                    {
                        throw;
                    }
                }
            }

            var GoogleResponseBody = await googleAdapter.ProcessActivity(
                actionPayload,
                _googleOptions,
                botCallbackHandler);

            return(GoogleResponseBody);
        }