public dynamic RouteRequest(EchoRequest echoRequest) { //TODO: handling of different intent types string url; using (var dbo = new EchoEntities()) { var intent = dbo.Intents.Include("Service").First(x => x.Name == ((IntentRequest)echoRequest.request).intent.name && x.ApplicationId == echoRequest.session.application.applicationId && x.Active); url = string.Format(intent.Service.BaseUrl, intent.Service.Port, intent.Name); } var client = new HttpClient(); HttpResponseMessage response = new HttpResponseMessage(); switch (echoRequest.request.type) { case RequestType.IntentRequest: var jobject = JsonConvert.SerializeObject(((IntentRequest)echoRequest.request).intent.slots); var content = new StringContent(jobject, Encoding.UTF8, "application/json"); response = client.PostAsync(url, content).Result; break; case RequestType.LaunchRequest: response = client.GetAsync(url).Result; break; case RequestType.SessionEndRequest: response = client.GetAsync(string.Format("{0}/{1}", url, ((SessionEndRequest)echoRequest.request).reason)).Result; break; } //TODO: success/fail handling and create a standard response object to map to EchoResponseObject var echoReponse = JsonConvert.DeserializeObject(response.Content.ReadAsStringAsync().Result) as EchoResponse; if (echoReponse != null) return echoReponse; return response.Content.ReadAsStringAsync().Result; }
public EchoResponse Post(EchoRequest echoRequest) { try { var router = new RequestRouter(); var response = router.RouteRequest(echoRequest); if (response is EchoResponse) return response; else { var defaultResponse = new EchoResponse(); defaultResponse.version = "1.0.1"; defaultResponse.response = new EchoResponse.Response(); defaultResponse.response.shouldEndSession = true; defaultResponse.response.outputSpeech = new EchoResponse.Response.OutputSpeech(); defaultResponse.response.outputSpeech.type = OutputSpeechType.PlainText; defaultResponse.response.outputSpeech.text = response; return defaultResponse; } } catch (Exception ex) { var defaultResponse = new EchoResponse(); defaultResponse.version = "1.0.1"; defaultResponse.response = new EchoResponse.Response(); defaultResponse.response.shouldEndSession = true; defaultResponse.response.outputSpeech = new EchoResponse.Response.OutputSpeech(); defaultResponse.response.outputSpeech.type = OutputSpeechType.PlainText; defaultResponse.response.outputSpeech.text = string.Format("ECHO Exception! {0} - {1}", ex.Message, ex.StackTrace); return defaultResponse; } }