Beste manier om antwoorden van gebruikers in Facebook bot praatje te slaan?

stemmen
4

Het bouwen van een Facebook boodschapper bot met behulp van Claudia JS en plan op hosting op AWS Lambda.

Ik wil de gebruiker een reeks vragen te stellen.

Wanneer een gebruiker antwoordt met een antwoord, ik moet eerst maar door en zodra ik heb alle informatie die ik nodig heb, zal ik de antwoorden door te geven aan een functie.

Wat is de beste manier om deze informatie op te slaan?

Ik zat te denken sommige caching laag, zoals redis maar omdat die is opgeslagen in het RAM ik zal het verliezen als lambda-server wordt afgesloten. MongoDB heeft blijkbaar veel overheadkosten bij het aansluiten, maar zal minstens hardnekkig zijn.

Misschien gewoon een simpele MySQL server?

Hoe werkt iedereen anders het doen? Ik heb het gevoel alsof er een eenvoudige oplossing die ik mis.

De vraag is gesteld op 13/09/2016 om 05:47
bron van user
In andere talen...                            


2 antwoorden

stemmen
5

Ik zal eerst antwoord geven op de deel over hoe ik het doe : Ik gebruik een MongoDB. Ik speelde met de ideeën die u noemde, maar al snel doorgestreept in-memory oplossingen (Memcached, Redis) met dezelfde reden. Mijn definitieve oplossing kwam neer op ofwel een relationele database of een NoSQL als MongoDB. Om eerlijk te zijn, op schaal van mijn project, heb ik niet na te denken over robuust vergelijken van prestaties tussen DB types.

Met mijn bijzondere eigenschap "roadmap", heb ik besloten om te gaan met Mongo naar een meer "OOP" achtige benadering bij de behandeling van de gebruiker "object" zonder expliciet te definiëren een gebruiker klasse, dankzij de genormaliseerde structuur van Mongo. Ik begrijp de Hetzelfde kan worden gedaan voor MySQL, ook, alleen dat de verwerking van jsonde gegevens is meer "object-achtige" voor mij en flask, dat wil zeggen user = getUserFromMongo, die me een dict in Python dan kan ik gewoon doen geeft user['first_name']. De codes zullen belows deze eenvoud uit te leggen:

Interactie met MongoDB (Een of andere manier was dit gevoel alsof ... niet hoeven te schrijven SQL-commando's voor eenvoudige database interactie in Rails)

Mijn gebruikersnaam objectgegevens op MongoDB gebruiker

Wat ten slotte hoe ik input van de gebruiker , ik aangenomen concept van de Wit.ai's context. Ik weet niet hoe ze dat precies doen, maar contextvoor mij is het type van gesprek doel dat aan de hand is. Ik gebruik het als een stapel, en zodra de huidige context wordt gedaan, pop het uit de context gegevens van de gebruiker. Voor elk bericht de bot ontvangt, zal het programma de huidige context te krijgen en direct de stroom. Wanneer een onbekende fout optreedt (uitzonderingen hanteren), waarschijnlijk omdat de gebruiker is iets wat de bot niet zeggen te begrijpen, ik duidelijk de contextdata, ook.

Het goede deel over MongoDB is dat ik kan de vorm van de contextmaar ik wil en behandelen net als een object. Een eenvoudig is als {name: yelp-search, stage:ask-for-user-location}, en ik kan me voorstellen complexe zou kunnen worden gebouwd op die structuur, ook. Natuurlijk, een stapel uitvoering van het contextniet omgaan met complexe gesprek met complexe verwijzing verleden.

Ik zette mijn project op GitHub als u een kijkje nemen.

antwoordde op 15/09/2016 om 20:17
bron van user

stemmen
3

Ik heb ook gebruikt mysql voor chatbot , maar ik heb gebruikt NodeJS voor de backend app.For dat mysql module zeer nuttig zou zijn.

U moet de huidige stand van de gebruikers op te slaan voor de vraag- en antwoord sessie en ook opslaan het antwoord zelf van de gebruiker en je moet een make- switch of if-else-if geval voor het stellen van vragen aan de gebruiker op basis van zijn status als schakelaar (staat) en in het geval van de schakelaar gewoon te werken is het state.and je gebruiker facebook-id in geval object of chatbot , zodat u gegevens van elke gebruiker individueel met hun staat en vraag-antwoord in andere tabel kunt opslaan.

vlaggen voor bijvoorbeeld definiëren {1,2,3}

state gebruiker wordt 1 in die beginnen dus vraag hem om bv vraag-1 alleen, en bewaar dit als antwoord-1, kunt u dit doen door zijn staat controleren, en na deze update status 2.

ja, op deze manier kun je elke individuele student vraag stellen als per hun staat en hem antwoorden.

Ik heb hetzelfde in exact op bovenstaande wijze gedaan.

Hoop dat dit zou nuttig zijn voor jou.

antwoordde op 16/09/2016 om 09:38
bron van user

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