Ich verwende Microsoft bot Rahmen einen Bot zu erstellen und direkten Kanal mit in Web zu integrieren, das Gespräch application.During, muss ich Lesezeichen oder wie die Nachricht oder Antwort des bot.Wie man Mitteilung Lesezeichen botframework mit
Antwort
Bot-Framework nicht über diese functionailty in SDKs implementieren. Sie können die Middleware-Funktion nutzen, um sie selbst zu implementieren.
Allgemeine Idee ist, können Sie alle Aktivität Nachrichtenpaare mit Ihren Benutzern speichern. Und ein global message handlers für mark
oder like
erstellen oder jede Nachricht in Middleware erkennen Benutzer zu überprüfen, ob die mark
oder like
. Wenn Sie das Tag mard
für die zuletzt gespeicherte Nachricht markieren können.
Für das Beispiel der Middleware-Verwendung, siehe https://github.com/Microsoft/BotBuilder-Samples/tree/master/CSharp/core-Middleware für C# und https://github.com/Microsoft/BotBuilder-Samples/tree/master/Node/capability-middlewareLogging für Node.js.
Alle weiteren Bedenken, bitte zögern Sie nicht, lassen Sie es mich wissen.
Umsetzung der IActivityLogger, die im Namensraum Microsoft.Bot.Builder.History gibt es die IMessageActivity Nachricht in einer DB oder einem Cache zu speichern/Lesezeichen.
IActivityLogger wird intercept jede Nachricht von Ihrem Dialog, die IDialog-Schnittstelle implementiert.
Dies ist für jede Nachricht abfängt, die gesendet wird und empfangen zu fro von dem Benutzer und der bietet.
1) Für Dialoge die iDialog Schnittstelle implementiert:
using Microsoft.Bot.Builder.History;
using Microsoft.Bot.Connector;
using MongoDB.Bson;
using MongoDB.Driver;
using System;
using System.Threading.Tasks;
namespace DemoBot.Dialogs
{
public class Logger : IActivityLogger
{
private readonly IMongoClient client;
private readonly IMongoCollection<BsonDocument> collection;
public Logger()
{
client = new MongoClient();
collection = client.GetDatabase("test").GetCollection<BsonDocument>("botLog");
}
public Task LogAsync(IActivity activity)
{
IMessageActivity msgToBeLogged = activity.AsMessageActivity();
BsonDocument objectToBeLogged = new BsonDocument
{
{ "messageText", new BsonString(msgToBeLogged.Text) },
{ "timeStamp", new BsonDateTime(Convert.ToDateTime(msgToBeLogged.Timestamp)) },
{ "recipientId", new BsonString(msgToBeLogged.Recipient.Id) },
{ "fromId", new BsonString(msgToBeLogged.From.Id) },
{ "conversationId", new BsonString(msgToBeLogged.Conversation.Id) },
{ "fromName", new BsonString(msgToBeLogged.From.Name) },
{ "toName", new BsonString(msgToBeLogged.Recipient.Name) },
{ "channnel", new BsonString(msgToBeLogged.ChannelId) },
{ "serviceUrl",new BsonString(msgToBeLogged.ServiceUrl) },
{ "locale", new BsonString(msgToBeLogged.Locale)}
};
return Task.Run(() =>
{
LogIntoDB(objectToBeLogged);
});
}
public void LogIntoDB(BsonDocument activityDetails)
{
collection.InsertOne(activityDetails);
}
}
}
2) für Dialoge, die die LuisDialog Klasse erben, die Logging-Code in der DispatchToIntentHandler Methode schreiben, ebenso wie es die eingehende Nachricht wird Pass durch dieses Verfahren in den entsprechenden Handler zu beheben:
using Microsoft.Bot.Builder.Dialogs;
using Microsoft.Bot.Builder.Luis;
using Microsoft.Bot.Builder.Luis.Models;
using Microsoft.Bot.Connector;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace DemoBot.Dialogs
{
[Serializable]
public class RootDialog : LuisDialog<object>
{
public Task StartAsync(IDialogContext context)
{
return Task.Run(() => { context.Wait(MessageReceived); });
}
protected override Task DispatchToIntentHandler(IDialogContext context, IAwaitable<IMessageActivity> item, IntentRecommendation bestIntent, LuisResult result)
{
IMessageActivity msgToBeLogged = context.MakeMessage();
BsonDocument objectToBeLogged = new BsonDocument
{
{ "messageText", new BsonString(msgToBeLogged.Text) },
{ "timeStamp", new BsonDateTime(Convert.ToDateTime(msgToBeLogged.Timestamp)) },
{ "recipientId", new BsonString(msgToBeLogged.Recipient.Id) },
{ "fromId", new BsonString(msgToBeLogged.From.Id) },
{ "conversationId", new BsonString(msgToBeLogged.Conversation.Id) },
{ "fromName", new BsonString(msgToBeLogged.From.Name) },
{ "toName", new BsonString(msgToBeLogged.Recipient.Name) },
{ "channnel", new BsonString(msgToBeLogged.ChannelId) },
{ "serviceUrl",new BsonString(msgToBeLogged.ServiceUrl) },
{ "locale", new BsonString(msgToBeLogged.Locale)}
};
Task.Run(() =>
{
LogIntoDB(objectToBeLogged);
});
return base.DispatchToIntentHandler(context, item, bestIntent, result);
}
public void LogIntoDB(BsonDocument activityDetails)
{
collection.InsertOne(activityDetails);
}
public Task MessageReceived(IDialogContext context, IAwaitable<IMessageActivity> item)
{
return Task.Run(() =>
{
context.Wait(MessageReceived);
});
}
}
}
für die Protokollierung ich bin mit MongoDB, aber Sie können auch SQL Server verwenden wenn Sie wünschen.
Und schließlich die Abhängigkeiten in Ihrer global.asax.cs Datei mit Autofac IoC injizieren.
using Autofac;
using DemoBot.Dialogs;
using Microsoft.Bot.Builder.Dialogs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Routing;
namespace DemoBot
{
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
Conversation.UpdateContainer(builder =>
{
builder.RegisterType<Logger>().AsImplementedInterfaces().InstancePerDependency();
});
GlobalConfiguration.Configure(WebApiConfig.Register);
}
}
}
- 1. Wie man eine Leistung durchführt Testen mit MS Botframework
- 2. Mitteilung mit codeigniter Fehler
- 3. offline Mitteilung mit Openfire
- 4. Wie erstellt man eine Lesezeichen-Schaltfläche mit Javascript?
- 5. Wie man Firefox manuelle JSON Lesezeichen Sicherung mit jq parsen?
- 6. Wie man Lesezeichen mit einem Mausklick-Ereignis auf VisualStudioCode anwendet?
- 7. Wie startet man ein Chrom-Lesezeichen mit der Windows-Befehlszeile?
- 8. Gitlab Mitteilung
- 9. Mit Live-Lesezeichen abonnieren
- 10. Azure BotFramework
- 11. Wie Lesezeichen machen die
- 12. Mercurial, "Verzweigung mit Lesezeichen"
- 13. Firebase, wie Thema Mitteilung senden
- 14. BotFramework: Wie behandelt man mehrere Entitäten für eine einzelne Absicht?
- 15. wie notification.userinfo in einer Mitteilung
- 16. ADMIN LTE Mitteilung Dropdown
- 17. Wie bekomme ich ChatBot Benutzer Latitude und Longitude mit BotFramework
- 18. Programmatisch Lesezeichen Seiten in Lesezeichen-Symbolleiste mit Firefox-Erweiterung
- 19. WF Persistenz mit zwei Lesezeichen. zweites Lesezeichen nicht möglich
- 20. Wie Lesezeichen mit Redux-Saga hinzufügen
- 21. Microsoft Botframework und Datenschutz
- 22. Integrationstest von BotFramework
- 23. Android - Mitteilung BigPictureStyle
- 24. #botframework dependency injection
- 25. Microsoft BotFramework - Vorgeschlagene Karten
- 26. kein Scrollen mit Hashtag/Lesezeichen
- 27. Wie öffne ich Lesezeichen-Manager in Netbeans
- 28. HTML/Javascript Lesezeichen Technik?
- 29. Bot an Mensch mit BotFramework (NodeJS) übergeben
- 30. Arbeiten mit BotFramework auf Xamarin Forms
Können Sie bitte "Lesezeichen" oder "Gefällt mir" klären? Wenn Sie darüber sprechen, das Ergebnis für die spätere Verwendung zu speichern. Jede serialisierbare Eigenschaft, die Sie im selben Dialogfeld haben, bleibt für die gesamte Dialogsitzung erhalten. Wenn nicht serialisierbar, treten Sie wahrscheinlich in einen Laufzeitfehler ein. –