如何将 Luis 集成到机器人构建器中

Posted

技术标签:

【中文标题】如何将 Luis 集成到机器人构建器中【英文标题】:How to integrate Luis into bot builder 【发布时间】:2016-08-20 19:36:17 【问题描述】:

我正在尝试将FormBuilder 与我在Luis 中创建的意图结合使用。我只是找不到执行此操作的文档。

我想做以下事情:

    用户会输入一个用 Luis 解释的短语。 如果短语中未提供所有实体,则表单构建器将填补空白。

我该怎么做?有教程吗?我看到人们在谈论LuisDialogs,但我就是不知道从哪里开始。

【问题讨论】:

我发现这是一篇好文章:c-sharpcorner.com/article/… 【参考方案1】:

简而言之:

首先您必须在 luis.ai 上创建一个帐户。 然后您需要遵循此文档:http://docs.botframework.com/sdkreference/csharp/dialogs.html(它以经典 Dialogs 开始,但以 Luis 集成结束。)

这里有一些步骤(但你一定要按照我链接的指南):

基本上它是一个继承 LuisDialog<object> 的类,你必须在它上面加上你的 Luis id 和秘密的属性

[LuisModel("c413b2ef-382c-45bd-8ff0-f76d60e2a821", "6d0966209c6e4f6b835ce34492f3e6d9")]
[Serializable]
public class SimpleAlarmDialog : LuisDialog<object>
 [...]

然后你将方法添加到你的类并用LuisIntent(...) 属性装饰它们。

 [LuisIntent("builtin.intent.alarm.turn_off_alarm")]
 public async Task TurnOffAlarm(IDialogContext context, LuisResult result)
  [...]

在方法内部,您可以使用如下代码搜索是否找到实体:

EntityRecommendation title;
if (result.TryFindEntity(Entity_Alarm_Title, out title))

    what = title.Entity;

else

    what = DefaultAlarmWhat;

最后,要启动对话框,你必须在你的控制器内部调用这个:

public async Task<Message> Post([FromBody]Message message)
    
        if (message.Type == "Message")
        
            // return our reply to the user
            return await Conversation.SendAsync(message, () => new EchoDialog());
        
        else
        
            return HandleSystemMessage(message);
        
    

【讨论】:

谢谢!我查看了 PizzaBot 示例,并设法让我的代码正常工作:-) 完美!您能否将答案标记为有用,以便其他有相同问题的人可以依赖它? :) 如果没有提供实体,如何提示用户在第二步只提供实体信息?我是否需要更新 Luis 模型才能将 1 个单词作为实体并将其与意图链接?

以上是关于如何将 Luis 集成到机器人构建器中的主要内容,如果未能解决你的问题,请参考以下文章

如何在界面构建器中使用框架中的 UIView 子类

我如何从两个已经训练好的分类器中构建一个分类器?

在界面构建器中使用约束

如何使用情节提要在界面构建器中连接自定义 UIView?

如何使用 symfony 在教义查询构建器中选择表之间的特定连接?

FLUTTER:如何在流构建器中使用导航器?