私はボットを作成し、直接チャネルを使ってWebアプリケーションに組み込むためにMicrosoftボットフレームワークを使用しています。会話をブックマークするか、ボットのメッセージや応答が必要です。botframeworkを使用してメッセージをブックマークする方法
答えて
ボットフレームワークは、この機能をSDKに実装していません。ミドルウェア機能を活用して自分自身を実装することができます。
一般的な考え方は、すべてのアクティビティメッセージをユーザーとペアで保存できることです。 mark
またはlike
の場合はglobal message handlersを作成するか、ミドルウェアのすべてのメッセージを検出してユーザーがmark
またはlike
の場合は確認してください。以前に保存した最後のメッセージにmard
タグを付けることができます。
ミドルウェアの使用例については、C#の場合はhttps://github.com/Microsoft/BotBuilder-Samples/tree/master/CSharp/core-Middleware、Node.jの場合はhttps://github.com/Microsoft/BotBuilder-Samples/tree/master/Node/capability-middlewareLoggingを参照してください。
さらに詳しいことがありましたら、お気軽にお知らせください。
を格納するMicrosoft.Bot.Builder.Historyネームスペース/ブックマークDBまたはキャッシュにIMessageActivityメッセージであるIActivityLoggerを実装します。
IActivityLoggerintercept IDialogインターフェイスを実装するダイアログからのすべてのメッセージです。
これは、ユーザとボットから送られてきたすべてのメッセージを傍受するためのものです。 LuisDialogクラスを継承するダイアログの
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)を、それが入ってくるメッセージは、意志れるように、DispatchToIntentHandler方法でロギングコードを書く:ダイアログがIDialogインタフェースを実現するため
1)そのメソッドを通って適切なハンドラに解決されます:
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);
});
}
}
}
私はMongoDBを使用していますが、SQL Serverも使用できますご希望の場合。
最後に、Autofac IoCを使用してglobal.asax.csファイルに依存関係を挿入します。
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. RCSをbotframeworkで使用する方法
- 2. BotFrameworkメッセージを読む
- 3. BookmarkManager.Chromeを使用してブックマーク階層を取得する方法は?
- 4. c#を使用してpdfファイルのブックマークを取得する方法
- 5. DOCXライブラリを使用してブックマークにテーブルを追加する方法C#
- 6. annotationSaveMode = PSPDFAnnotationSaveModeExternalFileをブックマークPSPDFKit 6.6に使用する方法?
- 7. Microsoft BotFramework:未処理のJSONメッセージをチャンネルに送信する方法
- 8. ブロードキャストレシーバクラスを使用してSMSメッセージを送信する方法
- 9. socket.ioを使用してメッセージを送信する方法
- 10. DataContractSerializerを使用してWCFメッセージをシリアル化する方法は?
- 11. JavaScriptを使用してwhatsappメッセージを送信する方法
- 12. chromeのonbeforeunloadを使用してメッセージを変更する方法
- 13. iChatとAppleScriptを使用してメッセージを送信する方法
- 14. テレグラムを使用してグループチャットでメッセージを受信する方法
- 15. XamarinフォームでBotFrameworkを使用する
- 16. botframework apiに対してクレデンシャルを確認する方法
- 17. LUIS.aiを使用したbotframeworkのダイアログ
- 18. WCFを使用してウィンドウを開くメッセージを渡す方法
- 19. Node.jsのMS BotFrameworkはすべてのメッセージに対して "default_error"を返します
- 20. android - ボタンをクリックしてブックマークにページを保存する方法
- 21. C#を使用してPDFブックマークのURLを編集する
- 22. itextsharpを使用してpdfにブックマークを追加する
- 23. javascriptを使用してすべてのブックマークを表示
- 24. BotFrameworkを使用してChatBotユーザーの緯度と経度を取得する方法
- 25. iTerm Mac /ブックマークをエクスポート/インポートする方法
- 26. JavaScriptを使用してメッセージを表示して非表示にするタイミングイベントを使用する方法
- 27. Facebookブックマークを使用するSend Button Android
- 28. MSMQを使用してメッセージを取得するサービスをデバッグする方法は?
- 29. Connectionオブジェクトを取得し、ラチェットを使用してメッセージを送信する方法
- 30. startActivityForResult()を使用してAndroid Appからメッセージを開く方法
「ブックマーク」または「好き」を明示できますか?後で使用するために結果を保存することについて話している場合。同じダイアログ内にあるシリアライズ可能なプロパティは、ダイアログセッション全体にとどまります。シリアライズ可能でない場合は、ランタイムエラーが発生する可能性があります。 –