使用仿真器进行测试和调试
适用于: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 可将其关闭。”之前的行中的端口号
此时,机器人应该正在本地运行。
连接到在 localhost 上运行的机器人
配置代理设置
在企业代理后面进行开发时,Emulator 将使用配置的环境变量 HTTP_PROXY
和 HTTPS_PROXY
,它们分别指定 HTTP 和 HTTP 请求的代理 URL 路由。
如果要连接到在 localhost
上运行的机器人,Emulator 将首先尝试通过代理进行路由,然后再连接到 localhost
。 通常,代理将阻止连接,除非你指定应为 localhost
绕过该连接。
若要绕过 HTTP_PROXY
和 HTTPS_PROXY
设置并允许模拟器连接到 localhost
,必须在本地计算机上定义以下环境变量:
NO_PROXY=localhost
配置模拟器以进行身份验证
如果机器人要求身份验证,则会显示登录对话框,你必须按如下所示配置模拟器。
使用登录验证码
- 启动 Emulator。
- 在 Emulator 中,在左窗格中选择设置(齿轮图标)。
- 启用使用 OAuthCards 的登录验证码。
- 选择“保存”。
选择机器人显示的“登录”按钮时,将生成一个验证码。 在机器人输入聊天框中输入验证码,以便进行身份验证。 之后,你可以执行允许的操作。
或者,你可以执行下述步骤。
使用身份验证令牌
- 启动模拟器。
- 在 Emulator 中,在左窗格中选择设置(齿轮图标)。
- 启用使用 V1.0 身份验证令牌。
- 选择“保存”。
选择机器人显示的登录按钮时,系统将要求你输入凭据。 身份验证令牌已生成。 之后,你可以执行允许的操作。
若要连接到在本地运行的机器人,请选择“打开机器人”。 将此前复制的端口号添加到以下 URL 中,并将更新的 URL 粘贴到“机器人 URL”栏中:
http://localhost:<port number>/api/messages
如果机器人是使用 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,等等。 可以检查用户发送的活动,以及机器人响应的活动。
提示
可以在连接到通道的机器人中调试状态变化,只需将检测中间件添加到机器人即可。
检查服务
注意
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 服务中的原始响应,其中包括意向、实体以及指定分数。 可以重新分配用户语句的意图。
使用已连接的 QnA Maker 服务,日志将显示 QnA 跟踪。 选择后,可以预览与该活动相关联的问题和答案对,以及置信度分数。 可以在此处为答案添加备用问题表述。
登录 Azure
可以使用 Emulator 登录到 Azure 帐户。 若要添加和管理机器人所依赖的服务,则这比较有用。 要登录:
选择文件,然后使用 Azure 登录。
在欢迎屏幕上,选择使用 Azure 帐户登录。 你可以选择让模拟器在模拟器应用程序重新启动后保持登录状态。
禁用收集数据
如果你决定不再允许 Emulator 收集使用情况数据,可以按照以下步骤轻松地禁用数据收集功能。
在 Emulator 中,在左窗格中选择设置(齿轮图标)。
在数据收集下,取消选择允许我们收集使用情况数据,帮助改进 Emulator。
选择“保存”。
如果改变想法,可以稍后重新启用数据收集。
其他资源
Bot Framework Emulator 为开放源代码。 可以参与开发并提交 Bug 和建议。
有关疑难解答,请参阅排查常见问题和该部分中的其他疑难解答文章。
下一步
使用检测中间件调试连接到通道的机器人。