Ich möchte eine Möglichkeit implementieren, einen Benutzer zu verwalten, der viele Nachrichten in einem Zeitintervall (z. B. 3 Sekunden) sendet, sodass der Chatbot nur auf die letzte antwortet.
Eingabebeispiel (im Abstand von 3 Sekunden):
-Hi -Hi -Hi -Hilfe Ergebnis: Der Chatbot antwortet nur auf die Hilfe-Nachricht.
Danke im Voraus.
Sie können die Middleware-Funktion nutzen, um jede Nachricht abzufangen, mit der Sie jede Nachricht jedes Benutzers im Cache speichern können. Wenn Ihr Bot eine neue Nachricht erhält, können Sie diese Informationen im Cache vergleichen und dann entscheiden, ob der Fluss fortgesetzt werden muss.
Npde.js-Code-Snippet für den Schnelltest:
const moment = require('moment');
let lastMessage = null;
let lastMessageTime = null;
bot.use({
receive: (session, next) => {
let currentMessage = session
if (currentMessage.text !== lastMessage) {
lastMessage = currentMessage.text;
lastMessageTime = currentMessage.timestamp;
next();
} else {
if (moment(currentMessage.timestamp) - moment(lastMessageTime) >= 3000) {
lastMessageTime = currentMessage.timestamp;
next();
}
}
}
})
Was Sie beachten müssen, ist, dass Sie in der Produktionsumgebung die Nachricht mit der Sitzungs-/Benutzer-ID speichern müssen. ZB Verwenden der Sitzungs-/Benutzer-ID als Präfix der Nachricht und des Zeitstempelschlüssels im Cache.
Bitte beachten Sie https://docs.microsoft.com/en-us/bot-framework/dotnet/bot-builder-dotnet-middleware für , wie man Nachrichten versenden , in C # und beziehen sich auf https://docs.microsoft.com /en-us/bot-framework/nodejs/bot-builder-nodejs-intercept-messages für die Node.js-Version.
Ich hoffe es hilft.
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen