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); }
public async Task ProcessAsync(HttpRequest httpRequest, HttpResponse httpResponse, IBot bot, CancellationToken cancellationToken = default(CancellationToken)) { if (httpRequest == null) { throw new ArgumentNullException(nameof(httpRequest)); } if (httpResponse == null) { throw new ArgumentNullException(nameof(httpResponse)); } if (bot == null) { throw new ArgumentNullException(nameof(bot)); } var projectId = AuthenticationHelpers.GetProjectIdFromRequest(httpRequest); ActionProjectId = projectId; GoogleRequestBody actionRequest; Payload actionPayload; var memoryStream = new MemoryStream(); httpRequest.Body.CopyTo(memoryStream); 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 { actionPayload = JsonConvert.DeserializeObject <Payload>(skillRequestContent); } } var uniqueRequestId = _httpContextAccessor.HttpContext.Items["GoogleUniqueRequestId"]?.ToString(); var googleResponse = await ProcessActivity( actionPayload, bot.OnTurnAsync, uniqueRequestId); if (googleResponse == null) { throw new ArgumentNullException(nameof(googleResponse)); } httpResponse.ContentType = "application/json;charset=utf-8"; httpResponse.StatusCode = (int)HttpStatusCode.OK; using (var writer = new StreamWriter(httpResponse.Body)) { using (var jsonWriter = new JsonTextWriter(writer)) { GoogleBotMessageSerializer.Serialize(jsonWriter, googleResponse); } } }