示例#1
0
        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, "Пример полноценной команды: Как избавиться от застаревшего пятна крови на белой ткани. Или скажи помощь."));
        }
示例#3
0
 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));
 }
示例#6
0
 public AliceResponse WebHook([FromBody] AliceRequest req)
 {
     return(GetResponse(req).Result);
 }