11

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

我想做以下事情:

  1. 用户将输入一个用Luis解释的短语。
  2. 如果短语中没有给出所有实体,则表单构建器将填补空白。

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

4

1 回答 1

16

简而言之 :

  • 首先,您必须在 luis.ai 上创建一个帐户。
  • 然后您需要遵循此文档:http ://docs.botframework.com/sdkreference/csharp/dialogs.html (它以经典对话框开始,但以 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;
}

最后,要启动对话框,您必须在控制器内部调用它:

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);
        }
    }
于 2016-05-02T10:31:36.877 回答