微软Bot-循环使用相同的答案甚至输入是不同的

时间:2017-01-30 10:48:32

标签: bots luis

我们正在使用Microsoft bot框架开发一个库机器人。

我们有

Intent : BookSearch
Entiry : BookName, BookAuthor

当我搜索"我需要一本java书"时,它理解' java'是一个实体,并为java书提供其他详细信息。

我的问题是,一旦我收到了java书籍的详细信息,我想发布这本书,所以当我们问及#34;发给我书Java"时,它会发生冲突并再次显示java书籍细节就像它进入循环一样。

请在这种情况下帮助我们,我们如何在问题中确定不同的背景?

代码:

 [LuisIntent("BookSearch")]
    public async Task BookSearch(IDialogContext context, LuisResult result)
    {
        if (result.Entities.Any())
        {
            DBConnect dbConnect = new DBConnect();
            string combindedString = string.Empty;
            string mysqlQuery = string.Empty;

            foreach (var item in result.Entities)
            {
                switch (item.Type.ToString())
                {
                    case "BookAuthor":

                        break;
                    case "BookName":

                        break;
                    case "BookIssue":

                        break;
                    default:                         

                        break;
                }
            }

        }
        else
        {
            await context.PostAsync("Which book are you searching.");
            context.Wait(MessageReceived);
        }

    }

这里BookName和BookIssue是实体, 所以,当我们要求"我需要java book" =>它应该进入BookName实体以提供书籍详细信息。 当我们问"发给我java book" =>它应该进入BookIssue实体来处理签发手续。

提前致谢

1 个答案:

答案 0 :(得分:0)

BookIssue应该是它自己的意图&方法。在您的代码中,您似乎将BookIssue视为一个实体。

BookSearch执行的操作,但要使用BookIssue方法中的语句和逻辑。

现在你在BookSearch意图中“陷入困境”,因为你没有定义另一个意图,而LUIS正在匹配那些话语来搜索。

顺便说一句,对于此应用程序,您可能需要考虑使用FormFlow