public async Task SetCurrentNodeAsync(AlexaRequest req, AlexaResponse resp, string currentNodeName)
        {
            CloudTable sessionTable = GetCloudTable();

            // Create a new customer entity.

            string userId = this.GetUserId(req);

            string appId = req.Session?.Application?.ApplicationId;

            string userIdHash = GetStringSha256Hash(userId);

            SessionStorageEntity sessionEntity = new SessionStorageEntity(appId, userIdHash);

            sessionEntity.CurrentNodeName = currentNodeName;
            sessionEntity.LastAccessTime  = DateTime.UtcNow;


            // Create the TableOperation object that inserts the customer entity.
            TableOperation insertOperation = TableOperation.InsertOrReplace(sessionEntity);

            await sessionTable.ExecuteAsync(insertOperation);
        }
        public override async Task <string> GetCurrentNodeNameAsync(AlexaRequest req)
        {
            string curNodeName = null;

            string userId = this.GetUserId(req);

            string appId = req.Session?.Application?.ApplicationId;

            string userIdHash = GetStringSha256Hash(userId);

            TableOperation retrieveOperation = TableOperation.Retrieve <SessionStorageEntity>(appId, userIdHash);

            CloudTable  sessionTable = GetCloudTable();
            TableResult tabResult    = null;

            tabResult = await sessionTable.ExecuteAsync(retrieveOperation);

            if (tabResult.HttpStatusCode == 200)
            {
                SessionStorageEntity storageEntity = (SessionStorageEntity)tabResult.Result;
                curNodeName = storageEntity.CurrentNodeName;
            }
            return(curNodeName);
        }