Beste måten å lagre svar fra brukere i Facebook bot chat?

stemmer
4

Bygge en Facebook messenger bot bruke Claudia JS og planlegge på hosting på AWS Lambda.

Jeg vil spørre brukeren en rekke spørsmål.

Når en bruker svarer med et svar, jeg trenger å lagre det til senere, og når jeg har all den informasjonen jeg trenger, vil jeg passerer svar på en funksjon.

Hva er den beste måten å lagre denne informasjonen?

Jeg tenkte litt caching lag som Redis men fordi det er lagret i RAM jeg vil miste det når lamda serveren avsluttes. Mongodb har tydeligvis mye kostnader ved tilkobling, men vil i det minste være vedvarende.

Kanskje bare en enkel MySQL server?

Hvordan alle andre gjør det? Jeg føler at det er en enkel løsning som jeg mangler.

Publisert på 13/09/2016 klokken 05:47
kilden bruker
På andre språk...                            


2 svar

stemmer
5

Jeg vil først besvare en del om hvordan jeg gjør det : Jeg bruker en MongoDB. Jeg lekte med ideer du nevnte, men raskt krysset ut i minnet løsninger (memcached, Redis) med samme grunn. Min endelige løsningen kom ned til enten en relasjons DB eller en NoSQL som MongoDB. For å være ærlig, på min prosjektets skala, jeg tenkte ikke på robust sammenligne resultatene mellom DB typer.

Med min bestemt funksjon "veikart", bestemte jeg meg for å gå med Mongo å nærme seg en mer "OOP" stil når du arbeider med brukeren "objekt" uten å eksplisitt definere en bruker klasse, takket være normalisert strukturen i Mongo. Jeg forstår det samme kunne gjøres for MySQL, også, bare at behandlingen jsoner data mer "objekt-like" for meg og flask, det vil si user = getUserFromMongo, som gir meg en dict i Python da kan jeg bare gjøre user['first_name']. Kodene belows vil forklare dette enkelhet:

Samhandle med MongoDB (Somehow dette var følelsen som ... ikke å måtte skrive SQL-kommandoer for enkel database samhandling i Rails)

Min brukerobjekt data på MongoDB bruker

Til slutt, som til hvordan jeg klarer brukerundersøkelser , vedtatt jeg Wit.ai begrep context. Jeg vet ikke hvordan de gjør det akkurat, men en contextfor meg er den type samtale formål som skjer. Jeg bruker det som en stabel, og så snart den gjeldende konteksten er gjort, pop den av kontekstdata til brukeren. For hver melding boten mottar, vil programmet få gjeldende kontekst og direkte flyten. Når en ukjent feil oppstår (unntak håndtering), mest sannsynlig fordi brukeren sier noe boten ikke forstår, fjerner jeg de contextdata, også.

En god del om MongoDB er at jeg kan forme den context, men jeg vil ha, og behandle det bare som et objekt. En enkel en er som {name: yelp-search, stage:ask-for-user-location}, og jeg forestille komplekse de kunne bygges på den strukturen, også. Selvfølgelig, en stabel gjennomføring av contextomhandler ikke komplisert samtale med komplekse fortid referanse.

Jeg satte mitt prosjekt på Github hvis du ønsker å ta en titt på den.

Svarte 15/09/2016 kl. 20:17
kilden bruker

stemmer
3

Jeg har også brukt mysql for chatbot , men jeg har brukt NodeJS for backend app.For at mysql -modulen vil være svært nyttig.

Du må lagre brukernes nåværende tilstanden for spørsmål svar sesjon, og også lagre svaret seg selv fra brukeren, og du trenger for å lage en bryter eller if-else-if sak for å stille spørsmål til brukeren basert på sin tilstand som bryter (stat) og i tilfeller av bryteren bare oppdatere det state.and du har brukerens facebook-id i tilfelle gjenstand for chatbot slik at du kan lagre data for hver bruker individuelt med deres tilstand og spørsmål-svar i annen tabell.

For eksempel definerer flagg {1,2,3}

brukerens staten vil være en i begynnelsen så spør ham for eksempel spørsmålet-en bare, og lagre dette som svar-en, kan du gjøre dette ved det statlige kontroll, og etter denne oppdateringen status til to.

så, på denne måten kan du spørre hver enkelt student spørsmålet som per deres tilstand og svare ham.

Jeg har gjort det samme i eksakt ovenfor måte.

Håper dette vil være nyttig for deg.

Svarte 16/09/2016 kl. 09:38
kilden bruker

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