private static async Task <LUISModel> GetEntityFromLUIS(string Query) { Query = Uri.EscapeDataString(Query); LUISModel Data = new LUISModel(); using (HttpClient client = new HttpClient()) { string RequestURI = luisEndpoint + "&q=" + Query; HttpResponseMessage msg = await client.GetAsync(RequestURI); if (msg.IsSuccessStatusCode) { var JsonDataResponse = await msg.Content.ReadAsStringAsync(); Data = JsonConvert.DeserializeObject <LUISModel>(JsonDataResponse); } } return(Data); }
public async Task MessageReceivedAsync(IDialogContext context, IAwaitable <Message> argument) { var message = await argument; string resp = ""; LUISModel model = await GetEntityFromLUIS(message.Text); if (model.intents.Count() > 0) { switch (model.intents[0].intent) { case intent_hi: await context.PostAsync("Hallo! Versuchen Sie: \"Wann kommt mein Paket?\"\n\noder: \"Liefere mein Paket zur nähesten Abholstation\""); context.Wait(MessageReceivedAsync); break; case intent_deliveryState: var start = "Graz"; var dest = "Am Europlatz 3, Vienna"; Message msg = new Message(); string query = "http://dev.virtualearth.net/REST/v1/Imagery/Map/Road/Routes?wp.0=" + start + ";64;1&wp.1=" + dest + ";66;2&key=AgArU18mPZIHjbt9F0l5_StVXlcXITxAbGRYl07EEUzOLiXIRYLBzWAiBTeTYNcQ"; List <Attachment> a = new List <Attachment>(); a.Add(new Attachment(contentUrl: query, contentType: "image/jpeg")); msg.Attachments = a; string metaquery = "http://dev.virtualearth.net/REST/V1/Routes/Driving?o=json&wp.0=" + start + "&wp.1=" + dest + "&key=AgArU18mPZIHjbt9F0l5_StVXlcXITxAbGRYl07EEUzOLiXIRYLBzWAiBTeTYNcQ"; string s = new WebClient().DownloadString(metaquery); dynamic meta = JsonConvert.DeserializeObject(s); string seconds = meta.resourceSets[0].resources[0].travelDuration; TimeSpan time = TimeSpan.FromSeconds(Double.Parse(seconds)); var arrivalTime = DateTime.Now.Add(time); msg.Text = "Ihr Paket befindet sich im Moment in " + start + " und \nwird um " + arrivalTime.ToString(@"HH\:mm") + " ankommen."; PostAndWait(context, msg); break; case intent_changeDelivery: DateTime?when = DateTime.Now; var hasDate = model.entities.Where(e => e.type == "builtin.datetime.time").FirstOrDefault(); if (hasDate != null) { var parser = new Chronic.Parser(); var span = parser.Parse(hasDate.entity); if (span != null) { if (when.Value.Hour < 18) { PostAndWait(context, "Okay, Zustellung geändert auf " + when.Value.ToString(@"HH\:mm")); } else { PostAndWait(context, MakeMessage("http://dev.virtualearth.net/REST/V1/Imagery/Map/Road/Am%20Europlatz%20Vienna?mapLayer=TrafficFlow&key=AgArU18mPZIHjbt9F0l5_StVXlcXITxAbGRYl07EEUzOLiXIRYLBzWAiBTeTYNcQ", "Das ist leider nicht möglich. Ihr Paket wird zu ihrer nähesten Abholstation geliefert. Am Europlatz 3, Vienna")); } break; } } PostAndWait(context, MakeMessage("http://dev.virtualearth.net/REST/V1/Imagery/Map/Road/Am%20Europlatz%20Vienna?mapLayer=TrafficFlow&key=AgArU18mPZIHjbt9F0l5_StVXlcXITxAbGRYl07EEUzOLiXIRYLBzWAiBTeTYNcQ", "Ihr Paket wird zu ihrer nähesten Abholstation \ngelifiert. Am Europlatz 3, Vienna")); break; case intent_findStation: Message m = new Message(); string q = "http://dev.virtualearth.net/REST/V1/Imagery/Map/Road/Am%20Europlatz%20Vienna?mapLayer=TrafficFlow&key=AgArU18mPZIHjbt9F0l5_StVXlcXITxAbGRYl07EEUzOLiXIRYLBzWAiBTeTYNcQ"; List <Attachment> attachments = new List <Attachment>(); attachments.Add(new Attachment(contentUrl: q, contentType: "image/jpeg")); m.Attachments = attachments; m.Text = "Die näheste Abholstation ist Am Europlatz 3, Vienna"; PostAndWait(context, m); break; case intent_paketTarif: List <EntityRecommendation> entities = new List <EntityRecommendation>(); //get land IFormDialog <PaketTarif> tmp = MakeRootDialog(new PaketTarif(), entities: entities); context.Call(tmp, PaketTarifComplete); break; default: PostAndWait(context, "Didn't get that"); break; } } else { PostAndWait(context, "Leider nicht verstanden"); } }