2016-01-28 9 views
6

ich begonnen haben, indem Sie diese moduleNode Telegramm bot api, machen Kette Gespräch zwischen Benutzer

Bot Logik für Telegramm schreiben

ich einfache Frage und Antwort-Logik wie folgt erstellen:

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

Wenn Benutzer Typen /start er wird diese Nachricht erhalten.

Ich möchte etwas wie verkettete Konversation zwischen Bot und Benutzer erstellen. Wenn der Benutzer zum Beispiel /buy Optionen zum Kaufen anzeigt, nachdem der Benutzer das eingegeben hat, was er kaufen möchte, zeigt der Bot die Typen des ausgewählten Produkts an und so weiter.

Wie ist es möglich, verkettete Konversation zwischen Benutzer und Bot zu erstellen? Wie kann man sich an vorher ausgewählte Befehle erinnern und sie zurücksetzen, wenn es an der Zeit ist? Muss ich in meiner eigenen Datenbank bleiben, um das zu tun?

Antwort

8

Sie können es auf verschiedene Arten tun.

  1. Sie speichern den „Zustand“ der Benutzer ist in sich
  2. können Sie mehrere Befehle verwenden, die auf ihre eigene Arbeit, aber Sie nur dem Benutzer das Gefühl geben, geführt wird
  3. Sie verwenden können die ForceReply der Bot API

Ordnung. Also für 1. würde ich sagen, dass Sie einige Vorteile haben. Sie können den Benutzer tatsächlich führen und den Zugriff auf einige Befehle einschränken, wenn er sich nicht im richtigen Zustand befindet. Nehmen wir an, er möchte Popcorn kaufen, aber er ist im Schuhgeschäft, in dem Sie den Befehl ablehnen, indem Sie den gespeicherten Benutzerstatus überprüfen.

Für 2. würden Sie dem Benutzer immer erlauben, /buy und /buy_popcorn und /buy_shoe zu verwenden. Aber abhängig von Ihren Antworten geben Sie ihm nur eine bestimmte Anzahl von möglichen Auswahlen.

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 

Dies würde erlaubt werden, aber würde der Benutzer manuell /buy_shoe

Die 3. Art und Weise wird mit den ForceReply schreiben. Der Benutzer erhält automatisch eine Nachricht answer to. Wenn er /buy_shoe verwendet, antwortet er auf die letzte Nachricht, die der Bot gesendet hat. Sie erhalten auch die Nachricht, die der Benutzer in der Nachricht von der API beantwortet hat. Sie können überprüfen, ob die Nachricht, die der Benutzer beantwortet hat, die richtige Vorbedingung/richtige Nachricht für den Befehl ist und dann den Befehl einschränken oder zulassen.

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 

Es kommt auf persönlichen Vorlieben, denke ich. Aber alles hat Vor- und Nachteile und Sie müssen entscheiden, ob Sie bestimmte Befehle ohne Vorbedingung zulassen wollen.

Diese Liste ist möglicherweise nicht vollständig. Es könnte sein, dass es andere Wege gibt, an die ich nicht gedacht habe. Aber diese 3 Wege kenne ich.

+0

Danke für Ihre Antworten. –