繁体   English   中英

使用LUIS的多语言机器人

[英]Multi-language bot using LUIS

我试图通过检测语言并选择适当的LUIS键和字符串集来创建一个多语言机器人。 我的问题是,我的LuisDialog进行了序列化,并且不再调用MakeRoot方法。

我的代码(大致):

 public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
 {
    if (activity.Type == ActivityTypes.Message)
    {
        var languageData = DetectLanguage(activity); // here I have the keys, strings etc.

        await Conversation.SendAsync(activity, () => new Dialogs.RootDialog(languageData));
    }
    else
    {
        HandleSystemMessage(activity);
    }
    var response = Request.CreateResponse(HttpStatusCode.OK);
    return response;
}

我试着与中间对话框,选择语言和context.Forward一切的LuisDialog,但我有管理该挣扎。 如果这是一个好的策略,我可以共享更多代码。 我也在考虑得分。

如果您需要在开始时切换LUIS对话框的语言

您必须制定一种方法来按语言获取每个LUIS参数,并且随着您对DetectLanguage ,选择正确的语言。

然后将它们传递给LuisDialog,如下所示:

public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
    if (activity.Type == ActivityTypes.Message)
    {
        var languageData = DetectLanguage(activity); // here I have the keys, strings etc.

        var luisService = new LuisService(new LuisModelAttribute("yourLuisAppIdGivenTheLanguageData", "yourLuisAppKeyGivenTheLanguageData", domain: "yourLuisDomainGivenTheLanguageData"));
        await Conversation.SendAsync(activity, () => new Dialogs.RootDialog(luisService));
    }
    else
    {
        HandleSystemMessage(activity);
    }
    var response = Request.CreateResponse(HttpStatusCode.OK);
    return response;
}

您的RootDialog应该看起来像这样:

public class RootDialog : LuisDialog<object>
{
    public RootDialog(params ILuisService[] services) : base(services)
    {
    }

如果您有更复杂的项目

我们实施了一个复杂的项目,允许随时切换语言。 由于这种可能性,即使您在处理开始时将其覆盖,也无法完全信任活动的语言环境字段。

该策略如下:

  • 对于每个传入的消息,在MessagesController的Post方法中检测用户的语言
  • 更改时将用户语言存储在机器人状态(userData)中

然后:

  • 显示文本时,请使用userData以正确的语言获取值
  • 使用LUIS之类的语言特定工具时,请使用userData获取正确的参数

您将需要一个中间的RootDialog来处理此LUIS语言切换,并且您必须在每次检测后完成LuisDialog(或在LuisDialog上收到每个MessageReceive之前检查语言)。

暂无
暂无

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

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