在 LuisIntent 方法(MBF 版本 3)中访问原始(用户)消息文本
Access original (user) message text in a LuisIntent method (MBF version 3)
我试图在 LuisModel
class 的 LuisIntent
方法中访问原始消息,我在 Microsoft Bot Framework(版本 3)C# 项目中使用。但是,我自己似乎无法弄清楚, 中提出的任何建议也不起作用(因为这涉及 MBF 版本 1)。
我尝试在 a related issue on GitHub 上发表评论,但没有成功。
有谁知道如何获取触发该方法的用户消息?
更新 (08/09/2016)
自最新版本 (3.2.0) 以来,感谢您的提交 (https://github.com/Microsoft/BotBuilder/commit/f156a60880e86f7b853b1f94a5546386436ac3d0)
现在我们可以直接从 Intent 处理程序中获取 activity
示例代码
public async Task Test(IDialogContext context, IAwaitable<IMessageActivity> origin, LuisResult result)
原始答案 (05/08/2016)
你可以有一个 属性 来存储原点 activity 并将其分配到 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);
}
}
我试图在 LuisModel
class 的 LuisIntent
方法中访问原始消息,我在 Microsoft Bot Framework(版本 3)C# 项目中使用。但是,我自己似乎无法弄清楚,
我尝试在 a related issue on GitHub 上发表评论,但没有成功。
有谁知道如何获取触发该方法的用户消息?
更新 (08/09/2016)
自最新版本 (3.2.0) 以来,感谢您的提交 (https://github.com/Microsoft/BotBuilder/commit/f156a60880e86f7b853b1f94a5546386436ac3d0)
现在我们可以直接从 Intent 处理程序中获取 activity
示例代码
public async Task Test(IDialogContext context, IAwaitable<IMessageActivity> origin, LuisResult result)
原始答案 (05/08/2016)
你可以有一个 属性 来存储原点 activity 并将其分配到 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);
}
}