Der beste Weg, zu speichern Antworten von Nutzern in Facebook Bot Chat?

stimmen
4

Der Aufbau eines Facebook Messenger Bot mit Claudia JS und Plan auf AWS Lambda auf Hosting.

Ich möchte dem Anwender eine Reihe von Fragen zu stellen.

Wenn ein Benutzer mit einer Antwort reagiert, muss ich für später speichern und sobald ich die alle Informationen, die ich brauche, werde ich die Antworten auf eine Funktion übergeben.

Was ist der beste Weg, um diese Informationen zu speichern?

Ich war einige Caching-Schicht wie redis denken aber, weil das im RAM gespeichert ist, werde ich es verlieren, wenn Lamda-Server heruntergefahren. Mongodb hat offenbar viele Gemeinkosten bei der Verbindung wird aber zumindest hartnäckig sein.

Vielleicht nur ein einfacher mySQL-Server?

Wie funktioniert alle anderen es tun? Ich fühle mich wie es eine einfache Lösung ist, dass ich fehle.

Veröffentlicht am 13/09/2016 um 05:47
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
5

Ich werde zunächst den Teil über beantworten , wie ich es mache : Ich bin mit einem MongoDB. Ich spielte mit den Ideen , die Sie erwähnen, aber überquerte schnell Lösungen im Speicher aus (Memcached, Redis) mit dem gleichen Grunde. Meine letzte Lösung kam entweder ein relationales DB oder eine NoSQL wie MongoDB. Um ehrlich zu sein, in großem Umfang meines Projektes, ich hätte nicht gedacht , um robust Vergleich der Leistung zwischen DB - Typen.

Mit meinem besonderen Merkmale „Roadmap“ , entschied ich mich , mit Mongo zu gehen , um einen weiteren „OOP“ Stil zu nähern , wenn sie mit dem Benutzer „Objekt“ zu tun , ohne dass explizit eine Benutzerklasse, dank der normalisierten Struktur von Mongo definieren. Ich verstehe das gleiche könnte für MySQL getan werden, auch, nur dass die Verarbeitung jsonDaten mehr „Objekt-like“ ist für mich und flask, also user = getUserFromMongo, was mich ein dict in Python gibt , dann kann ich nur tun user['first_name']. Die Codes belows wird diese Einfachheit erklären:

Interagieren Sie mit MongoDB (Irgendwie war dieses Gefühl, wie ... nicht SQL-Befehle für die einfache Datenbank-Interaktion in Rails schreiben)

Meine Benutzerobjektdaten auf MongoDB Benutzer

Schließlich wird , wie zu , wie ich eine Benutzereingabe verwalten nahm ich Wit.ai Begriff context. Ich weiß nicht , wie sie es tun genau, aber ein contextfür mich ist die Art der Konversation Zweck, was geschieht. Ich benutze es wie ein Stapel, und sobald der aktuelle Kontext erfolgt, pop es die Kontextdaten des Benutzers ab. Für jede Nachricht erhält der Bot, wird das Programm den aktuellen Kontext erhalten und den Fluss leiten. Jedes Mal , wenn ein unbekannter Fehler (Behandlung von Ausnahmen) auftritt, wahrscheinlich , weil der Benutzer etwas zu sagen ist der Bot versteht nicht, lösche ich die contextDaten auch.

Das gute Teil über MongoDB ist , dass ich die Form kann contextaber ich will , und behandeln sie nur als Objekt. Ein einfacher ist wie {name: yelp-search, stage:ask-for-user-location}, und ich denke , komplex auf dieser Struktur errichtet werden könnte, auch. Natürlich ist eine Stack - Implementierung die contextnicht mit komplexem Gespräch mit komplexer Vergangenheit Bezug befassen.

Ich legte mein Projekt auf Github , wenn Sie einen Blick auf sie zu nehmen.

Beantwortet am 15/09/2016 um 20:17
quelle vom benutzer

stimmen
3

Ich habe auch verwendet mysql für chatbot aber ich habe verwendet NodeJS für das Backend app.For dass mysql - Modul wäre sehr hilfreich.

Sie müssen aktuellen Status von Benutzern speichert für die Frage - Antwort - Sitzung und auch speichern Sie die Antwort selbst von dem Benutzer und Sie brauchen einen machen Schalter oder if-else-if Fall für Fragen Benutzer basierend auf ihren Zustand als Schalter (Zustand) zu fragen und in den Fällen des Schalters aktualisiert nur , es ist state.and Sie haben Benutzer Facebook-ID in Ereignisobjekt von chatbot so dass Sie Daten von jedem Benutzer individuell mit ihrem Staat und Frage-Antwort in verschiedener Tabelle speichern können.

Für zB definieren Flaggen {1,2,3}

Benutzer-Zustand 1 in begining so bittet ihn um zB Frage 1 nur sein wird, und speichern Sie diese als Antwort-1, Sie können dies tun, indem es staatliche Kontrolle, und nach diesem Update-Status 2.

so, auf diese Weise können Sie jeden einzelnen Schüler fragen nach ihrem Zustand und ihm antworten.

Ich habe das gleiche in genau über Art und Weise.

Hoffe, dass dies für Sie hilfreich sein würde.

Beantwortet am 16/09/2016 um 09:38
quelle vom benutzer

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