Najlepszym sposobem przechowywania odpowiedzi od użytkowników w Facebooku bot czat?

głosy
4

Budowanie robotów przy użyciu komunikatora Facebook Claudia JS i plan na hostingu na AWS Lambda.

Chcę zadać użytkownikowi szereg pytań.

Gdy użytkownik odpowiada odpowiedź, muszę zapisać to na później, a raz mam wszystkie informacje potrzebne, będę przechodzić odpowiedź do funkcji.

Jaki jest najlepszy sposób, aby zapisać tę informację?

Myślałam jakąś warstwę buforowania takich jak REDiS ale dlatego, że są przechowywane w pamięci RAM będę go stracić, gdy serwer lambda wyłączy. MongoDB widocznie ma dużo ogólnych gdy łączących ale przynajmniej być trwałe.

Być może tylko prosty serwer MySQL?

Jak wszyscy inni to robią? Czuję, że istnieje proste rozwiązanie, które mi brakuje.

Utwórz 13/09/2016 o 05:47
źródło użytkownik
W innych językach...                            


2 odpowiedzi

głosy
5

Ja najpierw odpowiedzieć na część o jak ja to robię : Używam MongoDB. I bawił się z ideami pan wspomniał, ale szybko przeszedł w pamięci rozwiązań (memcached, Redis) z tego samego powodu. Moje ostateczne rozwiązanie sprowadza się do jednej relacyjnej DB lub NoSQL jak MongoDB. Szczerze mówiąc, w skali mojego projektu, ja nie sądzę o solidnie porównanie wydajności między typami DB.

Z moją szczególną cechę „mapy drogowej”, postanowiłem pójść z Mongo zbliżyć się bardziej „OOP” styl w kontaktach z użytkownikiem „obiekt”, bez konieczności jednoznacznie zdefiniować klasę użytkownika, dzięki znormalizowanej konstrukcji Mongo. Rozumiem, że to samo można zrobić dla MySQL, też, tylko że przetwarzanie jsondanych jest bardziej „przedmiot-like” dla mnie flask, to znaczy user = getUserFromMongo, co daje mi dict w Pythonie to mogę po prostu zrobić user['first_name']. Kody belows wyjaśni tę prostotę:

Interakcji z MongoDB (Jakoś to było uczucie jak ... nie konieczności pisania poleceń SQL do bazy danych w prosty interakcji Rails)

Moje dane użytkownika obiekt na MongoDB użytkownik

Wreszcie, jeśli chodzi o sposób zarządzać wprowadzania danych przez użytkownika , I przyjął koncepcję Wit.ai użytkownikiem context. Nie wiem jak oni to robią dokładnie, ale contextdla mnie jest to rodzaj celu rozmowy, która się dzieje. Używam go jak stos, i tak szybko, jak obecny kontekst jest zrobione, pop go dane kontekście użytkownika. Do każdej wiadomości bot odbiera program dostanie bieżący kontekst i skierować przepływ. Ilekroć pojawia się nieznany błąd (wyjątki przeładunkowe), najprawdopodobniej dlatego, że użytkownik mówi coś bot nie rozumie, ja wyczyścić contextdane, too.

Dobre strony o MongoDB jest to, że mogę kształtować contextjednak chcę i traktować go tylko jako obiekt. Prosty jeden jest jak {name: yelp-search, stage:ask-for-user-location}, a ja sobie wyobrazić skomplikowanych może być zbudowany na tej struktury, too. Oczywiście, realizacja stos z contextnie zajmuje się kompleksowym rozmowie z kompleksowego odniesienia przeszłości.

I umieścić mój projekt na Github jeśli chcesz spojrzeć na niego.

Odpowiedział 15/09/2016 o 20:17
źródło użytkownik

głosy
3

Mam też stosować MySQL dla chatbota ale Użyłem NodeJS dla backend app.For tego mysql modułu byłoby bardzo pomocne.

Trzeba zapisać stan obecny użytkowników do sesji pytanie odpowiedź, a także przechowywać odpowiedź sama z użytkownikiem i trzeba zrobić przełącznik lub if-else-if sprawa do zadawania pytań do użytkownika na podstawie jego stanu jako przełącznik (stan) aw przypadku przełącznika wystarczy zaktualizować to state.and masz użytkownika facebook-ID w obiekcie zdarzeń chatbota dzięki czemu można przechowywać dane każdego użytkownika indywidualnie z ich stanu i zapytania odpowiedzi w innej tabeli.

Na przykład określenie flagi {1,2,3}

Stan autora będzie 1 na początku więc poprosić go o np pytanie-1 tylko i zapisać to jako odpowiedź-1, można to zrobić poprzez sprawdzenie swojego stanu, a po tej aktualizacji statusu do 2.

tak, w ten sposób można zadać każde pytanie indywidualnego studenta, jak na ich stan i odebrać go.

Zrobiłem dokładnie to samo w powyższy sposób.

Nadzieję, że to będzie pomocne dla Ciebie.

Odpowiedział 16/09/2016 o 09:38
źródło użytkownik

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