访问LuisContent方法中的原始(用户)消息文本(MBF版本3)

本文关键字:文本 消息 MBF 版本 LuisContent 用户 原始 访问 方法 | 更新日期: 2023-09-27 18:00:16

我正在尝试访问Microsoft Bot Framework(版本3)C#项目中使用的LuisModel类中的LuisIntent方法中的原始消息。然而,我自己似乎无法理解,也没有在相关的StackOverflow问题中提出任何建议(因为这涉及MBF版本1)。

我试着在GitHub上评论一个相关的问题,但没有成功。

有人知道如何获取触发该方法的用户消息吗?

访问LuisContent方法中的原始(用户)消息文本(MBF版本3)

更新(08/09/2016)

自最新版本(3.2.0)以来,感谢您的提交(https://github.com/Microsoft/BotBuilder/commit/f156a60880e86f7b853b1f94a5546386436ac3d0)

现在我们可以直接从意向处理程序获得活动

样本代码

public async Task Test(IDialogContext context, IAwaitable<IMessageActivity> origin, LuisResult result)

原始答案(2016年8月5日)

您可以有一个属性来存储原始活动,并将其分配到MessageReceived

public class YourDialog : LuisDialog<string>
{    
    [NonSerialized]
    private IMessageActivity _originActivity;
    internal YourDialog()
    {
    }
    [LuisIntent("IntentionConstant.Empty")]
    public async Task HandleLuisResult(IDialogContext context, LuisResult result)
    {
        try
        {
            // you can access _originActivity here
        }
        catch (Exception ex) when(ex is ApplicationException)
        {
            throw;
        }
        catch (Exception ex) when (ex is TaskCanceledException)
        {
        }
    }
    protected override async Task MessageReceived(IDialogContext context, IAwaitable<IMessageActivity> item)
    {
        _originActivity = await item;
        await base.MessageReceived(context, item);
    }
}