Example #1
0
        protected override AliceResponse CreateResponse(AliceRequest request)
        {
            AliceResponse resp = base.CreateResponse(request);

            resp.Response.EndSession = true;
            return(resp);
        }
Example #2
0
        public Task Post()
        {
            CreateTimer();

            using var reader = new StreamReader(Request.Body);
            var body = reader.ReadToEnd();

            var aliceRequest = JsonConvert.DeserializeObject <AliceRequest>(body, ConverterSettings);
            var userId       = aliceRequest.Session.UserId;
            var token        = ExtractToken(Request);

            Console.WriteLine(JsonConvert.SerializeObject(aliceRequest, ConverterSettings));
            Console.WriteLine("Token: " + token);

            if (token.IsNullOrEmpty() && !aliceRequest.HasScreen())
            {
                // auth needed
                var authResponse       = new AliceResponse(aliceRequest).ToAuthorizationResponse();
                var stringAuthResponse = JsonConvert.SerializeObject(authResponse, ConverterSettings);
                return(Response.WriteAsync(stringAuthResponse));
            }

            var session        = GetOrCreateSession(userId, token, aliceRequest.HasScreen());
            var aliceResponse  = session.HandleRequest(aliceRequest);
            var stringResponse = JsonConvert.SerializeObject(aliceResponse, ConverterSettings);

            Console.WriteLine(stringResponse);

            return(Response.WriteAsync(stringResponse));
        }
        public Task Post()
        {
            using var reader = new StreamReader(Request.Body);
            var body = reader.ReadToEnd();

            var request = JsonConvert.DeserializeObject<AliceRequest>(body, Utils.ConverterSettings);
            if (request == null)
            {
                Console.WriteLine("Request is null:");
                Console.WriteLine(body);
                return Response.WriteAsync("Request is null");
            }
            
            if (request.IsPing())
            {
                var pong = new AliceResponse(request).ToPong();
                var pongResponse = JsonConvert.SerializeObject(pong, Utils.ConverterSettings);
                return Response.WriteAsync(pongResponse);
            }

            Console.WriteLine($"REQUEST:\n{JsonConvert.SerializeObject(request, Utils.ConverterSettings)}\n");
            
            var response = _aliceService.HandleRequest(request);
            var stringResponse = JsonConvert.SerializeObject(response, Utils.ConverterSettings);

            Console.WriteLine($"RESPONSE:\n{stringResponse}\n");
            
            return Response.WriteAsync(stringResponse);
        }
Example #4
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);
        }
Example #5
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);
        }
Example #6
0
        public Task Post()
        {
            using var reader = new StreamReader(Request.Body);
            string body = reader.ReadToEnd();

            var aliceRequest = JsonConvert.DeserializeObject <AliceRequest>(body, ConverterSettings);

            if (aliceRequest?.IsPing() == true)
            {
                AliceResponseBase <UserState, SessionState> pongResponse = new AliceResponse(aliceRequest).ToPong();
                string stringPong = JsonConvert.SerializeObject(pongResponse, ConverterSettings);
                return(Response.WriteAsync(stringPong));
            }

            string userId = aliceRequest.Session.UserId;
            string token  = ExtractToken(Request);

            Console.WriteLine($"REQUEST FROM {userId}:\n{body}\n");

            AliceResponse aliceResponse  = _aliceService.HandleRequest(aliceRequest, token);
            string        stringResponse = JsonConvert.SerializeObject(aliceResponse, ConverterSettings);

            Console.WriteLine($"RESPONSE:\n{stringResponse}\n");

            return(Response.WriteAsync(stringResponse));
        }
Example #7
0
        protected override AliceResponse CreateResponse(AliceRequest request)
        {
            AliceResponse response = base.CreateResponse(request);

            ModifierHelp.AddExamplesTo(response);

            return(response);
        }
Example #8
0
        protected override AliceResponse CreateResponse(AliceRequest request)
        {
            AliceResponse response         = base.CreateResponse(request);
            bool          isOutsideCommand = !request.Request.Command.IsNullOrEmpty() && request.Session?.New == true;

            response.Response.EndSession = request.State.Session.Step != Step.AwaitWebhookResponse && isOutsideCommand;
            return(response);
        }
        public void Alice_GetResponseFromPing_Success()
        {
            string requestJson  = File.ReadAllText(TestsConstants.Assets.AliceRequestPingFilePath);
            var    aliceRequest = JsonSerializer.Deserialize <AliceRequest <object, object, object> >(requestJson);
            var    response     = new AliceResponse(aliceRequest, string.Empty);

            Assert.NotNull(response);
        }
        public IAliceResponse Handle(IAliceRequest request)
        {
            IAliceResponse response = new AliceResponse();

            response.Message = "Booking service could not serve this request.";

            return(response);
        }
Example #11
0
        private AliceResponse Exit(AliceRequest request)
        {
            var           phrase   = new Phrase("Выхожу из игры. Возвращайся!");
            AliceResponse response = phrase.Generate(request);

            response.Response.EndSession = true;

            return(response);
        }
        public AliceResponse HandleRequest(AliceRequest aliceRequest, State state)
        {
            AliceResponse response = null;

            if (!Services.Any(Service => Service.Run(aliceRequest, state, out response)))
            {
                throw new NotSupportedException("No default Service");
            }
            return(response);
        }
Example #13
0
        internal AliceResponse HandleRequest(AliceRequest aliceRequest)
        {
            AliceResponse response = null;

            if (!Modiffiers.Any(modifier => modifier.Run(aliceRequest, State, out response)))
            {
                throw new NotSupportedException("No default modifier");
            }
            return(response);
        }
Example #14
0
        public bool Run(AliceRequest request, State state, out AliceResponse response)
        {
            if (!Check(request, state))
            {
                response = null;
                return(false);
            }

            response = CreateResponse(request, state);
            return(true);
        }
Example #15
0
        protected override AliceResponse CreateResponse(AliceRequest request)
        {
            AliceResponse response = base.CreateResponse(request);

            if (request.State.User.Webhooks.Count == 0)
            {
                ModifierHelp.AddExamplesTo(response);
            }

            return(response);
        }
Example #16
0
        public IAliceResponse Handle(IAliceRequest aliceRequest)
        {
            IAliceResponse response = new AliceResponse();
            IList <Room>   rooms    = _roomRepository.List();

            AliceListRoomParser parser = new AliceListRoomParser();

            response.Message = parser.Parse(rooms);

            return(response);
        }
Example #17
0
        protected override AliceResponse CreateResponse(AliceRequest request)
        {
            AliceResponse response = base.CreateResponse(request);

            if (request.State.Session.Step == Step.None && request.HasScreen())
            {
                AddExamplesTo(response);
            }

            return(response);
        }
        private IAliceResponse AddToUnhandled()
        {
            UnhandledMessage unhandledMessage = new UnhandledMessage();
            unhandledMessage.UserMessage = _aliceRequest.RequestMessage;

            UnhandledMessageRepository repository = new UnhandledMessageRepository("UnhandledMessages.json");
            repository.Add(unhandledMessage);

            IAliceResponse response = new AliceResponse();
            response.Message = "I did not get it but noted down. I will learn it soon. Show <a {aliceRequestAct}>Help</a>";
            return response;
        }
Example #19
0
        public AliceResponse HandleRequest(AliceRequest aliceRequest)
        {
            _lastActive = DateTime.Now;

            AliceResponse response = null;

            if (!Modifiers.Any(modifier => modifier.Run(aliceRequest, _state, out response)))
            {
                throw new NotSupportedException("No default modifier");
            }
            return(response);
        }
Example #20
0
 public static void AddExamplesTo(AliceResponse response)
 {
     response.Response.Buttons ??= new List <Button>();
     response.Response.Buttons.AddRange(
         Example.List().Select(
             x => new Button
     {
         Title = x.Title,
         Hide  = false
     }
             )
         );
 }
        public static AliceResponse CreateAliceResponse(ProcessingResult result, Session session, Func <int, int> variantSelector)
        {
            var responseArgs = GetResponseArgs(result);
            var response     = CreateResponse(responseArgs, result.CultureInfo, variantSelector);

            var aliceResponse = new AliceResponse()
            {
                Response = response,
                Session  = session,
                Version  = "1.0"
            };

            return(aliceResponse);
        }
        public IAliceResponse Handle(IAliceRequest request)
        {
            IAliceResponse response = new AliceResponse();
            DateTime       date     = DateTime.Now;

            if (request.Parameters.Count == 3)
            {
                date = Utility.ConvertToDate(request.Parameters[2].Value);
            }

            response.Message = ListBookings(date, string.Empty, request.UserProfile);

            return(response);
        }
Example #23
0
        private AliceResponse CreateResponse(AliceRequest request, State state)
        {
            var response = new AliceResponse(request);
            var simple   = Respond(request, state);

            response.Response.Text = simple.Text;
            response.Response.Tts  = string.IsNullOrEmpty(simple.Tts) ? simple.Text : simple.Tts;
            if (simple.Buttons != null)
            {
                response.Response.Buttons = simple.Buttons.Select(t => new Button {
                    Title = t
                }).ToList();
            }
            return(response);
        }
Example #24
0
        internal AliceResponse HandleRequest(AliceRequest aliceRequest, ref State state)
        {
            _state.Step = state.Step;
            AliceResponse response = null;

            if (!Modifiers.Any(modifier => modifier.Run(aliceRequest, _state, schedulesRepository, out response)))
            {
                throw new NotSupportedException("No default modifier");
            }

            _state.User = usersRepository.UpdateUser(_state.User);
            state       = _state;

            return(response);
        }
Example #25
0
        public Task AliceWebhook()
        {
            Console.WriteLine("Alice request got");
            try
            {
                // read request
                string body;
                using (var reader = new StreamReader(Request.Body)) body = reader.ReadToEnd();
                // Console.WriteLine("http got: " + body);

                var aliceRequest = JsonConvert.DeserializeObject <AliceRequest>(body, Utils.ConverterSettings);
                Response.Headers.Add("Content-Type", "application/json");
                //var userId = aliceRequest.Session.UserId;

                // ping
                if (aliceRequest.Request.OriginalUtterance == "ping")
                {
                    var pong = new AliceResponse
                    {
                        Response = new ResponseModel
                        {
                            Text = "pong"
                        },
                        Session = aliceRequest.Session
                    };

                    return(Response.WriteAsync(JsonConvert.SerializeObject(pong, Utils.ConverterSettings)));
                }

                // parse request
                Console.WriteLine($"\nRequest got: {body}");

                // return response
                var aliceResponse  = HandleRequest(aliceRequest);
                var stringResponse = JsonConvert.SerializeObject(aliceResponse, Utils.ConverterSettings);

                Console.WriteLine($"\nResponse: {stringResponse}");

                return(Response.WriteAsync(stringResponse));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
        public void AliceResponse_KeepSession_HasSession()
        {
            var aliceRequest = new AliceRequest <object, TestSession, object>
            {
                State = new AliceStateModel <TestSession, object>
                {
                    Session = new TestSession()
                    {
                        TestProperty = 1
                    }
                }
            };
            var aliceResponse = new AliceResponse <TestSession, object>(aliceRequest, string.Empty);

            Assert.NotNull(aliceResponse.SessionState);
            Assert.Equal(aliceRequest.State.Session.TestProperty, aliceResponse.SessionState.TestProperty);
        }
Example #27
0
        public IAliceResponse Process()
        {
            IAliceResponse response;

            if (string.IsNullOrEmpty(_command.ServerAction))
            {
                response = new AliceResponse();
                response.ActionToPerform = _command.ClientAction;
                response.Message         = _command.GetRandomSuccessResponse();
            }
            else
            {
                IAliceRequest request = CreateRequest();
                response = _handler.Handle(request);
            }

            return(response);
        }
Example #28
0
        public Task Post()
        {
            using var reader = new StreamReader(Request.Body);
            string body = reader.ReadToEnd();

            var request = JsonConvert.DeserializeObject <AliceRequest>(body, ConverterSettings);

            if (request == null)
            {
                Console.WriteLine("Request is null:");
                Console.WriteLine(body);
                return(Response.WriteAsync("Request is null"));
            }

            if (request.IsPing())
            {
                AliceResponseBase <UserState, SessionState> pong = new AliceResponse(request).ToPong();
                string pongResponse = JsonConvert.SerializeObject(pong, ConverterSettings);
                return(Response.WriteAsync(pongResponse));
            }

            Console.WriteLine($"REQUEST:\n{JsonConvert.SerializeObject(request, ConverterSettings)}\n");

            try
            {
                AliceResponse response       = _aliceService.HandleRequest(request);
                string        stringResponse = JsonConvert.SerializeObject(response, ConverterSettings);

                Console.WriteLine($"RESPONSE:\n{stringResponse}\n");

                return(Response.WriteAsync(stringResponse));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);

                return(Response.WriteAsync(
                           JsonConvert.SerializeObject(
                               new Phrase("Возникла какая-то ошибка, разработчик уже уведомлён").Generate(request),
                               ConverterSettings
                               )
                           ));
            }
        }
Example #29
0
        protected virtual AliceResponse CreateResponse(AliceRequest request, State state)
        {
            var response = new AliceResponse(request);
            var simple   = Respond(request, state);

            if (simple.IsAuthorize)
            {
                return(response.ToAuthorizationResponse());
            }

            response.Response.Text = simple.Text;
            response.Response.Tts  = string.IsNullOrEmpty(simple.Tts) ? simple.Text : simple.Tts;
            if (simple.Buttons != null)
            {
                response.Response.Buttons = simple.Buttons.Select(t => new Button {
                    Title = t
                }).ToList();
            }

            return(response);
        }
        public static AliceResponse MakeResponse(AliceRequest aliceRequest, BoxesContext dataBase)
        {
            var user = dataBase.GetUserById(aliceRequest.session.session_id);

            var session = new SessionResponse
            {
                session_id = aliceRequest.session.session_id,
                message_id = aliceRequest.session.message_id,
                user_id    = aliceRequest.session.user_id
            };

            var aliceResponse = new AliceResponse {
                session = session
            };

            aliceResponse.response.text        = GetAnswer(aliceRequest, dataBase, user);
            aliceResponse.response.tts         = aliceResponse.response.text;
            aliceResponse.response.end_session = false;

            return(aliceResponse);
        }