我在 Luis 中创建意图时,尝试将FormBuilder与我的意图结合使用。我只是找不到文档来做到这一点。

我想做以下事情:

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

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

    最佳答案

    简而言之:

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

  • 以下是的一些步骤(但您一定要遵循我链接的指南):

    基本上,这是一个继承LuisDialog<object>的类,您必须在其中添加一个带有Luis ID和Secret的属性。
    [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;
    }
    

    最后,要启动对话框,您必须在 Controller 内部调用此命令:
    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);
            }
        }
    

    关于c# - 如何将Luis集成到Bot Builder中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36873994/

    10-11 01:01