0

Ich entwickle einen Chat-Bot mit Python, Sellerie und dem MS-Bot-Framework. Ich möchte kleine Dialoge wie folgt hinzuzufügen:Wie man den Kontext/Zustand in einem Chat-Bot verwaltet?

Benutzer: Hallo

User: Bestellen Sie mich Pommes.

Bot: ok. Adresse?

Benutzer: xyz, Zustand, 82288

Bot: Verstanden. Ich werde Pommes für Sie bestellen.

Hier, wie kann ich vorübergehend speichern Pommes darauf zugreifen, nachdem der Benutzer gibt mir die Adresse?

Auch ich denke, es sollte für meinen Anwendungsfall akzeptabel sein, zu vergessen, was die Bestellung war, wenn der Benutzer nicht für 2-3 Minuten reagiert. Also, ich kann auch eine Zeitüberschreitung für die gespeicherte Variable haben.

Ich dachte an die Verwendung von Redis. Ich denke da an in einem redis db etwa wie folgt zu speichern:

{ 
'conversationId':['orderitem':'fries','address':'state, pincode'] 
} 

im Grunde ein Schlüssel, Wert-Paar mit key = ConversationId und value = 'bestellen, Adresse'.

Also, sieht das eine gute Option aus?

+1

Es ist eine gute Wahl redis zu verwenden, aber für eine bessere Praxis hat diese im Auge: 1. verwenden Sie json bilden ats zum Speichern von Daten. 2. Sie sollten auch eine Zeitüberschreitung für Redis-Daten haben. Es ist also gut, die Benutzerdaten in einer Datei zu speichern, wenn Zeitüberschreitungen verloren gehen. Dann können Sie ihren Status abrufen, wenn der Benutzer wieder zurückkehrt. Auf diese Weise verlieren Sie niemals die Benutzerstatus. – tashakori

Antwort

3

Sie sollten den Bot State REST API verwenden, um den Status innerhalb des Bot zu verwalten.

kann der bietet 3 Arten von Zustandsdaten, out-of-the-box-Verwaltung:

  1. Statusdaten für einen Benutzer auf einem bestimmten Kanal (Userdata)
  2. Statusdaten für ein Gespräch über eine spezifischer Kanal (ConversationData)
  3. Statusdaten für einen Benutzer im Rahmen eines bestimmten Gesprächs (PrivateConversationData)
+0

Ich habe das schon gemacht. Der erste Absatz selbst endet mit dem folgenden Hinweis: ** Wichtig **: 'Der Bot-Statusdienst ist nur für das Prototyping vorgesehen und nicht für die Verwendung durch Bots in einer Produktionsumgebung vorgesehen. Aus Leistungs- und Sicherheitsgründen sollten Sie einen eigenen Mechanismus für die Verwaltung von Statusdaten in der Produktionsumgebung implementieren. –

+0

Hier können Sie einige benutzerdefinierte Implementierungen sehen: https://github.com/Microsoft/BotBuilder-Azure/tree/master/CSharp /Library/Microsoft.Bot.Builder.Azure –

Verwandte Themen