使用仿真器进行测试和调试

适用于:SDK v4

Bot Framework Emulator 是一个桌面应用程序,允许机器人开发人员在本地或远程测试和调试机器人。 借助 Emulator,可以与机器人聊天并检查机器人发送和接收的消息。 Emulator 会显示消息(类似于消息在 Web 聊天 UI 中显示),并在你与机器人交换消息时记录 JSON 请求和响应。 在将机器人部署到云之前,请使用 Emulator 在本地运行并进行测试。 即使还未使用 Azure AI 机器人服务创建机器人或将其配置为在任何通道上运行,也可使用 Emulator 测试机器人。

注意

Bot Framework JavaScript、C# 和 Python SDK 将继续受支持,但 Java SDK 即将停用,最终长期支持将于 2023 年 11 月结束。

使用 Java SDK 构建的现有机器人将继续正常运行。

要生成新的机器人,请考虑使用 Microsoft Copilot Studio 并阅读选择正确的助理解决方案

有关详细信息,请参阅机器人构建的未来

先决条件

在本地运行机器人

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

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

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

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

    C# 端口号

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

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

配置代理设置

在企业代理后面进行开发时,Emulator 将使用配置的环境变量 HTTP_PROXYHTTPS_PROXY,它们分别指定 HTTP 和 HTTP 请求的代理 URL 路由。

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

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

NO_PROXY=localhost

配置模拟器以进行身份验证

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

使用登录验证码

  1. 启动模拟器。
  2. 在 Emulator 中,在左窗格中选择设置(齿轮图标)。
  3. 启用使用 OAuthCards 的登录验证码
  4. 选择“保存”。

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

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

使用身份验证令牌

  1. 启动模拟器。
  2. 在 Emulator 中,在左窗格中选择设置(齿轮图标)。
  3. 启用使用 V1.0 身份验证令牌
  4. 选择“保存”。

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

仿真器启动窗口

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

http://localhost:<port number>/api/messages

仿真器 open-a-bot 对话

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

使用机器人凭据

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

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

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

有关更多信息,请参阅创建 Microsoft Entra ID 标识提供者应用程序使用 Azure 门户注册新应用程序

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

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

Emulator 消息活动 JSON

提示

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

检查服务

注意

Azure QnA Maker 将于 2025 年 3 月 31 日停用。 从2022年10月1日开始,您将无法创建新的 QnA Maker 资源或知识库。 问答功能的较新版本现已作为 Azure AI 语言的一部分提供。

自定义问答是 Azure 语言认知服务的一项功能,是 QnA Maker 服务的更新版本。 有关 Bot Framework SDK 中的问答支持的详细信息,请参阅自然语言理解

注意

语言理解 (LUIS) 将于 2025 年 10 月 1 日停用。 从 2023 年 4 月 1 日开始,将无法创建新的 LUIS 资源。 语言理解的较新版本现已作为 Azure AI 语言的一部分提供。

对话语言理解(CLU)是 Azure AI 语言的一项功能,是 LUIS 的更新版本。 有关 Bot Framework SDK 中的语言理解支持的详细信息,请参阅自然语言理解

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

LUIS 检查器

使用已连接的 LUIS 服务,跟踪链接将指定 Luis 跟踪。 选中时,将显示 LUIS 服务中的原始响应,其中包括意向、实体以及指定分数。 可以重新分配用户语句的意图。

QnA 检查器

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

登录 Azure

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

  1. 选择文件,然后使用 Azure 登录

    使用 Azure 进行的仿真器登录

  2. 欢迎屏幕上,选择使用 Azure 帐户登录。 你可以选择让模拟器在模拟器应用程序重新启动后保持登录状态。

    Emulator Azure 登录成功

禁用收集数据

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

  1. 在 Emulator 中,在左窗格中选择设置(齿轮图标)。

    仿真器设置按钮

  2. 数据收集下,取消选择允许我们收集使用情况数据,帮助改进 Emulator

  3. 选择“保存”。

如果改变想法,可以稍后重新启用数据收集。

其他资源

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

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

下一步

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