Mejor manera de almacenar las respuestas de los usuarios de Facebook chat bot?

votos
4

La construcción de un robot mensajero Facebook usando Claudia JS y el plan de alojamiento en AWS Lambda.

Quiero pedir al usuario una serie de preguntas.

Cuando un usuario responde con una respuesta, tengo que guardar para más tarde y una vez que tenga toda la información que necesito, voy a transmitir las respuestas a una función.

¿Cuál es la mejor manera de guardar esta información?

Estaba pensando en alguna capa de almacenamiento en caché como Redis pero debido a que se almacena en la memoria RAM no perderla cuando el servidor lambda se apaga. Mongodb aparentemente tiene una gran cantidad de gastos generales cuando se conecta, pero al menos será persistente.

Tal vez sólo un simple servidor MySQL?

¿Cómo hacer que todos los demás? Siento que hay una solución simple que me falta.

Publicado el 13/09/2016 a las 02:47
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
5

Primero voy a responder a la parte acerca de cómo lo estoy haciendo : estoy usando un MongoDB. Jugué con las ideas que usted ha mencionado, pero rápidamente tachado soluciones en memoria (Memcached, Redis) con la misma razón. Mi solución final se redujo a una base de datos relacional, ya sea o una NoSQL como MongoDB. Para ser honesto, a escala de mi proyecto, yo no pensaba en comparación con firmeza el rendimiento entre los tipos de base de datos.

En particular con mi función de "hoja de ruta", me decidí a ir con Mongo para acercarse a un estilo más "POO" cuando se trata con el usuario "objeto" sin tener que definir explícitamente una clase de usuario, gracias a la estructura normalizada de Mongo. Entiendo que la misma se podría hacer para MySQL, también, al igual que el procesamiento jsonde datos es más "objeto-como" para mí y flask, es decir user = getUserFromMongo, que me da un diccionario en Python entonces yo sólo puedo hacer user['first_name']. Los códigos belows explicarán esta simplicidad:

Interactuar con MongoDB (De alguna manera esto se sentía como ... no tener que escribir comandos SQL para la interacción simple base de datos en Rails)

Mi usuario de datos objeto en MongoDB usuario

Por último, en cuanto a cómo manejo la entrada del usuario , adopté concepto de la Wit.ai context. No sé cómo lo hacen exactamente, pero una contextpara mí es el tipo de objetivo conversación que está pasando. Yo lo uso como una pila, y tan pronto como el contexto actual se hace esto, el pop de los datos de contexto del usuario. Por cada mensaje que recibe el robot, el programa obtendrá el contexto actual y dirigir el flujo. Siempre que se produzca un error desconocido (manejo de excepciones), muy probablemente debido a que el usuario está diciendo algo que el robot no entiende, puedo borrar los contextdatos, también.

Lo bueno de MongoDB es que puedo dar forma al contextembargo que quiero y tratarla simplemente como un objeto. Un sencillo es como {name: yelp-search, stage:ask-for-user-location}, y me imagino que los complejos se podrían basar en esa estructura, también. Por supuesto, una implementación de la pila contextno se ocupa de la conversación compleja con el complejo de referencia anterior.

Me puse mi proyecto en Github si quieres echar un vistazo a él.

Respondida el 15/09/2016 a las 17:17
fuente por usuario

votos
3

También he utilizado MySQL para conversacional pero he utilizado NodeJS para el backend app.For que mysql módulo sería muy útil.

Es necesario para almacenar el estado actual de los usuarios para la sesión de preguntas de respuesta y también almacenar la respuesta en sí por parte del usuario y que necesita para hacer un interruptor o si-else-if caso de hacer preguntas a usuario en función de su estado como interruptor (estado) y en casos de interruptor acaba de actualizar su state.and tiene facebook-id de usuario en caso objeto de conversacional para que pueda almacenar los datos de cada usuario de forma individual con su estado y de preguntas y respuestas en diferentes mesa.

Para por ejemplo, definir banderas {1,2,3}

Estado de usuario será 1 en begining así lo solicite por ejemplo, pregunta-1 solamente, y almacenar esto como respuesta-1, usted puede hacer esto por ella es la comprobación de estado, y después de este estado de actualización a 2.

por lo que, de esta manera se puede pedir a cada pregunta individual del estudiante según su estado y le responderán.

Yo he hecho lo mismo en la forma anterior exacta.

Espero que esto sería útil para usted.

Respondida el 16/09/2016 a las 06:38
fuente por usuario

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