Il modo migliore per memorizzare le risposte degli utenti di Facebook bot chat?

voti
4

Costruire un bot messaggero Facebook utilizzando Claudia JS e il piano di hosting su AWS Lambda.

Voglio chiedere all'utente una serie di domande.

Quando un utente risponde con una risposta, ho bisogno di salvare per dopo e una volta che ho tutte le informazioni che mi servono, io passerò le risposte a una funzione.

Qual è il modo migliore per salvare queste informazioni?

Stavo pensando qualche strato di caching come Redis, ma perché questo viene memorizzato nella RAM perderò quando server di Lamda si spegne. MongoDB ha apparentemente un sacco di spese generali quando ci si collega, ma sarà almeno essere persistente.

Forse solo un semplice server MySQL?

Come tutti gli altri lo fa? Mi sento come se non v'è una soluzione semplice che mi manca.

È pubblicato 13/09/2016 alle 05:47
fonte dall'utente
In altre lingue...                            


2 risposte

voti
5

Io prima di rispondere la parte su come lo sto facendo : sto usando un MongoDB. Ho giocato con le idee che hai menzionato, ma rapidamente attraversato soluzioni in-memory (Memcached, Redis) con lo stesso motivo. La mia soluzione finale è sceso a uno un DB relazionale o un NoSQL come MongoDB. Per essere onesti, a scala di mio progetto, non pensavo circa robusto confrontare le prestazioni tra i tipi di DB.

Con la mia caratteristica particolare "tabella di marcia", ho deciso di andare con Mongo di avvicinare uno stile più "OOP" quando si tratta con l'utente "oggetto" senza dover definire in modo esplicito una classe utente, grazie alla struttura normalizzata di Mongo. Capisco lo stesso potrebbe essere fatto per MySQL, anche, solo che l'elaborazione jsondei dati è più "oggetto-like" per me e flask, cioè user = getUserFromMongo, che mi dà un dict in Python allora posso solo fare user['first_name']. I codici belows spiegano questa semplicità:

Interagisci con MongoDB (In qualche modo questa è stata la sensazione di ... non dover scrivere comandi SQL per una semplice interazione con i database in Rails)

Il mio utente i dati oggetto MongoDB utente

Infine, da quanto riesco input dell'utente , ho adottato il concetto di Wit.ai di context. Non so come lo fanno esattamente, ma una contextper me è il tipo di scopo conversazione che sta succedendo. Io lo uso come una pila, e non appena il contesto attuale è fatto, pop fuori i dati di contesto dell'utente. Per ogni messaggio il bot riceve, il programma otterrà il contesto attuale e dirigere il flusso. Ogni volta che un errore sconosciuto si verifica (gestione delle eccezioni), molto probabilmente perché l'utente sta dicendo qualcosa che il bot non capisce, a cancellare i contextdati, anche.

La buona parte di MongoDB è che posso plasmare il contextperò che voglio e trattarlo come un oggetto. Un semplice è come {name: yelp-search, stage:ask-for-user-location}, e immagino che quelli complessi potrebbero essere costruiti su quella struttura, anche. Naturalmente, un'implementazione dello stack del contextnon tratta con la conversazione complessa con riferimento passato complesso.

Ho messo il mio progetto su Github , se si vuole dare un'occhiata a questo.

Risposto il 15/09/2016 a 20:17
fonte dall'utente

voti
3

Ho anche usato mysql per chatbot ma ho usato NodeJS per il backend app.For che mysql modulo sarebbe molto utile.

È necessario memorizzare lo stato corrente degli utenti per la sessione di domande risposte e anche memorizzare la stessa risposta da parte dell'utente ed è necessario fare uno switch o if-else-if caso per porre domande a utente in base al suo stato come interruttore (stato) e in caso di interruttore solo aggiornare è state.and avete facebook-id dell'utente in oggetto evento di chatbot in modo che è possibile memorizzare i dati di ogni utente individualmente con il loro stato e la domanda-risposta nella tabella diversa.

Per esempio, definire le bandiere {1,2,3}

lo stato dell'utente sarà di 1 a begining quindi chiedere a lui per esempio domanda-1 solo, e conservare questo come risposta-1, si può fare questo da esso è il controllo dello stato, e dopo questo stato di aggiornamento a 2.

così, in questo modo si può chiedere ad ogni singola domanda studente come per il loro stato e lui rispondere.

Ho fatto lo stesso in esatta modalità di cui sopra.

Spero che questo sarebbe utile per voi.

Risposto il 16/09/2016 a 09:38
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more