首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >操作返回一个无效的状态代码“Forbiden.Botframework v4”。

操作返回一个无效的状态代码“Forbiden.Botframework v4”。
EN

Stack Overflow用户
提问于 2019-03-05 21:42:31
回答 1查看 1.9K关注 0票数 3

所以我创造了一个蓝色的机器人并下载了它。路易斯免费的1000个电话达到了极限。我在azure门户中创建了一个订阅(我确实做了码头容器之类的事情)。遵循本指南,直到步骤6。当我单击端点url并在浏览器中直接查询时,它工作正常。

我通过bot模拟器将其添加到Bot中,方法是单击+登录服务并在那里添加bot模型。但是当我运行机器人时,我会得到标题错误。我注意到,在.bot文件中,由bot模拟器添加的创作密钥和订阅密钥是相同的。

因此,我将订阅键更改为由azure生成的键之一,但仍然是相同的错误。我尝试重新设置创作密钥,删除我的luis.ai帐户,并创建了一个新的帐户。(仍然是同一封电子邮件,因为那是登录到蔚蓝门户网站的邮件。)仍然是一样的。

这里有一些图片供参考和错误。

我还尝试在luis.ai中测试它,并得到了这个结果。

但是,当我检查时,它被设置为新的资源。

下面是通过bot模拟器添加luis之后的Bot文件的图片。它有相同的创作密钥和订阅密钥(仍然禁止)

所以我现在用订阅键修改了它(仍然是禁止的)。

在这里,当在URL中直接测试时,它是正常工作的。

供参考:

azure门户

luis.ai

和错误

我是怎么把路易斯加入机器人的。

这是机器人服务的代码。

代码语言:javascript
运行
复制
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>();
    }
}

我已经试着解决这个问题4天了。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-06 22:19:04

谢谢你提供的所有图片。这是一个巨大的帮助!问题是:

默认情况下,代码在本节中查找AuthoringKey (第二行):

代码语言:javascript
运行
复制
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);

由于您的.bot文件仍然将authoringKey设置为以ad9c...开头的文件,这已经达到了限制,所以bot始终会遇到403错误。

因此,在.bot文件中,将该authoringKey替换为您的endpointKey之一(它们以12ccc...b575...开头)。

我理解您对此的混淆,特别是因为这需要您在endpointKey属性中放置一个authoringKey。我知道路易斯机器人使用钥匙的方式会有一些变化,但这可能需要一个月甚至更长的时间。

或者,您可以更改:

代码语言:javascript
运行
复制
var app = new LuisApplication(luis.AppId, luis.AuthoringKey, endpoint);

至:

代码语言:javascript
运行
复制
var app = new LuisApplication(luis.AppId, luis.SubscriptionKey, endpoint);

注意:如果您做了这些更改之一,LUIS只能查询(这通常很好),因为编写Keys可以完成其他所有事情(参见下面的参考)。

参考文献

这些对你来说并不像其他人可能遇到的那样多。

创作与终结点键

键限

LUIS 403错误的故障排除

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55012070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档