您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.

使用模拟器进行调试

适用于: SDK v4

Bot Framework Emulator是一个桌面应用程序,可让机器人开发人员在本地或远程测试和调试机器人。 使用模拟器,可以与机器人聊天,并检查机器人发送和接收的消息。 与机器人交换消息时,模拟器将显示消息,就像在 Web 聊天 UI 中一样,并记录 JSON 请求和响应。 将机器人部署到云之前,请在本地运行它,然后使用模拟器进行测试。 即使尚未使用模拟器创建机器人,也可使用模拟器Azure 机器人服务或配置为在任何通道上运行。

先决条件

在本地运行机器人

在将机器人连接到 Bot Framework Emulator 之前,需在本地运行机器人。 可以使用 Visual Studio 或 Visual Studio Code 来运行机器人,也可以使用命令行。 若要使用命令行来运行机器人,请执行以下操作:

  • 转到命令提示符,将目录切换为机器人项目目录。

  • 运行以下命令来启动机器人:

    dotnet run
    
  • 复制“应用程序已启动。 按 CTRL+C 可将其关闭。”之前的行中的端口号

    C# 端口号

此时,机器人应该正在本地运行。

连接到在 localhost 上运行的机器人

配置代理设置

在公司代理后面进行开发时,仿真器将使用配置的环境变量 和 ,它们分别指定 HTTP 和 HTTPs 请求的代理 HTTP_PROXY HTTPS_PROXY URL 路由。

如果要连接到在 上运行的机器人,仿真器将首先尝试通过代理进行路由, localhost 然后再连接到 localhost 。 通常,代理将阻止连接,除非指定应针对 绕过连接 localhost

若要绕过 和 设置并允许模拟器连接到 ,必须在本地计算机上定义 HTTP_PROXY HTTPS_PROXY localhost 以下环境变量:

NO_PROXY=localhost

配置模拟器进行身份验证

如果机器人需要身份验证并显示登录对话框,则必须配置模拟器,如下所示。

使用登录验证码

  1. 启动模拟器。
  2. 在仿真器中,单击左下角的齿轮图标或右上角的"仿真器设置"选项卡。
  3. 选中“使用 OAuthCards 的登录验证码” 框。
  4. 选中“绕过本地地址的 ngrok” 框。
  5. 单击“保存” 按钮。

单击机器人显示的“登录”按钮时,将生成一个验证码。 你将在机器人输入聊天框中输入代码,以进行身份验证。 之后,你可以执行允许的操作。

或者,你可以执行下述步骤。

使用身份验证令牌

  1. 启动模拟器。
  2. 在仿真器中,单击左下角的齿轮图标或右上角的"仿真器设置"选项卡。
  3. 选中“使用版本 1.0 身份验证令牌” 框。
  4. 输入“ngrok” 工具的本地路径。 有关工具的详细信息,请参阅 ngrok
  5. 选中“在模拟器启动时运行 ngrok” 框。
  6. 单击“保存” 按钮。

单击机器人显示的“登录”按钮时,系统将要求你输入凭据。 身份验证令牌已生成。 之后,你可以执行允许的操作。

模拟器启动窗口

若要连接到在本地运行的机器人,请选择"打开 机器人"。 将此前复制的端口号添加到以下 URL 中,并将更新的 URL 粘贴到“机器人 URL”栏中:

http://localhost:端口号/api/messages

模拟器打开-机器人对话框

如果机器人是使用 Microsoft 帐户 (MSA) 凭据运行的,也请输入这些凭据。

使用机器人凭据

打开机器人时,如果机器人使用凭据运行,请设置“Microsoft 应用 ID”和“Microsoft 应用密码” 。 如果使用 Azure 机器人服务创建了机器人,则可以在机器人的应用服务上的“设置”->“配置”部分下使用凭据 。 如果不知道这些值,可以从本地运行机器人的配置文件中删除这些值,然后在模拟器中运行机器人。 如果机器人未运行这些设置,则无需运行带有设置的模拟器。

创建 AD 标识提供者应用程序时,请记住以下事项:

  • 当支持的帐户类型设置为单租户时,如果你使用个人订阅而不是 Microsoft 帐户,则模拟器将发出错误: 机器人的 Microsoft 应用 ID 或 Microsoft 应用密码不正确。
  • 在这种情况下,受支持的帐户类型必须设置为“任何组织目录(任何 Azure AD 目录 - 多租户)中的帐户和个人 Microsoft 帐户(例如 Xbox)”。

有关详细信息,请参阅 创建 Azure AD 标识提供者应用程序使用 Azure 门户注册新应用程序

使用检查器查看消息活动的详细信息

向机器人发送消息,机器人应该回复。 可以单击聊天窗口中的消息气泡,并使用窗口右侧的“检查器” 功能检查原始 JSON 活动。 选中时,消息气泡将变为黄色,并在聊天窗口左侧显示活动 JSON 对象。 此 JSON 信息包含密钥元数据,例如通道 ID、活动类型、聊天 ID、文本消息、终结点 URL,等等。 可以检查用户发送的活动,以及机器人响应的活动。

模拟器消息活动

提示

可以在连接到通道的机器人中调试状态变化,只需将检测中间件添加到机器人即可。

检查服务

借助 v4 模拟器,还可以检查 LUIS 和 QnA 中的 JSON 响应。 将机器人与已连接的语言服务结合使用,可以选择右下角“LOG”窗口中的“跟踪” 。 此新工具还提供了直接从模拟器更新语言服务的功能。

LUIS 检查器

使用已连接的 LUIS 服务,你会注意到跟踪链接指定了 Luis 跟踪 。 选中时,将看到 LUIS 服务中的原始响应,其中包括意向、实体以及指定分数。 此外可以选择为用户表达重新分配意向。

QnA 检查器

使用已连接的 QnA 服务,日志将显示“QnA 跟踪” ,选择后,可以预览与该活动相关联的问题和答案对,以及置信度分数。 可以在此处为答案添加备用问题表述。

登录到 Azure

可以使用 Emulator 登录到 Azure 帐户。 若要添加和管理机器人所依赖的服务,则这特别有用。 按以下步骤登录到 Azure:

  1. 单击 "文件-> 通过 Azure 登录"

    模拟器登录 Azure

  2. 在欢迎屏幕上,单击 "使用 Azure 帐户登录"。 还可以选择让模拟器在重新启动模拟器应用程序时保持登录。

    仿真器 Azure 登录成功

禁用收集数据

如果你决定不再允许 Emulator 收集使用情况数据,可以按照以下步骤轻松地禁用数据收集功能。

  1. 导航到 Emulator 的设置页,方法是单击左侧导航栏中的“设置”按钮(齿轮图标)。

    "模拟器设置" 按钮

  2. 取消选中“数据收集”部分下标记为“允许我们收集使用情况数据,帮助改进 Emulator”的复选框。

    模拟器设置,数据收集

  3. 单击“保存”按钮。

    模拟器设置,"保存" 按钮

如果改变想法,只需重新选中该复选框即可启用此功能。

其他资源

Bot Framework Emulator 为开放源代码。 可以参与开发并提交 Bug 和建议

有关疑难解答,请参阅排查常见问题和该部分中的其他疑难解答文章。

后续步骤

使用检测中间件调试连接到通道的机器人。