繁体   English   中英

如何处理用户动作

[英]How to handle user action

我想使用c#处理Bot框架中的用户操作。 我向用户显示一些输入作为选择。 在这里,用户可能不需要任何选择。 因此,他们可以直接输入一些命令以退出。 如果用户键入Exit,而不是选择选项(Exit未在选择中列出),我需要处理退出。 默认情况下,Bot不允许输入未列出的内容。

希望可以通过Node JS( 处理用户操作 )完成此操作 我想实现以下相同的功能。

有人可以协助我吗? 任何建议,将不胜感激。

如果用户键入Exit,而不是选择选项(Exit未在选择中列出),我需要处理退出。 默认情况下,Bot不允许输入未列出的内容。

您可以尝试实现全局消息处理程序 ,该处理程序在用户使用特定单词Exit答复会话时执行代码。 以下代码段供您参考。

GlobalMessageHandlersBotModule:

public class GlobalMessageHandlersBotModule : Module
{
    protected override void Load(ContainerBuilder builder)
    {
        base.Load(builder);

        builder
            .Register(c => new ExitScorable(c.Resolve<IDialogTask>()))
            .As<IScorable<IActivity, double>>()
            .InstancePerLifetimeScope();
    }
}

ExitScorable:

public class ExitScorable : ScorableBase<IActivity, string, double>
{
    private readonly IDialogTask task;

    public ExitScorable(IDialogTask task)
    {
        SetField.NotNull(out this.task, nameof(task), task);
    }

    protected override async Task<string> PrepareAsync(IActivity activity, CancellationToken token)
    {
        var message = activity as IMessageActivity;

        if (message != null && !string.IsNullOrWhiteSpace(message.Text))
        {
            if (message.Text.ToLower().Equals("exit", StringComparison.InvariantCultureIgnoreCase))
            {
                return message.Text;
            }
        }

        return null;
    }

    protected override bool HasScore(IActivity item, string state)
    {
        return state != null;
    }

    protected override double GetScore(IActivity item, string state)
    {
        return 1.0;
    }

    protected override async Task PostAsync(IActivity item, string state, CancellationToken token)
    {
        this.task.Reset();
    }
    protected override Task DoneAsync(IActivity item, string state, CancellationToken token)
    {
        return Task.CompletedTask;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM