示例#1
0
 protected override Phrase Respond(AliceRequest request)
 {
     return(new Phrase(
                "Вот список некоторых пользовательских сценариев, которые возможны с помощью этого навыка.",
                new [] { "Добавить вебхук", "Список вебхуков", "Выход" }
                ));
 }
示例#2
0
        protected override SimpleResponse Respond(AliceRequest request, State state)
        {
            if (!request.HasScreen())
            {
                return(new SimpleResponse
                {
                    Text = "Добавлять вебхуки можно только на устройстве с экраном",
                    Tts = "Добавлять вэбх+уки можно только на устройстве с экраном"
                });
            }

            if (state.User.Webhooks.Count >= 20)
            {
                return(new SimpleResponse
                {
                    Text = "У вас очень много вебхуков, удалите что-нибудь сначала с помощью команды \"Список\"",
                    Tts = "У вас очень много вэбх+уков, удалите что-нибудь сначала с помощью команды - Список",
                    Buttons = new [] { "Список", "Помощь", "Выход" }
                });
            }
            state.Step = Step.AwaitForUrl;
            return(new SimpleResponse
            {
                Text = "Введите URL вебхука:",
                Tts = "Введите URL вэбх+ука",
                Buttons = new [] { "Отмена", "Помощь", "Выход" }
            });
        }
示例#3
0
        private AliceResponse Enter(AliceRequest request, bool restart = false)
        {
            bool newUser = _gameplayService.EnterIsNewUser(request.State.User, request.State.Session);

            Phrase phrase = restart switch
            {
                true => new Phrase(
                    "[audio|dialogs-upload/008dafcd-99bc-4fd1-9561-4686c375eec6/cb19ca47-2ef6-4788-b09f-0d47776e4de3.opus]" +
                    "Начинаем новую игру. Перечисли имена игроков:",
                    _prepareButtons
                    ),
                false when newUser => new Phrase(
                    "[audio|dialogs-upload/008dafcd-99bc-4fd1-9561-4686c375eec6/cb19ca47-2ef6-4788-b09f-0d47776e4de3.opus]" +
                    "Привет. В этой игре я буду загадывать тебе или вам с друзьями определения, " +
                    "а вы должны называть слова. Кто больше угадал — тот и выиграл.\n\n" +
                    "Для начала перечисли имена игроков:",
                    _prepareButtons
                    ),
                _ => new Phrase(
                    "[audio|dialogs-upload/008dafcd-99bc-4fd1-9561-4686c375eec6/cb19ca47-2ef6-4788-b09f-0d47776e4de3.opus]" +
                    "Привет! Чтобы начать игру, перечисли имена игроков:",
                    _prepareButtons
                    )
            };

            return(phrase.Generate(request));
        }
        protected override bool Check(AliceRequest request, State state)
        {
            if (state.Step != Step.None)
            {
                return(false);
            }

            var keywords = new List <string>
            {
                "сказать расписание",
                "скажи расписание",
                "пока расписание",
                "какое расписание",
                "выведи расписание",
                "озвучь расписание",
                "расписание"
            };

            var requestString = request.Request.Nlu.Tokens;

            return(keywords.Any(kw =>
            {
                var tokens = kw.Split(" ");
                return tokens.All(requestString.ContainsStartWith);
            }));
        }
        protected override bool Check(AliceRequest request, State state)
        {
            if (state.Step != Step.None)
            {
                return(false);
            }

            var keywords = new List <string>
            {
                "расписание сегодня",
                "расписание завтра",
                "расписание послезавтра",
                "расписание в",
                "расписание на",
                "расписание во",
                "расписание"
            };

            var requestString = request.Request.Nlu.Tokens;
            var hasKeWorlds   = keywords.Any(kw =>
            {
                var tokens = kw.Split(" ");
                return(tokens.All(requestString.ContainsStartWith));
            });

            if (!hasKeWorlds)
            {
                return(false);
            }

            return(DateCheck(requestString));
        }
示例#6
0
 protected override SimpleResponse Respond(AliceRequest request, State state)
 {
     return(new SimpleResponse
     {
         Text = "Конечно же на ньюбади! Крутые стримы и смешные нарезки ждут тебя!"
     });
 }
示例#7
0
 protected override bool Check(AliceRequest request, State state)
 {
     return(state.Step == Step.None &&
            request.Request.Command.ToLower().StartsWith("удали") &&
            request.Request.Nlu.Tokens.Count > 1 &&
            GetWebhook(request, state) != null);
 }
示例#8
0
 protected override SimpleResponse Respond(AliceRequest request, ISchedulesRepository schedulesRepo, State state)
 {
     return(new SimpleResponse()
     {
         Text = GetHelper(state)
     });
 }
示例#9
0
        protected override AliceResponse CreateResponse(AliceRequest request, State state)
        {
            var resp = base.CreateResponse(request, state);

            resp.Response.EndSession = true;
            return(resp);
        }
示例#10
0
 protected override SimpleResponse Respond(AliceRequest request, ISchedulesRepository schedulesRepo, State state)
 {
     return(new SimpleResponse()
     {
         Text = $"Не поняла"
     });
 }
示例#11
0
        protected override AliceResponse CreateResponse(AliceRequest request)
        {
            AliceResponse resp = base.CreateResponse(request);

            resp.Response.EndSession = true;
            return(resp);
        }
示例#12
0
        protected override SimpleResponse Respond(AliceRequest request, ISchedulesRepository schedulesRepo, State state)
        {
            var positive = new List <string>
            {
                "да",
                "хочу",
                "хотел бы",
                "начать",
                "хорошо"
            };

            var isPositive = positive.Any(item =>
            {
                var tokens = item.Split(" ");
                return(tokens.All(request.Request.Nlu.Tokens.ContainsStartWith));
            });

            if (isPositive)
            {
                state.User.DisplaySubjectTime = true;
            }
            else
            {
                state.User.DisplaySubjectTime = false;
            }

            state.Step = Step.AwaitForDisplayingSubjectType;
            return(new SimpleResponse()
            {
                Text = "Хорошо, сделаю все так, как ты сказал \n " +
                       "Что насчет озвучивания типа предмета. \n" +
                       "К примеру: лекция, практическое занятие или лабораторная"
            });
        }
示例#13
0
        //api/Alice
        public AliceResponse CofeeRequest([FromBody] AliceRequest aliceRequest)
        {
            logger.Debug("Получен запрос от Алисы: " + JsonConvert.SerializeObject(aliceRequest));
            switch (aliceRequest.Session.SkillId)
            {
            case "CoffeskillID":
            {
                if (aliceRequest.Request.OriginalUtterance.Contains("Сделай кофе"))
                {
                }
                else if (aliceRequest.Request.OriginalUtterance.Contains("Долго еще?"))
                {
                }
                else
                {
                    return(aliceRequest.Reply("Непонятно, повторите", "Непон+ятно, повтор+ите"));
                }
            }

            default:
            {
                return(aliceRequest.Reply("Неизвестная команда", "Неизв+естная ком+анда", true));
                //break;
            }
            }
            //var response = aliceRequest.Reply(aliceRequest.Request.OriginalUtterance, true);
            //logger.Debug("Отправляю ответ: " + JsonConvert.SerializeObject(response));
            //return response;
        }
示例#14
0
        public static AliceResponse Reply(this AliceRequest req, ResponseCard card, string text = "")
        {
            var response = req.Reply(text);

            response.Response.Card = card;
            return(response);
        }
示例#15
0
        public AliceResponse Process(AliceRequest request, LemurState state)
        {
            var image  = GetNext();
            var result = request.Reply(image);

            return(result);
        }
示例#16
0
        protected override SimpleResponse Respond(AliceRequest request, ISchedulesRepository schedulesRepo, State state)
        {
            var positive = new List <string>
            {
                "да",
                "хочу",
                "хотел бы",
                "начать",
                "хорошо"
            };

            var isPositive = positive.Any(item =>
            {
                var tokens = item.Split(" ");
                return(tokens.All(request.Request.Nlu.Tokens.ContainsStartWith));
            });

            if (isPositive)
            {
                state.User.DisplaySubjectType = true;
            }
            else
            {
                state.User.DisplaySubjectType = false;
            }

            state.Step = Step.AwaitForDisplayingEmployee;
            return(new SimpleResponse()
            {
                Text = $"Ну и последнее, {state.User.Name}, \n" +
                       $"Хочешь , чтобы я называла имя преподавателя, который будет вести занятие?"
            });
        }
示例#17
0
        public AliceResponse HandleRequest(AliceRequest aliceRequest, string token)
        {
            SaveWebhooksToState(aliceRequest, token);

            // respond
            AliceResponse response = null;

            try
            {
                if (!Modifiers.Any(modifier => modifier.Run(aliceRequest, out response)))
                {
                    throw new NotSupportedException("No default modifier");
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ERROR");
                Console.WriteLine(e);
                response = new AliceResponse(aliceRequest)
                {
                    Response = new Response
                    {
                        Text = "Произошла какая-то ошибка на сервере навыка, разработчик уже уведомлён. " +
                               "Приносим извинения."
                    }
                };
                Console.WriteLine("");
            }

            return(response);
        }
示例#18
0
        protected override SimpleResponse Respond(AliceRequest request, State state)
        {
            if (request.Request.Command.ToLower() == "да")
            {
                using var db  = new DatabaseContext();
                using var dbd = new DatabaseGroupsContext();

                state.User.group = dbd.Grops.Find(state.tempGroup.ToLower()).id;

                db.Users.Update(state.User);
                db.SaveChangesAsync();
                state.Step = Step.None;
                return(new SimpleResponse
                {
                    Text = "Группа записана"
                });
            }


            else
            {
                state.Step = Step.Await4Group;

                return(new SimpleResponse
                {
                    Text = "Повторите пожалуйста группу"
                });
            }
        }
示例#19
0
        protected override SimpleResponse Respond(AliceRequest request, State state)
        {
            var w = GetWebhook(request, state);

            if (w == null)
            {
                return(new SimpleResponse
                {
                    Text = "Не могу найти вебхук по вашему запросу. Что хотите сделать сейчас?",
                    Tts = "Не могу найти бэбх+ук по вашему запросу. Что хотите сделать сейчас?",
                    Buttons = state.User.Token.IsNullOrEmpty()
                        ? new [] { "Добавить вебхук", "Список", "Авторизация", "Помощь", "Выход" }
                        : new [] { "Добавить вебхук", "Список", "Помощь", "Выход" }
                });
            }

            using var db = new DatabaseContext();
            db.Remove(w);
            state.User.Webhooks.Remove(w);
            db.SaveChanges();

            return(new SimpleResponse
            {
                Text = $"Удален вебхук: {w.Phrase.CapitalizeFirst()}. Что теперь?",
                Tts = $"Удалён вэбх+ук: {w.Phrase.CapitalizeFirst()}. Что теперь?",
                Buttons = state.User.Token.IsNullOrEmpty()
                    ? new [] { "Добавить вебхук", "Список", "Авторизация", "Помощь", "Выход" }
                    : new [] { "Добавить вебхук", "Список", "Помощь", "Выход" }
            });
        }
示例#20
0
        public AliceResponse Post([FromBody] AliceRequest aliceRequest)
        {
            aGen.SetData(aliceRequest);
            var answer = aGen.Generate();

            return(aliceRequest.Reply(answer));
        }
        protected override SimpleResponse Respond(AliceRequest request, ISchedulesRepository schedulesRepo, State state)
        {
            var positive = new List <string>
            {
                "да",
                "хочу",
                "хотел бы",
                "начать",
                "хорошо"
            };

            var isPositive = positive.Any(item =>
            {
                var tokens = item.Split(" ");
                return(tokens.All(request.Request.Nlu.Tokens.ContainsStartWith));
            });

            if (isPositive)
            {
                state.User.DisplayAuditory = true;
            }
            else
            {
                state.User.DisplayAuditory = false;
            }

            state.Step = Step.AwaitForDisplayingSubjectTime;
            return(new SimpleResponse()
            {
                Text = "Принято, а как насчет того, чтобы я говорила о времени начала и окончания пары?"
            });
        }
        public static AliceResponse Reply(this AliceRequest req, ResponseCard card)
        {
            var response = req.Reply(card.Title);

            response.Response.Card = card;
            return(response);
        }
        public AliceResponse Post([FromBody] AliceRequest value)
        {
            generator.SetData(value);
            var result = generator.Generate();

            return(value.Reply(result));
        }
示例#24
0
        public AliceResponse WebHook([FromBody] AliceRequest request)
        {
            MessageToSocialNetwork answer = _rabbit.HandleUserMessage(new MessageFromSocialNetwork
            {
                Locale             = request.Meta.Locale == "ru-RU" ? "ru" : request.Meta.Locale,
                Text               = request.Request.OriginalUtterance,
                PlayerSocialId     = request.Session.UserId,
                ReplyBackQueueName = "alice"
            });

            return(new AliceResponse
            {
                Session = request.Session,
                Response = new ResponseModel
                {
                    Text = answer.Text,
                    Buttons = answer
                              .Suggestions
                              .Select(s => new ButtonModel
                    {
                        Title = s.Text
                    })
                              .ToArray()
                }
            });
        }
示例#25
0
        protected override SimpleResponse Respond(AliceRequest request, State state)
        {
            using var db = new DatabaseContext();
            Parser.Parser s          = new Parser.Parser();
            var           raspisanie = s.getRasp(db.Users.Find(request.Session.UserId).group);
            // var raspisanie = s.getRasp("3256");
            string str  = " пока что у вас нет пар";
            bool   brak = false;

            foreach (var day in raspisanie)
            {
                foreach (var lesson in day.lessons)
                {
                    if (lesson.Value != "" && lesson.Value != "-" && DateTime.Today.CompareTo(RightDate(day.date)) == -1)
                    {
                        str  = lesson.Key + " " + lesson.Value + " " + day.date;
                        brak = true;
                        goto poprtak;
                    }
                }
            }
poprtak:
            return(new SimpleResponse
            {
                Text = str
            });
        }
示例#26
0
        protected override AliceResponse CreateResponse(AliceRequest request)
        {
            var     response = new AliceResponse(request);
            Example example  = FindExample(request.Request.Command);

            request.State.Session.Step = Step.None;

            response.Response.Text    = example.Description + " По кнопке подробная видеоинструкция о том, как это сделать.";
            response.Response.Tts     = example.DescriptionTts + " - По кнопке подробная видеоинструкция о том, как это сделать.";
            response.Response.Buttons = new List <Button>
            {
                new Button
                {
                    Title = "Открыть видео",
                    Hide  = false,
                    Url   = example.Link
                }
            };

            var suggests = new [] { "Добавить вебхук", "Примеры", "Список", "Выход" };

            response.Response.Buttons.AddRange(suggests.Select(x => new Button {
                Title = x
            }));

            return(response);
        }
示例#27
0
        private AliceResponse Restart(AliceRequest request)
        {
            var phrase = new Phrase("Ты точно хочешь закончить эту игру и начать новую?", _yesNoButtons);

            _gameplayService.PauseForRestart(request.State.Session);
            return(phrase.Generate(request));
        }
示例#28
0
 protected override SimpleResponse Respond(AliceRequest request, State state)
 {
     return(new SimpleResponse
     {
         Text = "Привет! Этот навык - дипломный проект для упрощения получения информации о расписании для студентов РГППУ!"
     });
 }
示例#29
0
 protected override SimpleResponse Respond(AliceRequest request, State state)
 {
     return(new SimpleResponse
     {
         Text = "неизвестная команда или не указана группа"
     });
 }
示例#30
0
        public bool Match(AliceRequest request, Matching matching, FillingData fillingData, ConcurrentDictionary <string, SuperHeroDaySession> concurrentDictionary)
        {
            var heroContext = fillingData.FillingHeroContext();

            var prepositional = heroContext.Select(x => x.Prepositional).ToArray();

            var otherCases = heroContext.Select(x => x.OtherCases).ToArray();

            foreach (var i in heroContext)
            {
                if (matching.ContainOneOf(request.Request.Command, i.Prepositional))
                {
                    SuperHeroDaySession tempHero = concurrentDictionary[request.Session.SessionId];
                    tempHero.Hero = i.Id;
                    concurrentDictionary.TryUpdate(request.Session.SessionId, tempHero, concurrentDictionary[request.Session.SessionId]);
                    return(true);
                }
            }
            foreach (var i in heroContext)
            {
                if (matching.ContainOneOf(request.Request.Command, i.OtherCases))
                {
                    SuperHeroDaySession tempHero = concurrentDictionary[request.Session.SessionId];
                    tempHero.Hero = i.Id;
                    concurrentDictionary.TryUpdate(request.Session.SessionId, tempHero, concurrentDictionary[request.Session.SessionId]);
                    return(true);
                }
            }
            SuperHeroDaySession isNullHero = concurrentDictionary[request.Session.SessionId];

            return(isNullHero.Hero != 0);
        }