private static async Task <AliceResponse> GetResponse(AliceRequest req) { return(await Task.Run(() => { HttpWebRequest request = WebRequest.Create( $"http://localhost:1234/timetable?userid={req.Session.UserId}&sessionid={req.Session.SessionId}&command={req.Request.Command}") as HttpWebRequest; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); string responseString; using (var reader = new System.IO.StreamReader(response.GetResponseStream(), Encoding.UTF8)) { responseString = reader.ReadToEnd(); } var responseModel = JsonConvert.DeserializeObject <Response>(responseString); if (responseModel.Buttons?.Length > 0) { return req.Reply(responseModel.Text, buttons: CreateButtons(responseModel.Buttons)); } return req.Reply(responseModel.Text); })); }
public AliceResponse Match(AliceRequest req) { Random random = new Random(); FillingAnswers fillingAnswer = new FillingAnswers(); var answerManagement = fillingAnswer.FillingManagement(); var answerStain = fillingAnswer.FillingStain(); var position = ConcatArray(fillingAnswer.FillingPosition()); var oldStain = fillingAnswer.FillingOldStain(); if (req.Session.New) { return(response.Reply(req, "Долой пятна приветствуют тебя, я помогу тебе избавиться от самых сложных пятен. " + "Чтобы начать, спроси меня: Как избавиться от пятна? " + "Если нужна помощь в навигации, просто скажи: Что умеешь ? . ")); } foreach (var i in answerManagement) { if (!ContainOneOf(req.Request.OriginalUtterance, i.Words_activators) || !i.IsEnd) { if (!ContainOneOf(req.Request.OriginalUtterance, i.Words_activators)) { continue; } return(response.Reply(req, i.Answers.Tts.ElementAt(random.Next(0, i.Answers.Tts.Length)))); } return(response.Reply(req, i.Answers.Tts.ElementAt(random.Next(0, i.Answers.Tts.Length)), true)); } foreach (var i in answerStain) { if (ContainOneOf(req.Request.OriginalUtterance, i.Words_activators) && ContainOneOf(req.Request.OriginalUtterance, position) && ContainOneOf(req.Request.OriginalUtterance, oldStain.Name)) { var answer = i.Answers.Where(u => ContainOneOf(req.Request.OriginalUtterance, u.Surface) == true && u.Оld).First().Text; return(response.Reply(req, answer)); } if (ContainOneOf(req.Request.OriginalUtterance, i.Words_activators) && ContainOneOf(req.Request.OriginalUtterance, position)) { var answer = i.Answers.Where(u => ContainOneOf(req.Request.OriginalUtterance, u.Surface) == true && (u.Оld == false)).First().Text; return(response.Reply(req, answer)); } if (ContainOneOf(req.Request.OriginalUtterance, i.Words_activators) && ContainOneOf(req.Request.OriginalUtterance, oldStain.Name)) { return(response.Reply(req, "Повторите запрос добавив на какой ткани появилось пятно? Пример ткани: цветная, белая, замша, ковёр, мебель?")); } if (ContainOneOf(req.Request.OriginalUtterance, i.Words_activators)) { return(response.Reply(req, "Запросу не хватает конкретики, например: Как избавиться от застаревшего пятна крови на белой ткани.")); } } return(response.Reply(req, "Пример полноценной команды: Как избавиться от застаревшего пятна крови на белой ткани. Или скажи помощь.")); }
public AliceResponse Reply(AliceRequest req, string text, bool endSession = false, ButtonModel[] buttons = null) { return(new AliceResponse { Response = new ResponseModel { Text = text, Tts = text, EndSession = endSession }, Session = req.Session }); }
public static AliceResponse Reply( this AliceRequest req, string text, bool endSession = false, ButtonModel[] buttons = null) { var resp = new AliceResponse { Response = new ResponseModel { Text = text, Tts = text, EndSession = endSession }, Session = req.Session }; resp.Response.Buttons = buttons; return(resp); }
public AliceResponse WebHook([FromBody] AliceRequest req) { return(_replies.Match(req)); }
public AliceResponse WebHook([FromBody] AliceRequest req) { return(GetResponse(req).Result); }