Cel mai bun mod de a stoca răspunsuri de la utilizatori în Facebook bot chat-ul?

voturi
4

Construirea unui mesager bot Facebook, folosind Claudia JS și un plan pe găzduirea pe AWS Lambda.

Vreau să întreb utilizatorului o serie de întrebări.

Atunci când un utilizator răspunde cu un răspuns, am nevoie pentru a salva pentru mai târziu și o dată am toate informațiile de care am nevoie, voi trece răspunsurile la o funcție.

Care este cel mai bun mod de a salva aceste informații?

M-am gândit unele strat cache, cum ar fi Redis, ci pentru că este stocat în memoria RAM I se va pierde atunci când serverul lamda închide. MongoDB are aparent o mulțime de cheltuieli generale, atunci când cel puțin o legătură, dar vor fi persistente.

Poate doar un server simplu mySQL?

Cum toți ceilalți o fac? Simt că este o soluție simplă pe care eu lipsesc.

Întrebat 13/09/2016 la 05:47
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
5

Voi răspunde mai întâi partea cu privire la modul în care o fac : Eu folosesc o MongoDB. Am cochetat cu ideile le - ați menționat, dar repede barată soluții în memorie (Memcached, Redis) cu același motiv. Soluția mea finală a coborât fie la un DB relationala sau un NoSQL ca MongoDB. Pentru a fi sincer, la scara proiectului meu, eu nu cred că despre compararea performanței între tipurile de robust DB.

Cu mea caracteristică particulară „foaie de parcurs“ , am decis să merg cu Mongo să se apropie de un „OOP“ stil mai mult atunci când se ocupă cu utilizatorul „obiect“ , fără a fi nevoie să se definească în mod explicit o clasă de utilizator, datorită structurii normalizată a Mongo. Am înțeles același lucru ar putea fi făcut pentru MySQL, de asemenea, doar că prelucrarea jsondatelor este mai mult „obiect ca“ pentru mine și flask, de exemplu user = getUserFromMongo, ceea ce îmi dă un dict în Python , atunci eu pot face doar user['first_name']. Codurile belows vor explica această simplitate:

Interacționează cu MongoDB (Într-un fel acest lucru a fost sentimentul ca ... nu fi nevoie să scrie comenzi SQL pentru baze de date interacțiune simplă în Rails)

Datele mele de utilizator obiect pe MongoDB utilizator

În cele din urmă, cu privire la modul în care pot gestiona datele introduse de utilizator , am adoptat conceptul de Wit.ai lui context. Nu știu cum o fac exact, dar contextpentru mine este tipul de scop conversație care se întâmplă. L folosesc ca o stivă, și de îndată ce contextul actual se face, pop - l pe datele contextuale ale utilizatorului. Pentru fiecare mesaj bot primește, programul va primi contextul actual și direct fluxul. Ori de câte ori o eroare necunoscută apare (excepții de manipulare), cel mai probabil , deoarece utilizatorul spune ceva bot nu înțelege, am șterge contextdatele, de asemenea.

Partea bună despre MongoDB este că eu pot modela , contextdar vreau si trata doar ca un obiect. Unul simplu este ca {name: yelp-search, stage:ask-for-user-location}și îmi imaginez cele complexe ar putea fi construit pe această structură, de asemenea. Desigur, o implementare stiva contextnu se face cu conversație complexă , cu referire singur cu complex.

Am pus proiectul meu pe Github dacă doriți să aruncați o privire la ea.

Publicat 15/09/2016 la 20:17
sursa de către utilizator

voturi
3

i - au folosit , de asemenea , MySQL pentru chatbot , dar am folosit NodeJS pentru backend app.For care MySQL modul ar fi foarte util.

Ai nevoie pentru a stoca starea curentă a utilizatorilor pentru sesiunea de întrebări de răspuns și , de asemenea , stoca răspunsul în sine de utilizator și aveți nevoie pentru a face un comutator sau dacă-altceva- în cazul în care caz , pentru a pune întrebări la utilizator în funcție de starea sa de comutator ( de stat) și în cazurile de comutator doar actualizarea este state.and ai utilizatorului facebook-id obiect în caz de chatbot , astfel încât să puteți stoca datele fiecărui utilizator în mod individual cu starea lor și de întrebare-răspuns în tabelul diferit.

De exemplu, defini steaguri {1,2,3}

starea lui de utilizator va fi 1 în begining astfel încât să-l întrebi de exemplu, întrebarea-1 numai, și stoca acest lucru ca răspuns-1, puteți face acest lucru este verificarea de stat, iar după această stare de actualizare la 2.

astfel încât, în acest fel puteți cere fiecare întrebare în parte elev ca pe starea lor și să-l răspundă.

Am făcut același lucru într-o manieră mai exactă.

Sper că acest lucru ar fi de ajutor pentru tine.

Publicat 16/09/2016 la 09:38
sursa de către utilizator

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