问题 如何将Luis集成到bot构建器中


我正在尝试使用 FormBuilder 结合我的意图,因为我创建了它们 路易斯。我只是找不到这样做的文档。

我想做以下事情:

  1. 用户将输入用其解释的短语 路易斯
  2. 如果不是短语中给出所有实体,则表单构建器将填补空白。

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


7867
2018-04-26 19:23


起源

我发现这是一篇很好的文章: c-sharpcorner.com/article/... - PhuocLe


答案:


简而言之 : 

这是一些步骤 (但你一定要遵循我链接的指南):

基本上它是一个继承的类 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);
        }
    }

16
2018-05-02 10:31



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