history - Botframework 如何记录历史记录

标签 history botframework

您知道如何记录所有传出/传入消息吗?我不知道如何捕获传出消息。

我使用链和表格。 例如

await Conversation.SendAsync(activity, rootDialog.BuildChain);

并且

activity.CreateReply(.....);

最佳答案

我找到了更好的解决方案

    public class BotToUserLogger : IBotToUser
{
    private readonly IMessageActivity _toBot;
    private readonly IConnectorClient _client;

    public BotToUserLogger(IMessageActivity toBot, IConnectorClient client)
    {
        SetField.NotNull(out _toBot, nameof(toBot), toBot);
        SetField.NotNull(out _client, nameof(client), client);
    }

    public IMessageActivity MakeMessage()
    {
        var toBotActivity = (Activity)_toBot;
        return toBotActivity.CreateReply();
    }

    public async Task PostAsync(IMessageActivity message, CancellationToken cancellationToken = default(CancellationToken))
    {
        await _client.Conversations.ReplyToActivityAsync((Activity)message, cancellationToken);
    }
}

public class BotToUserDatabaseWriter : IBotToUser
{
    private readonly IBotToUser _inner;
    public BotToUserDatabaseWriter(IBotToUser inner)
    {
        SetField.NotNull(out _inner, nameof(inner), inner);
    }
    public IMessageActivity MakeMessage()
    {
        return _inner.MakeMessage();
    }

    public async Task PostAsync(IMessageActivity message, CancellationToken cancellationToken = default(CancellationToken))
    {
        // loging outgoing message
        Debug.WriteLine(message.Text);

        //TODO log message for example into DB

        await _inner.PostAsync(message, cancellationToken);
    }

在 Controller 中使用

 public MessagesController()
    {
        var builder = new ContainerBuilder();
        builder.RegisterType<BotToUserLogger>()
            .AsSelf()
            .InstancePerLifetimeScope();

        builder.Register(c => new BotToUserTextWriter(c.Resolve<BotToUserLogger>()))
            .AsImplementedInterfaces()
            .InstancePerLifetimeScope();
        builder.Update(Microsoft.Bot.Builder.Dialogs.Conversation.Container);
    }

关于history - Botframework 如何记录历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38832778/

相关文章:

c++ - 为什么 c/c++ 浮点类型的命名如此奇怪?

c# - Microsoft Bot Framework DirectLine 无法访问对话

c# - Ms Bot 框架 - 在哪里存储数据?

azure - 使用 Rest API 创建 Azure BOT 时出现问题

java - 提交按钮 + GWT 历史记录

facebook - 用于获取聊天对话的 FQL 查询

history - 如何理解 Burks/Warren/Wright 的 Lukasiewicz 逻辑机中的 F 函数

javascript - 哈希的使用以及用户在历史中的移动

facebook - Microsoft Bot Framework 如何设置 Facebook 消息标签

bots - 单击卡片中的按钮时如何识别特定附件?