C# 操作返回了无效的状态代码';禁止`。botframeworkv4
所以我在azure中创建了一个机器人并下载了它。路易斯的1000个免费电话达到了极限。我在azure portal中创建了一个订阅(我做了docker容器之类的事情)。直到第6步。当我单击端点url并直接在浏览器中查询时,它工作正常 我通过bot Emulator将其添加到bot中,方法是单击+登录服务并在其中添加bot模型。但是当我运行bot时,我得到了标题错误。我注意到在.bot文件中,由bot仿真器添加的创作密钥和订阅密钥是相同的 因此,我将订阅密钥更改为azure生成的密钥之一,但仍然存在相同的错误。我尝试重新设置创作密钥,并删除我的luis.ai帐户并创建了一个新帐户。(仍然是同一封电子邮件,因为这是一封登录到azure portal的电子邮件。)仍然是一样的 这里有一些图片供参考和错误 我还尝试在luis.ai中测试它,得到了这个结果。 但当我检查时,它被设置为新资源。 下面是通过机器人模拟器添加luis后的机器人文件的图片。它具有相同的创作密钥和订阅密钥(仍然禁止) 所以我现在用订阅密钥更改了它(仍然是禁止的)。 在这里,当直接在URL中测试时,它工作正常。 供参考: azure门户 路易斯·艾 错误呢 我如何在机器人中添加路易斯。 下面是bot服务的代码C# 操作返回了无效的状态代码';禁止`。botframeworkv4,c#,azure,botframework,azure-language-understanding,C#,Azure,Botframework,Azure Language Understanding,所以我在azure中创建了一个机器人并下载了它。路易斯的1000个免费电话达到了极限。我在azure portal中创建了一个订阅(我做了docker容器之类的事情)。直到第6步。当我单击端点url并直接在浏览器中查询时,它工作正常 我通过bot Emulator将其添加到bot中,方法是单击+登录服务并在其中添加bot模型。但是当我运行bot时,我得到了标题错误。我注意到在.bot文件中,由bot仿真器添加的创作密钥和订阅密钥是相同的 因此,我将订阅密钥更改为azure生成的密钥之一,但仍然存
using System;
using System.Collections.Generic;
using Microsoft.Bot.Builder.AI.Luis;
using Microsoft.Bot.Configuration;
namespace Microsoft.BotBuilderSamples
{
public class BotServices
{
public BotServices(BotConfiguration botConfiguration)
{
foreach (var service in botConfiguration.Services)
{
switch (service.Type)
{
case ServiceTypes.Luis:
{
var luis = (LuisService)service;
if (luis == null)
{
throw new InvalidOperationException("The LUIS service is not configured correctly in your '.bot' file.");
}
var endpoint = (luis.Region?.StartsWith("https://") ?? false) ? luis.Region : luis.GetEndpoint();
var app = new LuisApplication(luis.AppId, luis.AuthoringKey, endpoint);
var recognizer = new LuisRecognizer(app);
this.LuisServices.Add(luis.Name, recognizer);
break;
}
}
}
}
public Dictionary<string, LuisRecognizer> LuisServices { get; } = new Dictionary<string, LuisRecognizer>();
}
}
使用系统;
使用System.Collections.Generic;
使用Microsoft.Bot.Builder.AI.Luis;
使用Microsoft.Bot.Configuration;
命名空间Microsoft.BotBuilderSamples
{
公共类机器人服务
{
公共机器人服务(BotConfiguration BotConfiguration)
{
foreach(botConfiguration.Services中的var服务)
{
交换机(服务类型)
{
案例服务类型。路易斯:
{
var luis=(LuisService)服务;
如果(luis==null)
{
抛出新的InvalidOperationException(“您的“.bot”文件中未正确配置LUIS服务。”);
}
var endpoint=(luis.Region?.StartsWith(“https:/”)false)?luis.Region:luis.GetEndpoint();
var app=新的LuisApplication(luis.AppId、luis.AuthoringKey、endpoint);
var识别器=新的LuisRecognizer(app);
this.LuisServices.Add(luis.Name,识别器);
打破
}
}
}
}
公共字典LuisServices{get;}=newdictionary();
}
}
我已经试着解决这个问题4天了。谢谢 感谢您提供的所有图片。这是一个巨大的帮助!问题是: 默认情况下,您的代码在此部分(第二行)中查找
AuthoringKey
:
由于您的.bot
文件仍将authoringKey
设置为以ad9c…
开头的密钥,该密钥已达到极限,因此您的bot将继续运行403错误
因此,在您的.bot
文件中,将该创作密钥
替换为您的端点密钥之一(它们以12ccc…
或b575…
开头)
我理解您对此的困惑,特别是因为这需要您在authoringKey
属性中放置endpointKey
。我知道路易斯机器人使用钥匙的方式即将发生一些变化,但这些变化可能需要一个月或更长的时间
或者,您可以更改:
var app = new LuisApplication(luis.AppId, luis.AuthoringKey, endpoint);
致:
注意:如果您做了这些更改中的任何一个,LUIS只能进行查询(这通常是很好的),因为创作键完成了其他所有操作(请参阅下面的参考资料)
工具书类
这些对你来说并没有那么多,其他人可能会遇到这一点
您能否共享初始化LuisApplication
的代码?您可以在这里找到。谢谢您的回复。我用luis的botservice应用程序更新了这个问题。你能验证一下吗?从bot文件中删除这些luis条目。添加一个新的端点键,确保使用以12ccc
或b575
开头的端点键。根本不要使用以ad9c开头的编写键。你还收到403错误吗?@mdrichardson模拟器会自动添加这些密钥。然后我直接在bot文件中更改了它们,可以吗?是的,先生,当我将订阅密钥更改为其中一个密钥时,我仍然收到禁止的错误。我还没有在azure中发布此bot是否相关?因为这是新的,我重构了代码。但是这个机器人以前的版本是在azure上发布的。我想值得一提的是,我创建了一个新的luis.ai帐户,有免费的启动密钥,没有订阅密钥,并且工作没有问题。顺便问一下,先生,你能检查一下聊天吗。bot模拟器中的每条消息前都出现了一些东西。奇怪的是,我的感谢评论不见了。再次感谢您,先生。在聊天中已回复。先生,您可以查看此messenger位置快速回复问题吗?谢谢
var app = new LuisApplication(luis.AppId, luis.AuthoringKey, endpoint);
var app = new LuisApplication(luis.AppId, luis.SubscriptionKey, endpoint);