Example #1
0
        async public Task <IActionResult> Post([FromBody] Event body)
        {
            if (body.Object != null && body.Object != "page")
            {
                return(NotFound());
            }
            var entry = body.Entry.First();
            var user  = await _userRepo.Get(entry.Messaging.First().Sender.Id);

            try
            {
                var message     = entry.Messaging.First().Message;
                var messageText = message.QuickReply?.Payload ?? message.Text;
                var(response, updatedUser) = await _commandFactory
                                             .Create(user, messageText)
                                             .Process();

                await response.SendMessage(updatedUser.Id, _messanger);

                updatedUser.Gmt = await _messanger.QueryUserTimezone(updatedUser.Id);

                await _userRepo.Save(updatedUser);

                return(Ok());
            }
            catch (Exception)
            {
                await new WebClient.TextMessage("Sorry, something went wrong")
                .SendMessage(user.Id, _messanger);
                return(Ok());
            }
        }