Primero voy a responder a la parte acerca de cómo lo estoy haciendo : estoy usando un MongoDB. Jugué con las ideas que usted ha mencionado, pero rápidamente tachado soluciones en memoria (Memcached, Redis) con la misma razón. Mi solución final se redujo a una base de datos relacional, ya sea o una NoSQL como MongoDB. Para ser honesto, a escala de mi proyecto, yo no pensaba en comparación con firmeza el rendimiento entre los tipos de base de datos.
En particular con mi función de "hoja de ruta", me decidí a ir con Mongo para acercarse a un estilo más "POO" cuando se trata con el usuario "objeto" sin tener que definir explícitamente una clase de usuario, gracias a la estructura normalizada de Mongo. Entiendo que la misma se podría hacer para MySQL, también, al igual que el procesamiento jsonde datos es más "objeto-como" para mí y flask, es decir user = getUserFromMongo, que me da un diccionario en Python entonces yo sólo puedo hacer user['first_name']. Los códigos belows explicarán esta simplicidad:
(De alguna manera esto se sentía como ... no tener que escribir comandos SQL para la interacción simple base de datos en Rails)
Mi usuario de datos objeto en MongoDB

Por último, en cuanto a cómo manejo la entrada del usuario , adopté concepto de la Wit.ai context. No sé cómo lo hacen exactamente, pero una contextpara mí es el tipo de objetivo conversación que está pasando. Yo lo uso como una pila, y tan pronto como el contexto actual se hace esto, el pop de los datos de contexto del usuario. Por cada mensaje que recibe el robot, el programa obtendrá el contexto actual y dirigir el flujo. Siempre que se produzca un error desconocido (manejo de excepciones), muy probablemente debido a que el usuario está diciendo algo que el robot no entiende, puedo borrar los contextdatos, también.
Lo bueno de MongoDB es que puedo dar forma al contextembargo que quiero y tratarla simplemente como un objeto. Un sencillo es como {name: yelp-search, stage:ask-for-user-location}, y me imagino que los complejos se podrían basar en esa estructura, también. Por supuesto, una implementación de la pila contextno se ocupa de la conversación compleja con el complejo de referencia anterior.
Me puse mi proyecto en Github si quieres echar un vistazo a él.