【问题标题】:Failed to send activity: bot returned an error 502 404发送活动失败:机器人返回错误 502 404
【发布时间】:2019-12-11 08:15:46
【问题描述】:

我正在尝试将 ms teams auth 机器人部署到 azure。当我使用机器人框架模拟器对其进行测试时,该机器人会发出欢迎消息。然后我运行these steps 将我的机器人部署到天蓝色。在部署步骤中,我在整个过程中使用了相同的应用程序 ID 和密码。然后我在 azure 上对其进行了测试,但它失败了:

我查看了浏览器的网络请求,我看到了:

HTTP POST: https://webchat.botframework.com/v3/directline/conversations/JYtg14OvcjS7FiNwCMXzH1-g/activities

回复:

{
  "error": {
    "code": "BotError",
    "message": "Failed to send activity: bot returned an error"
  },
  "httpStatusCode": 404
}

我流式传输了我的应用程序日志,它给了我一个很大的 HTML 响应,您可以看到 here。但这只是一个 404 页面响应。

我试图在我的机器人模拟器中运行它,指向生产中的机器人,它也给出了 404 响应:

编辑:

  1. 我刚刚尝试redeploy my bot,但在测试我的机器人时得到了相同的结果。
  2. 运行所有deployment steps 后,我再也没有web.config 文件。虽然在我的机器人模拟器中本地测试它工作正常。
  3. 这是我的资源组的截图,里面有3个资源:
  4. 这是运行pre-deploy command 后的屏幕截图。它不会生成 web.config 文件,但会生成 .deployment 文件:
  5. Azure 应用注册门户中的应用 ID 相同,我的 appsettings.json 文件中的应用 ID 相同,运行 deployment command 时的应用 ID 相同。

编辑 2:

  1. 这是我压缩项目的方式:
  2. 在 Azure 上,我无法查看我的代码,但我记得我以前曾经这样做过。也许是因为在 Azure 上,我只有一个 Bot Channels 注册,但我没有 Web App Bot。有问题吗?

编辑 3:

  1. 我注意到我在压缩内容时没有包含.deployment 文件。 (文件资源管理器隐藏了文件。)所以现在我将它包含在我的压缩内容中,并再次由 bot 重新部署。 (不幸的是,机器人的行为仍然相同。)
  2. 这里是 /dev/wwwroot/ 的新内容:
  3. 这是我的应用注册(我尝试切换两种帐户类型,而不是通过命令行重新创建它,仍然是相同的机器人行为):
  4. .deployment 文件已压缩。我的mac只是没有显示它。我更新了屏幕截图以显示上面的 .deployment 文件。

【问题讨论】:

  • 我在日志中看到这条消息:The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.。这很奇怪。我只在遇到服务问题时才看到它,但它通常会自行修复。您可以尝试删除这些 Azure 服务并重新部署吗?如果仍然无法解决问题,请使用资源组资源的屏幕截图更新您的问题。
  • 你能确认你跑了this step:az bot prepare-deploy --lang Csharp --code-dir "." --proj-file-path "MyBot.csproj"。如果您缺少 web.config 文件,则说明您错过了这一步。
  • 您能否确认您的 an App Registration 与为您的 Web App Bot 服务列出的 appId 匹配并且它们的名称匹配?
  • 你好@mdrichardson-MSFT。我在帖子中回答了你的问题。请参阅上面的修改。

标签: botframework azure-bot-service


【解决方案1】:

OP 的问题最终是他们需要为所有帐户(包括个人帐户)提供应用注册。为此,请关注these steps

我会为后代保留答案,但如果您遇到此问题,我的 cmets 提供了很好的故障排除步骤。


啊哈!问题是this step。您需要压缩项目文件夹的内容,而不是文件夹本身。

这个:

而不是这个:

部署时,您的文件夹结构将如下所示:

您不是第一个遇到这种情况的人。我有created a PR to clarify this。如果您认为我所做的更改应该说明其他内容,请告诉我。

旁注:web.config 是在部署时创建的。我对那条评论的错误。

【讨论】:

  • 我为给您带来的麻烦道歉,但我认为这不是问题所在。我编辑了我的帖子以包含我如何压缩我的内容(而不是文件夹本身),并且我包含了另一条信息:我有一个机器人频道注册,但我没有一个网络应用程序机器人。我需要一个吗?我遵循了部署步骤,但它没有在我的 azure 中创建网络应用程序机器人。
  • @AskYous 你是对的。我确实觉得很笨。将您的文件夹结构图像误解为来自您的 Azure 应用服务文件,而不是 VS Code。部署后,我还有一个机器人频道注册。你能截图https://<yourBot>.scm.azurewebsites.net/dev/wwwroot/的文件夹结构并编辑到你的帖子中吗?在Your App Registration > Authentication,你是see this吗?如果没有,try this
  • @AskYous 等一下....我没有看到您的 .deployment 文件被压缩。我什至没有在你的目录中看到它。您要么错过了 prepare-deploy 步骤,要么 VS Code 隐藏了您的 .* 文件。如果没有压缩,这绝对是问题所在。 This might help
  • @AskYous 据我了解,它必须支持个人帐户(因为它通过 Directline)。 Try this
  • @AskYous 更新了我的答案以反映最终判决。感谢您愿意排除故障!
猜你喜欢
  • 2020-10-09
  • 2018-11-25
  • 1970-01-01
  • 1970-01-01
  • 2020-08-28
  • 2014-12-12
  • 2022-12-10
  • 1970-01-01
  • 2020-03-11
相关资源
最近更新 更多