2016-01-28 17 views
6

zacząłem pisać logiki bot do telegramu za pomocą tego moduleWęzeł Telegram bot api, nawiązać rozmowę łańcucha między użytkownikiem

mogę tworzyć proste pytanie i logiki odpowiedzi tak:

bot.onText(/\/start/, function(msg, match){ 
    bot.sendMessage(msg.chat.id, "Hello this is great bot"); 
}); 

gdy użytkownik typy /start on otrzyma tę wiadomość.

Chcę utworzyć coś w rodzaju przykutej rozmowy między bota a użytkownikiem. Podobnie jak w przypadku typów użytkowników /buy bot pokaże opcje do kupienia, po tym jak użytkownik wpisze, co chce kupić, bot pokaże typy wybranego produktu i tak dalej.

Jak można utworzyć powiązaną rozmowę między użytkownikiem a botem? Jak sprawić, by bot zapamiętał poprzednie wybrane polecenia i zresetował je, gdy nadejdzie czas? Czy muszę to zrobić w mojej własnej bazie danych?

Odpowiedz

8

Możesz to zrobić na różne sposoby.

  1. można przechowywać „stan” użytkownik jest w siebie
  2. Można użyć wielu poleceń, które będą działać na własną rękę, ale po prostu dać użytkownikowi poczucie prowadzony
  3. Można użyć ForceReply API Bot

porządku. Tak więc dla 1. powiedziałbym, że masz pewne zalety. Możesz rzeczywiście prowadzić użytkownika i ograniczyć dostęp do niektórych poleceń, gdy nie jest w odpowiednim stanie. Powiedzmy więc, że chce kupić Popcorn, ale jest on w shoestore, którego nie pozwolisz, sprawdzając zapisany stan użytkownika.

Dla użytkownika 2. użytkownik zawsze będzie mógł używać /buy i /buy_popcorn i /buy_shoe. Ale w zależności od twoich odpowiedzi, dajesz mu określoną ilość możliwych wyborów.

User: /buy 

What do you want to buy? /shoes or /food :Bot 

User: /food 

How about some Popcorn? Use /buy_popcorn :Bot 

User: /buy_shoe 

Alright. Shoes added to cart :Bot 

To byłoby dozwolone, ale użytkownik będzie musiał ręcznie pisać /buy_shoe

3. możliwym sposobem jest użycie ForceReply. Użytkownik automatycznie otrzyma wiadomość o numerze: answer to. Więc kiedy użyje /buy_shoe, odpowie na ostatnią wiadomość wysłaną przez bota. Otrzymasz również wiadomość, na którą użytkownik odpowiedział w wiadomości od api. Możesz sprawdzić, czy wiadomość, na którą odpowiedział użytkownik, to właściwy warunek wstępny/odpowiedni komunikat dla polecenia, a następnie ograniczyć lub zezwolić na polecenie.

User: /buy 

What do you want to buy? /shoes or /food :Bot 

User: [Answer to: What do you...] /food 

How about some Popcorn? Use /buy_popcorn :Bot 

User: [Answer to: How about some...] /buy_shoe 

Sorry, but you're currently in the Food Store :Bot 

Sprowadza się to do osobistych preferencji, tak myślę. Ale wszystko to ma zalety i wady i musisz zdecydować, czy chcesz zezwolić na konkretne polecenia bez warunku.

Ta lista może być niekompletna. Możliwe, że istnieją inne sposoby, o których nie myślałem. Ale te 3 sposoby są znane.

+0

Dzięki za odpowiedzi. –