Θα απαντήσω πρώτα το τμήμα σχετικά με το πώς το κάνω : Είμαι χρησιμοποιώντας ένα MongoDB. Θα έπαιζε με τις ιδέες που αναφέρατε, αλλά γρήγορα πέρασε λύσεις στη μνήμη (memcached, Ρέντη) με τον ίδιο λόγο. Τελική λύση μου κατέβηκε είτε σε σχεσιακή ΒΔ ή NoSQL όπως MongoDB. Για να είμαι ειλικρινής, σε κλίμακα του έργου μου, εγώ δεν σκέφτομαι σθεναρά τη σύγκριση των επιδόσεων μεταξύ των τύπων DB.
Με ιδιαίτερο χαρακτηριστικό μου «οδικό χάρτη», αποφάσισα να πάω με Mongo να προσεγγίσει μια περισσότερο στυλ «OOP» όταν ασχολείται με το χρήστη «αντικείμενο», χωρίς να χρειάζεται να ορίσει ρητά μια κατηγορία χρήστη, χάρη στην κανονικοποιημένη δομή του Mongo. Καταλαβαίνω το ίδιο θα μπορούσε να γίνει για MySQL, πάρα πολύ, απλά ότι η επεξεργασία jsonτων δεδομένων είναι πιο «αντικείμενο που μοιάζει με» για μένα και flask, δηλαδή user = getUserFromMongo, η οποία μου δίνει ένα dict στην Python τότε μόνο που μπορώ να κάνω user['first_name']. Οι κωδικοί belows θα εξηγήσει αυτή την απλότητα:
(Κάπως αυτό ήταν αισθάνεται σαν ... δεν χρειάζεται να γράψετε SQL εντολές για απλή αλληλεπίδραση βάση δεδομένων Rails)
χρήστη μου δεδομένα αντικειμένου στο MongoDB

Τέλος, ως προς το πώς θα διαχειριστεί την είσοδο του χρήστη , που εξέδωσε η έννοια Wit.ai του context. Δεν ξέρω πώς το κάνουν ακριβώς, αλλά contextγια μένα είναι το είδος της συνομιλίας σκοπό που είναι σε εξέλιξη. Το χρησιμοποιώ σαν μια στοίβα, και μόλις το τρέχον πλαίσιο γίνεται, το ποπ από τα δεδομένα του πλαισίου του χρήστη. Για κάθε μήνυμα το bot λαμβάνει, το πρόγραμμα θα πάρει το σημερινό πλαίσιο και την κατεύθυνση της ροής. Κάθε φορά που εμφανίζεται ένα άγνωστο σφάλμα (εξαιρέσεις χειρισμός), πιθανότατα επειδή ο χρήστης λέει κάτι το bot δεν καταλαβαίνω, μπορώ να σβήσω τα contextδεδομένα, πάρα πολύ.
Το καλό μέρος για MongoDB είναι ότι μπορώ να διαμορφώσει το contextόμως θέλω και να το αντιμετωπίσουμε απλώς ως ένα αντικείμενο. Ένα απλό είναι, όπως {name: yelp-search, stage:ask-for-user-location}και φαντάζομαι σύνθετες μπορούσε να στηριχτεί σε αυτή τη δομή, πάρα πολύ. Φυσικά, η εφαρμογή στοίβα του contextδεν ασχολείται με το συγκρότημα συνομιλία με σύνθετη αναφορά παρελθόν.
Έχω βάλει το έργο μου στο Github αν θέλετε να ρίξετε μια ματιά σε αυτό.