【问题标题】:How to setup LuisModel for a bot builder sdk bot如何为 bot builder sdk bot 设置 LuisModel
【发布时间】:2018-10-06 12:27:12
【问题描述】:

我使用 bot builder 3.15.0 创建了一个非常基本的机器人。我已经定义并训练了 LUIS,有几个意图等。我已发布为 staging。

这样做的结果是一组键。 我将第一个键作为 LuisModelAttribute 的第一个参数,第二个键作为第二个参数,然后添加域:westus.api.cognitive.microsoft.com 和 Staging = true

[LuisModel("{the first key listed on the LUIS publish page}", "the second key listed on the LUIS publish page",
    domain: "eastus.api.cognitive.microsoft.com", Staging = true)]

我的机器人 RootDialog 中有以下代码

        private async Task MessageReceivedAsync (IDialogContext context, IAwaitable<object> result)
    {
        var activity = await result as Activity;
        await context.Forward(new LuisRepeating(), ResumeAfterLuisDialog, activity, CancellationToken.None);
    }   /* method RootDiaglog MessageReceivedAsync */

    private async Task ResumeAfterLuisDialog (IDialogContext context, IAwaitable<object> result)
    {
        context.Wait(MessageReceivedAsync);
    }

当我尝试使用 Bot 模拟器对此进行测试时,与 bot 的连接工作正常。在第一篇文章中,context.Wait 中的断点显示结果“失败”,内容为 {";None"} 并且没有调用我的 Luis 意图(包括 None 和空白)。

更新

事实证明,无论是否使用应用程序 ID 周围的 {},代码都可以“工作”。真正的问题是 SDK 中的 Luis Dialog 代码在 LuisDialog 的第 416 行抛出了 InvalidIntentHandlerException,但 GitHub 上的当前代码在第 452 行抛出了异常(问题 634 已更改)。

对于未来的人来说,“;None”是传递给 InvalidIntentHandlerException 异常的“消息”,它是一个 ;来自失败方法的 LuisIntent 属性的分隔字符串。异常中的方法名称是机器人构建器尝试分派的方法的名称。它选择了正确的方法等,所以现在我的工作是 1) - 找出我不使用当前代码的原因 2) - 为什么我的方法声明不正确

【问题讨论】:

    标签: c# bots azure-language-understanding


    【解决方案1】:

    查看您的 LuisModel 属性属性。 我认为您不需要将 App ID 放在花括号中。尝试删除“LUIS 发布页面上列出的第一个键”周围的花括号。

    在替换应用 ID、订阅密钥和您的短语后,还可以在浏览器中输入以下 URL,然后按 Enter。如果有任何错误你会知道什么样的错误等等。

    https://eastus.api.cognitive.microsoft.com/luis/v2.0/apps/APPID?subscription-key=subscriptionKey&verbose=true&timezoneOffset=0&q=yourPhraseHere

    【讨论】:

    • 点击 Luis 发布页面上的链接(看起来很像上面的链接),结果是 {"query":null,"intents":[],"entities":[]} 所以我想这意味着那一端的一切都是正确的。
    • @Soho 开发者,只是想知道,以帮助其他稍后阅读此问答的人。
    【解决方案2】:

    正如 Ranganatha 所说,应该删除花括号。它应该采用以下格式,带有 App Id 和订阅密钥。您可以找到更多代码示例here

    [LuisModel("9fa4985b-xxxxxxx-b726795a98b4", "a5d38xxxxxe3671953")]
    

    您可以使用端点url 来测试您的应用。根据http codes,可以调试错误。

    如果您想使用 Authoring API 来训练和发布应用程序,您可以找到更多信息here。 如果还有其他问题,请联系 Luisuservoice@microsoft.com。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-20
      • 2017-07-22
      相关资源
      最近更新 更多