Ik zal eerst antwoord geven op de deel over hoe ik het doe : Ik gebruik een MongoDB. Ik speelde met de ideeën die u noemde, maar al snel doorgestreept in-memory oplossingen (Memcached, Redis) met dezelfde reden. Mijn definitieve oplossing kwam neer op ofwel een relationele database of een NoSQL als MongoDB. Om eerlijk te zijn, op schaal van mijn project, heb ik niet na te denken over robuust vergelijken van prestaties tussen DB types.
Met mijn bijzondere eigenschap "roadmap", heb ik besloten om te gaan met Mongo naar een meer "OOP" achtige benadering bij de behandeling van de gebruiker "object" zonder expliciet te definiëren een gebruiker klasse, dankzij de genormaliseerde structuur van Mongo. Ik begrijp de Hetzelfde kan worden gedaan voor MySQL, ook, alleen dat de verwerking van jsonde gegevens is meer "object-achtige" voor mij en flask, dat wil zeggen user = getUserFromMongo, die me een dict in Python dan kan ik gewoon doen geeft user['first_name']. De codes zullen belows deze eenvoud uit te leggen:
(Een of andere manier was dit gevoel alsof ... niet hoeven te schrijven SQL-commando's voor eenvoudige database interactie in Rails)
Mijn gebruikersnaam objectgegevens op MongoDB

Wat ten slotte hoe ik input van de gebruiker , ik aangenomen concept van de Wit.ai's context. Ik weet niet hoe ze dat precies doen, maar contextvoor mij is het type van gesprek doel dat aan de hand is. Ik gebruik het als een stapel, en zodra de huidige context wordt gedaan, pop het uit de context gegevens van de gebruiker. Voor elk bericht de bot ontvangt, zal het programma de huidige context te krijgen en direct de stroom. Wanneer een onbekende fout optreedt (uitzonderingen hanteren), waarschijnlijk omdat de gebruiker is iets wat de bot niet zeggen te begrijpen, ik duidelijk de contextdata, ook.
Het goede deel over MongoDB is dat ik kan de vorm van de contextmaar ik wil en behandelen net als een object. Een eenvoudig is als {name: yelp-search, stage:ask-for-user-location}, en ik kan me voorstellen complexe zou kunnen worden gebouwd op die structuur, ook. Natuurlijk, een stapel uitvoering van het contextniet omgaan met complexe gesprek met complexe verwijzing verleden.
Ik zette mijn project op GitHub als u een kijkje nemen.