你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

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

适用于: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 构建的现有机器人将继续正常运行。

对于新的机器人生成,请考虑使用 Power Virtual Agents 并参阅选择合适的聊天机器人解决方案

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

先决条件

在本地运行机器人

在将机器人连接到 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. 启用为本地地址绕过 ngrok
  4. 启用使用 OAuthCards 的登录验证码
  5. 选择“保存”。

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

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

使用身份验证令牌

  1. 启动模拟器。
  2. 在 Emulator 中,在左窗格中选择设置(齿轮图标)。
  3. 输入 ngrok 的本地路径。 有关 ngrok 的更多信息,请参阅 ngrok
  4. 启用在 Emulator 启动时运行 ngrok
  5. 启用使用 V1.0 身份验证令牌
  6. 选择“保存”。

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

仿真器启动窗口

若要连接到在本地运行的机器人,请选择“打开机器人”。 将此前复制的端口号添加到以下 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,等等。 可以检查用户发送的活动,以及机器人响应的活动。

模拟器消息活动 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 帐户登录。 你可以选择让模拟器在模拟器应用程序重新启动后保持登录状态。

    模拟器 Azure 登录成功

禁用收集数据

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

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

    仿真器设置按钮

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

  3. 选择“保存”。

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

其他资源

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

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

下一步

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