azure - 机器人模拟器错误:POST 400 directline.postActivity
问题描述
我正在尝试在 Bot Emulator 中运行默认 EchoBot,在配置端点、AppID 和 App 密码后,我收到 POST 400 directline.postActivity 错误。
我正在运行 Bot Emulator Framework v4.4.1,以及 Microsoft 提供的 C# v4.4.4 EchoBot 示例。当我在 Visual Studio 中构建项目时,它会输出到 localhost 上的端口 3978。在模拟器中输入端点、ID 和密码后,它开始连接。但是,机器人不会响应任何输入的文本。这是来自模拟器的日志:
[11:05:36]Emulator listening on http://localhost:50550
[11:05:36]ngrok not configured (only needed when connecting to remotely hosted bots)
[11:05:36]Connecting to bots hosted remotely
[11:05:36]Edit ngrok settings
[11:05:37]
[11:05:37]POSTdirectline.conversationUpdate
[11:05:37]
[11:05:37]POSTdirectline.conversationUpdate
[11:05:37]POST200directline.startConversation
[11:05:40]-> messagehell0
[11:05:40]POST400directline.postActivity
[11:05:43]-> messagefdal
[11:05:43]POST400directline.postActivity
JSON Inspector for startConversation:
{
"conversationId": "33eb05b0-8b91-11e9-be8e-6726cb4f7972|livechat",
"expires_in": 2147483647,
"streamUrl": "",
"token": "http://localhost:3978"
}
JSON Inspector for first message:
{
"channelData": {
"clientActivityID": "15601791407590.8nf8jwqjc2v"
},
"channelId": "emulator",
"conversation": {
"id": "33eb05b0-8b91-11e9-be8e-6726cb4f7972|livechat"
},
"entities": [
{
"requiresBotState": true,
"supportsListening": true,
"supportsTts": true,
"type": "ClientCapabilities"
}
],
"from": {
"id": "4866b179-bf7b-460e-8903-bda849861d88",
"name": "User",
"role": "user"
},
"id": "363766b0-8b91-11e9-be8e-6726cb4f7972",
"localTimestamp": "2019-06-10T11:05:40-04:00",
"locale": "en-US",
"recipient": {
"id": "33ea6970-8b91-11e9-ab08-9bfc690fe455",
"name": "Bot",
"role": "bot"
},
"serviceUrl": "http://localhost:50550",
"text": "hell0",
"textFormat": "plain",
"timestamp": "2019-06-10T15:05:40.763Z",
"type": "message"
}
JSON Inspector for first response:
{
"channelData": {
"clientActivityID": "15601791407590.8nf8jwqjc2v"
},
"channelId": "webchat",
"entities": [
{
"requiresBotState": true,
"supportsListening": true,
"supportsTts": true,
"type": "ClientCapabilities"
}
],
"from": {
"id": "4866b179-bf7b-460e-8903-bda849861d88",
"name": "User",
"role": "user"
},
"locale": "en-US",
"text": "hell0",
"textFormat": "plain",
"timestamp": "2019-06-10T15:05:40.760Z",
"type": "message"
}
{
"error": {
"code": "ServiceError",
"message": "response.text is not a function"
}
}
我尝试过配置一个与模拟器状态匹配的端点,但这只会导致无限连接消息,甚至不允许我向机器人输入任何文本。我也尝试过重新安装模拟器,但这并没有改变任何东西。
已编辑
此外,模拟器配置为绕过 ngrok 获取本地地址,并且本地覆盖设置为 localhost。这些是默认设置,切换旁路选项或更改本地覆盖并不能解决问题。
我已经尝试从 appsettings.json 文件中获取 AppId 和 AppPassword ,方法是将它们注释掉并将它们保留为空字符串,但都没有解决问题。
我还卸载并重新安装了 Visual Studio、BotFramework SDK、模板和 Bot Emulator,看看是否能解决任何问题,但他们没有。
最后一点,我已经尝试按照 Microsoft BotFramework 教程使用模拟器,任何尝试都会产生这个结果。
更新
重新安装Bot Framework Emulator v4.4.2后,问题依旧,但是出现了新的错误信息:
[14:03:32]Emulator listening on http://localhost:61486
[14:03:32]ngrok not configured (only needed when connecting to remotely
hosted bots)
[14:03:32]Connecting to bots hosted remotely
[14:03:32]Edit ngrok settings
[14:03:32]The bot's Microsoft App Id or Microsoft App Password is
incorrect.
[14:03:32]POSTdirectline.conversationUpdate
[14:03:32]The bot's Microsoft App Id or Microsoft App Password is
incorrect.
[14:03:32]POSTdirectline.conversationUpdate
[14:03:32]POST200directline.startConversation
我已确保它们确实匹配,但我仍然收到此错误。
解决方案
尝试从您的解决方案以及模拟器中删除应用程序 ID 和密码以及 ngrok,并在模拟器中仅添加 localhost 端点
推荐阅读
- flutter - Flutter:防止 FutureBuilder 总是刷新每个更改屏幕
- python - Matplotlib 用双头箭头连接散点图
- c# - 大量的Task.Delay会不会导致性能问题
- node.js - 在 node.js 的生产服务器上获取 502 Bad Gateway
- canvas - 使用 PyX,如何设置画布的大小?
- azure - 哪些 Azure 应用服务可以在同一个应用服务计划上运行?
- laravel - Laravel 站点在重新安装供应商后停止工作
- java - 使用 javaMail 在 Java 11 中发送电子邮件时出错 - java.lang.module.ResolutionException:
- sql-server - 选择以逗号分隔的摘要计数?
- sql-server - ADO 不传递第一个参数值