[ LuisIntent("")]属性使用ILuisService根据LUISModel属性的值查询 LUIS,然后找出得分最高的意图并匹配重写的MessageRecievedAsync方法中的IntentHandler Delegate,并在以下方法中动态加载 LUISResult而调试继承自LuisDialog的类。
public async Task None(IDialogContext context, LuisResult result)
{
//some stuff
}
我的问题是如何制作一个自定义属性,将其映射到正确的意图处理程序。
我正在尝试将 RASA NLU 服务与 C# 中的 Microsoft Bot Framework 一起用作我的 NLP 引擎。
我正在尝试将从查询 RASA NLU 以获取 LUISResult 类型 JSON 的 HttpClient.GetAsync() 方法获得的 LUISEmulatedResult 映射到遵循此委托的方法。
我取得的进展:
[RASAIntentAttribute("IntentName")]
using Microsoft.Bot.Builder.Dialogs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Web;
namespace DemoFlightRASA.Models
{
public class RASAIntentAttribute : Attribute
{
private readonly string _intentName;
public RASAIntentAttribute(string IntentName)
{
this._intentName = IntentName;
}
//The intent handler delegate
//Now I want to map LUISEmulatedResult which I get from HttpClient.GetAsync() method to a method which follows this delegate
public delegate Task RASAIntentHandler(IDialogContext context, LUISEmulatedResult result);
}
}
LUISEmulatedResult 模型类:
namespace DemoFlightRASA.Models
{
public class LUISEmulatedResult
{
public string query { get; set; }
public Topscoringintent topScoringIntent { get; set; }
public Intent[] intents { get; set; }
public Entity[] entities { get; set; }
}
public class Topscoringintent
{
public string intent { get; set; }
public float score { get; set; }
}
public class Intent
{
public string intent { get; set; }
public float score { get; set; }
}
public class Entity
{
public string entity { get; set; }
public string type { get; set; }
public int startIndex { get; set; }
public int endIndex { get; set; }
public Resolution resolution { get; set; }
public float score { get; set; }
}
public class Resolution
{
public string[] values { get; set; }
}
}
我想创建一个端到端的流程,它在机器人框架中使用 RASA NLU 而不是 LUIS。我已经准备好 RASA NLU 端点,只是无法创建 RASAIntentAttribute。
任何关于如何将委托映射到方法的指针、提示、教程、代码片段都将不胜感激。谢谢你。