La meilleure façon de stocker les réponses des utilisateurs dans Facebook bot le chat?

voix
4

Construire un robot messager Facebook en utilisant Claudia JS et le plan sur l'hébergement sur AWS Lambda.

Je veux demander à l'utilisateur une série de questions.

Lorsqu'un utilisateur répond avec une réponse, je dois garder pour plus tard et une fois que j'ai toutes les informations dont j'ai besoin, je passerai les réponses à une fonction.

Quelle est la meilleure façon d'enregistrer ces informations?

Je pensais une couche de mise en cache, comme Redis, mais parce que c'est stocké dans la RAM je perdre lorsque le serveur lamda arrête. MongoDB a apparemment beaucoup de frais généraux lors de la connexion mais au moins être persistant.

Peut-être juste un simple serveur mySQL?

Comment tout le monde le faire? Je me sens comme il y a une solution simple qui me manque.

Créé 13/09/2016 à 05:47
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
5

Je vais d' abord répondre à la partie sur la façon dont je le fais : J'utilise un MongoDB. Je jouai avec les idées que vous avez mentionnés, mais rapidement biffé solutions en mémoire (Memcached, Redis) avec la même raison. Ma solution finale est descendu soit un DB relationnelle ou un NoSQL comme MongoDB. Pour être honnête, à l'échelle de mon projet, je ne pensais pas à comparer les performances entre les types robustement DB.

Avec ma caractéristique particulière « feuille de route », je décide d'aller avec Mongo d'approcher un style plus « POO » lorsqu'ils traitent avec l'utilisateur « objet » sans avoir à définir explicitement une classe d'utilisateurs, grâce à la structure normalisée de Mongo. Je comprends la même chose pourrait être fait pour MySQL, aussi, juste que le traitement des jsondonnées est plus « objet comme » pour moi et flask, ce user = getUserFromMongoqui me donne un dict en Python alors je peux le faire user['first_name']. Les codes belows expliquer cette simplicité:

Interagir avec MongoDB (D'une certaine manière ce fut l'impression que ... ne pas avoir à écrire des commandes SQL pour une interaction simple base de données dans Rails)

Mon objet utilisateur des données sur MongoDB utilisateur

Enfin, quant à la façon dont je gère l' entrée d'utilisateur , j'ai adopté le concept de Wit.ai de context. Je ne sais pas comment ils le font exactement, mais contextpour moi le type de fin de conversation qui se passe. Je l' utilise comme une pile, et dès que le contexte actuel est fait, pop hors les données de contexte de l'utilisateur. Pour chaque message que le bot reçoit, le programme aura le contexte actuel et de diriger le flux. Chaque fois qu'une erreur inconnue se produit (traitement des exceptions), très probablement parce que l'utilisateur dit quelque chose que le robot ne comprend pas, j'effacer les contextdonnées, aussi.

La bonne nouvelle à propos de MongoDB est que je peux façonner le contextmais je veux et le traiter comme un objet. Un simple est comme {name: yelp-search, stage:ask-for-user-location}, et j'imagine que les complexes pourraient être construits sur cette structure, aussi. Bien sûr, une implémentation de la pile de contextne traite pas de la conversation complexe avec référence complexe passé.

Je mets mon projet sur Github si vous voulez jeter un coup d' oeil.

Créé 15/09/2016 à 20:17
source utilisateur

voix
3

Je l' ai aussi utilisé MySQL pour chatbot mais je l' ai utilisé NodeJS pour le back - end app.For que mysql le module serait très utile.

Vous devez stocker l' état actuel des utilisateurs pour la session de questions et réponses et aussi stocker la réponse elle - même de l'utilisateur et vous avez besoin de faire un commutateur ou si-else, si le cas pour poser des questions à l' utilisateur en fonction de son état comme interrupteur (état) et en cas de commutation à jour juste est state.and vous avez facebook-id utilisateur objet événement de chatbot afin que vous puissiez stocker des données de chaque utilisateur individuellement avec leur état et de questions-réponses dans différents tableau.

Pour exemple, définir des drapeaux {1,2,3}

l'état de l'utilisateur sera 1 begining donc lui demander question-1 par exemple seulement, et stocker cette réponse comme-1, vous pouvez le faire par sa vérification de l'état, et après ce statut de mise à jour 2.

donc, de cette façon vous pouvez demander à chaque question de chaque élève selon leur état et lui répondre.

Je l'ai fait la même manière exacte ci-dessus.

Espérons que cela serait utile pour vous.

Créé 16/09/2016 à 09:38
source utilisateur

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