在 Azure 上部署后 ChatBot 无法工作 - 内部服务器错误

2024-04-13

我已经使用 LUIS 和 QnA Maker 部署了一个聊天机器人。当我在模拟器上运行它时,它在本地完美运行。它在聊天开始时加载自适应卡,我从 LUIS 那里得到了正确的回复。

但是,当我在 Azure 上部署机器人并在 Web 聊天上测试它时,出现以下错误:

向您的机器人发送此消息时出错:HTTP 状态代码 InternalServerError

这就是我的 web.config 的样子:

 <configuration>
  <appSettings>
    <!-- update these with your BotId, Microsoft App Id and your Microsoft App Password-->
    <add key="BotId" value="BotLuis" />
    <add key="MicrosoftAppId" value="9f9564ef-d627-450f-b943-98b7338c0f31" />
    <add key="MicrosoftAppPassword" value="myapp-password" />
  </appSettings>

我从在 Azure 上创建的 Web 机器人的“应用程序”设置中获取 AppID 和 AppPassword 的值。我知道它们是正确的,因为我使用这些值使用模拟器在本地进行设置。

我将代码从 github 部署到 Azure。我的机器人在天蓝色网络聊天上加载得很好(自适应卡显示),但之后我给它的任何输入,无论是交互式卡还是聊天命令,我都会收到上述错误。

应用程序 Insight 显示以下异常:

POST 到 BotLuis 失败:POST 到机器人端点失败,HTTP 状态为 500 问题 ID:Microsoft.Bot.ChannelConnector.BotAPI+d__31.MoveNext 处的 System.Exception

当我与机器人交互时,开发人员工具控制台显示了这一点:

https://webchat.botframework.com/v3/directline/conversations/3NgflndFbpzCRDtnMdZpjf-g/activities 502 (Bad Gateway)

如果您将上面的链接粘贴到浏览器中,您将得到以下结果:

{
 "error": {
 "code": "BadArgument",
 "message": "Missing token or secret"
        }
}

我现在迷路了。我可以理解这个问题,但我不知道如何继续。我是否应该在代码中的某处添加机器人的消息传递端点?

代码的 github 存储库链接:here https://github.com/hshahbaz/ChatBotwithLuis/tree/dev


机器人状态服务已退休 https://blog.botframework.com/2017/12/19/bot-state-service-will-soon-retired-march-31st-2018/2018 年 3 月 31 日。 因此,当您在 Azure 上运行示例时,它会缺少状态存储,但它将在本地运行。

要使您的示例正常工作,只需将以下行添加到您的Global.asax.csfile.

protected void Application_Start()
{
    RegisterBotDependencies();

    GlobalConfiguration.Configure(WebApiConfig.Register);

    var store = new InMemoryDataStore();

    Conversation.UpdateContainer(
               builder =>
               {
                   builder.Register(c => store)
                             .Keyed<IBotDataStore<BotData>>(AzureModule.Key_DataStore)
                             .AsSelf()
                             .SingleInstance();

                   builder.Register(c => new CachingBotDataStore(store,
                              CachingBotDataStoreConsistencyPolicy
                              .ETagBasedConsistency))
                              .As<IBotDataStore<BotData>>()
                              .AsSelf()
                              .InstancePerLifetimeScope();


               });
}

请注意,此示例使用内存存储,因此不适合生产使用。阅读博客文章后,您可以轻松切换到 Azure 表存储或 Cosmos DB。

我已经克隆了您的存储库,添加了这些代码行并将其部署到 Azure 上的新机器人实例。网络聊天测试成功。

Summary

摘自上面的博客文章。

一段时间以来,我们一直鼓励使用 Bot Framework 的机器人开发人员使用他们自己的自定义状态服务。默认的机器人框架状态服务仅用于原型设计目的,而不是为适应生产机器人而设计的。状态服务将于 2018 年 3 月 31 日弃用,并且不再受支持。机器人开发人员今后将能够使用本文所述的临时本地内存存储来制作机器人原型。为您的机器人创建您自己的自定义状态服务可带来多种好处,包括改进延迟以及直接控制机器人的对话状态和上下文用户对话状态信息,并且我们提供了多种资源来指导您这样做。我们感谢从机器人开发者社区收到的反馈,这对我们改进整个机器人框架有很大帮助。我们也希望能够继续帮助您——机器人开发者社区,为您的用户创造越来越好的机器人体验。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Azure 上部署后 ChatBot 无法工作 - 内部服务器错误 的相关文章

随机推荐

  • Oracle 在组中的列中查找具有多个值的行

    我正在尝试查找某个零件号 组 是否有多 个运营商 我已经尝试过下面的代码但不起作用 SELECT PART NO CARRIER ROW NUMBER OVER PARTITION BY PART NO CARRIER ORDER BY P
  • 如何向菜单项添加工具提示?

    我正在尝试为菜单栏项添加工具提示 例如 Save 但我无法获取需求菜单项的实例 我可以添加这个工具提示吗 我正在使用 Tkinter 和 python 2 7 def createMenu self menu Menu root root
  • 编写java代码时出现SIGSEGV

    我有一段代码在 HTC Desire HD v2 3 3 上运行得很好 但是在 HTC Desire v2 2 上运行时 关闭蓝牙套接字时会崩溃并出现 SIGSEGV 07 25 16 23 52 462 INFO DEBUG 64 07
  • 如何调用.Net Core需要签名的XML SOAP服务?

    我意识到这个问题指的是旧技术 我正在呼叫供应商系统 并且无法更改服务 我们需要调用 XML SOAP WS 然后签署请求 10 年前 我会使用 Web 服务增强 WSE 3 0 之类的东西 然后继续前进 就像今天一样 我陷入了在 Net C
  • 持久性单元定义冲突

    春季3 1 1 Maven 3 0 4 日本PA Eclipse wtp 靛蓝 你好 我在服务器启动时遇到以下异常 我的项目中只有一个 persistence xml 有任何想法吗 谢谢埃里克 引起原因 java lang IllegalS
  • Node.js 找不到模块“tcp”

    节点在以下行崩溃 var tcp require tcp 错误文本 node js 201 throw e process nextTick error or error event on first tick Error Cannot f
  • 可折叠工具栏布局中的稀松布是什么?

    我在 Android 开发人员上阅读了可折叠工具栏布局 那里使用了一个术语 稀松布 它是什么 Scrim 隐藏或掩盖某事的事物 根据 Android CollapsingToolbarLayout 稀松布内容 当滚动位置达到某个阈值时显示或
  • 使 WooCommerce 结账运送字段可见并删除“运送到不同地址?”复选框

    我想知道是否有办法删除 运送到其他地址 复选框 在 woocommerce 结帐页面中 但保持运输字段可见 我努力了 add filter woocommerce cart needs shipping address return fal
  • Node.js 上通过套接字连接 Redis

    由于共享托管 目标主机上的我的 redis 服务器不在端口上运行 而是在非常特定的套接字上运行 可以通过套接字文件连接到该套接字 只有我的用户可以访问 但是 我还没有找到如何通过套接字指定连接node redis and connect r
  • e2e 测试是否应该将数据保存在真实数据库中?

    我读了很多关于 e2e 测试的文章 但我无法理解的一件事是 e2e 测试应该有多 真实 无论我使用什么工具进行 e2e 测试 我发现大多数时候它们都是在本地 开发或 alpha 环境中使用 如果我的应用程序具有身份验证 我是否应该在数据库中
  • 当具有复杂类型时,KnockoutJs 中的值绑定无法进行选择

    我正在尝试在选择元素上使用值绑定 如本小提琴中所述 http jsfiddle net MikeEast nM6dd 2 http jsfiddle net MikeEast nM6dd 2 但是 我似乎无法设置所选选项 值绑定 我知道我可
  • 为什么我的 XIB 文件无法本地化 (iPhone)?

    情况 我正在启动 XCode 为 iPhone 创建一个新项目 查看应用程序 并将 XIB 文件加载到 IB 中 我操作视图 添加带有字符串 hello 的标签 保存 构建 运行应用程序 一切都很好 现在我正在本地化 XIB 我所做的 右键
  • RttiType.TypeKind 和 RttiType.Name 之间有什么区别?

    以下之间的语义差异是什么 RttiType TypeKind 和 RttiType Name 我问是因为原则上不能从名称推断出 TypeKind 吗 The TypeKind and Name的属性TRttiType是完全不同的事情 Typ
  • 波特词干算法实现问题?

    我正在尝试实现波特词干算法 但我陷入了这一点 Step 1b m gt 0 EED gt EE feed gt feed agreed gt agree v ED gt plastered gt plaster bled gt bled v
  • 无法连接到远程调试 - Web App Azure

    我正在尝试使用 Visual Studio 2017 Professional 远程调试部署为 Azure 应用服务的 Asp Net Core Web 应用程序 使用 Web API 项目 按照记录的说明进行操作here https le
  • 来自本机的 Android O 设备序列号

    在 Android O 上从本机获取序列号而不调用 Java 的正确方法是什么Build getSerial 在 Android string serial read property ro boot serialno string rea
  • 在 openpyxl 中为选项卡着色

    我们有一种情况 我们想要使用 openpyxl 为工作表的选项卡着色 有没有办法在图书馆内做到这一点 或者 有没有人找到一种方法可以在库外部执行此操作 即通过扩展或类似的方式 您可以使用 openpyxl 为sheet properties
  • UIView的transitionWithView丢弃图层设置

    我 viewDidload 我有这样的设置 self layer setCornerRadius 30 0f NSString imgFilepath NSBundle mainBundle pathForResource imageNam
  • IntelliJ IDEA中如何自动分割长字符串?

    我正在编写一个包含很长字符串的测试 我需要拆分这些字符串 private static final String TOO LONG JSON field1 field1 field2 field2 fieldN fieldN 所以他们会变成
  • 在 Azure 上部署后 ChatBot 无法工作 - 内部服务器错误

    我已经使用 LUIS 和 QnA Maker 部署了一个聊天机器人 当我在模拟器上运行它时 它在本地完美运行 它在聊天开始时加载自适应卡 我从 LUIS 那里得到了正确的回复 但是 当我在 Azure 上部署机器人并在 Web 聊天上测试它