我使用机器人构建器3.15.0创建了一个非常基本的机器人。我已经定义和训练了LUIS,其中有几个意图等。我已经发布了作为分期。
这是一组键的结果。 我已将第一个键作为第一个参数放入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)]
我在bot的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仿真器测试时,连接到机器人工作。在第一篇文章中,上下文中的断点。在ResumeAfterLuisDialog中等待显示结果有&#34;失败&#34;内容为{&#34 ;; None&#34;},并且我的Luis意图(包括无和空白)均未被调用。
更新
事实证明,代码是&#34;工作&#34;有或没有应用程序ID周围的{}。真正的问题是SDK中的Luis Dialog代码在LuisDialog的第416行抛出一个InvalidIntentHandlerException,但是GitHub上的当前代码执行第452行的抛出(这个问题随着问题634而改变)。
对于未来的人来说,&#34 ;;无&#34;是&#39;消息&#39;传递给InvalidIntentHandlerException异常,这是一个;失败方法上LuisIntent属性的定界字符串。异常中的方法名称是bot构建器尝试分派的方法的名称。它选择了正确的方法等所以现在我的工作是 1) - 找出我没有使用当前代码的原因 2) - 为什么我的方法声明不正确
答案 0 :(得分:0)
查看您的LuisModel属性属性。 我认为你不需要将App ID放在大括号中。尝试删除&#34; LUIS发布页面上列出的第一个键&#34;周围的花括号。
在更换应用ID,订阅密钥和短语后,在浏览器中输入以下网址,然后按Enter键。如果有任何错误,您将会知道出现什么样的错误等。
答案 1 :(得分:0)
正如Ranganatha所说,应该删除花括号。它应该采用以下格式,包含App Id和订阅密钥。您可以找到更多代码示例here。
[LuisModel("9fa4985b-xxxxxxx-b726795a98b4", "a5d38xxxxxe3671953")]
您可以使用端点url来测试您的应用。基于http codes,您可以调试错误。
如果您想使用Authoring API来训练和发布应用,可以找到更多信息here。 如果还有其他问题,请联系Luisuservoice@microsoft.com。