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

时间:2016-08-04 15:34:00

标签: c# .net botframework luis

我正在尝试使用Microsoft Bot Framework(版本3)C#项目中使用的LuisIntent类中的LuisModel方法访问原始邮件。但是,我似乎无法自己弄明白,也没有在a related StackOverflow question工作中提出任何建议(因为这涉及到MBF版本1)。

我尝试评论a related issue on GitHub,但没有成功。

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

1 个答案:

答案 0 :(得分:1)

更新(08/09/2016)

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

现在我们可以直接从意图处理程序

获取活动

示例代码

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

原始答案(05/08/2016)

您可以拥有一个属性来存储原始活动,并将其分配到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);
    }
}