public async Task <Message> Post([FromBody] Message message)
        {
            Message replyMessage;
            // BUG There is a bug on the GetBotPerUserInConversationData and can't implicitily convert as <MyState>
            var storedState = message.GetBotPerUserInConversationData <object>("myState")?.ToString();
            var myState     = string.IsNullOrEmpty(storedState)
                ? new MyState()
                : JsonConvert.DeserializeObject <MyState>(storedState);

            if (message.Type == "Message")
            {
                if (!string.IsNullOrEmpty(myState.TwoFactorAuthCode))
                {
                    replyMessage = ValidateTwoFactorAuthCode(message, myState);
                }
                else
                {
                    replyMessage = GetSimpleAnswer(message, ref myState);
                    if (replyMessage == null)
                    {
                        replyMessage = GetUnknownReply(message, myState);
                    }
                }

                replyMessage.SetBotPerUserInConversationData("myState", myState);
            }
            else
            {
                replyMessage = HandleSystemMessage(message);
            }
            return(replyMessage);
        }