Teams 应用测试工具
注意
Teams 应用测试工具在 Microsoft Teams 工具包的最新预发行版中提供。 确保安装 Teams 工具包的最新预发行版 。
Teams 应用测试工具 (测试工具) 使调试基于机器人的应用变得轻松。 你可以与机器人聊天,并在Microsoft Teams 中查看其消息和自适应卡片。 无需Microsoft 365 开发人员帐户、隧道或 Teams 应用和机器人注册即可使用测试工具。
下图显示了一个示例应用,其中显示了一个自适应卡片,其中包含测试工具中的命令列表。 它还提供命令的说明,以便你无需手动搜索代码即可测试应用:
以下是测试工具的优点:
沙盒环境:测试工具的沙盒环境模拟 Teams 的行为、外观和用户体验。
隧道:不需要外部隧道服务,因为测试工具在机器人可以与之通信的本地服务器上运行。
减少帐户依赖项:调试机器人不需要Microsoft 365 开发人员租户和应用上传权限。
快速内部循环迭代:优化对应用设计和机器人逻辑进行更改的过程,而无需将机器人重新部署到云。
模拟数据和活动:使用测试工具可以轻松测试复杂方案,例如,在新成员加入通道时,使用模拟数据和活动触发器发送欢迎消息。
可靠:测试工具可靠,因为机器人的自适应卡片使用与 Teams 中的相同呈现技术。
与现有 Teams 机器人应用程序集成:测试工具毫不费力地与使用 Bot Framework SDK 构建的现有 Teams 机器人应用程序集成。
支持不同范围:测试工具支持在个人、团队和群组聊天范围内进行测试。
先决条件
确保安装以下工具,用于在测试工具中生成和部署机器人:
安装 | 用于使用... | |
---|---|---|
Teams 工具包 | Microsoft Visual Studio Code 扩展,用于为应用创建项目基架。 使用最新的预发行版。 | |
Node.js | 后端 JavaScript 运行时环境。 有关详细信息,请参阅 项目类型的Node.js 版本兼容性表。 | |
Visual Studio Code | JavaScript、TypeScript 或 SharePoint 框架 (SPFx) 生成环境。 使用最新版本。 |
了解测试工具
测试工具是具有名为 的 CLI 命令的 teamsapptester
npm 包。 运行 teamsapptester start
时,它会在本地计算机上打开一个模拟 Teams Web 客户端和 Bot Framework 服务的 Web 应用。 此 Web 应用不需要任何云资源,因为它使用模拟数据来模拟 Teams 的上下文信息。
若要在测试工具上使用 Teams 机器人,需要提供:
- 消息终结点:机器人消息终结点是链接测试工具和机器人的 URL。 可以使用环境变量更新终结点,
BOT_ENDPOINT
也可以使用默认值http://localhost:3978/api/messages
。 - 配置文件 (可选) :配置文件告知测试工具 Teams 中的自定义上下文信息。 该文件在项目的根文件夹中名为 .teamsapptesttool.yml 。 如果 Teams 找不到此文件,它将使用默认配置。 有关详细信息,请参阅 自定义 Teams 上下文。
Teams 工具包中的测试工具体验
与 Teams 客户端相比,测试工具为机器人应用程序提供了更快的调试体验。
打开 Visual Studio Code。
选择 Visual Studio Code 活动栏中的 Teams 工具包图标。
选择“ 创建新应用”。
选择“ 机器人”。
选择“ AI 聊天机器人”。 如果需要为机器人提供其他功能,请选择其他选项。
选择 “JavaScript”。
选择“ 默认文件夹”。
若要更改默认位置,请执行以下步骤:
选择“ 浏览”。
选择项目工作区的位置。
选择 “选择文件夹”。
为应用输入合适的 名称,然后选择 Enter 键。
此时会显示一个对话框,你需要选择“是”或“否”来信任此文件夹中文件的作者。
在左窗格中,选择“ 运行”和“调试 (
Ctrl+Shift+D
) ”,然后在下拉列表 中选择“在测试工具中调试” (预览) 。测试工具在网页中打开机器人。
活动触发器
可以使用活动触发器在测试工具中模拟活动。 有两种类型的活动触发器:
预定义的活动触发器
测试工具提供预定义的活动触发器来测试机器人的功能。
类别 | 活动 | 处理程序 |
---|---|---|
触发安装更新活动 | 安装机器人 卸载机器人 |
onInstallationUpdate onInstallationUpdateAdded onInstallationUpdate onInstallationUpdateRemove |
触发对话更新活动 | 添加用户 添加机器人 添加通道 |
onMembersAdded onTeamsMembersAddedEvent onTeamsChannelRenamedEvent |
删除用户 删除机器人 删除频道 删除团队 |
onMembersRemoved onTeamsMembersRemovedEvent onMembersRemoved onTeamsMembersRemovedEvent onTeamsChannelDeletedEvent onTeamsTeamDeletedEvent |
|
重命名通道 重命名团队 |
onTeamsChannelRenamedEvent onTeamsTeamRenamedEvent |
注意
并非所有范围都提供所有类型的活动。 例如,不能在个人聊天或群组聊天中添加或删除频道。
在测试工具的 模拟活动 菜单中提供了预定义的活动触发器。
若要模拟 “添加用户” 活动,请执行以下步骤:
在“测试工具”中,转到 “模拟活动 ”,然后选择“ 添加用户”。
此时将显示一个弹出窗口,用于预览活动处理程序。
选择“ 发送活动”。
机器人发送响应。
自定义活动触发器
可以使用 自定义活动 来自定义活动触发器,例如 , reactionsAdded
以满足机器人应用的要求。 测试工具会自动填充活动的必需属性。 还可以修改活动类型并添加更多属性。
选择模拟 活动>自定义活动。
添加
messageReaction
以在 属性type
下自定义活动并调用自定义活动。{ "type": "messageReaction", "reactionsAdded": [ { "type": "like" } ], "replyToId": "d60fd1cb-3e8f-44ef-849c-404806ba1b47" }
选择“ 发送活动”。
机器人在响应中发送
onReactionsAdded
处理程序。
自定义 Teams 上下文
项目根文件夹中的配置文件允许你自定义 Teams 上下文信息,例如聊天、团队和用户。 该文件提供模拟数据,用于测试 Bot Framework API 或 Bot Builder SDK 方法,例如 TeamsInfo.getTeamMembers
。
默认配置
测试工具在项目的根文件夹中包含一个内置配置文件。
# yaml-language-server: $schema=https://aka.ms/teams-app-test-tool-config/0.1.0/config.schema.json
# Visit https://aka.ms/teams-app-test-tool-config-guide for more details on this file.
# This configuration file customizes the Teams context information like chats, teams, and users.
# It contains mock data for testing Bot Framework APIs or Bot Builder SDK methods such as TeamsInfo.getTeamMembers().
# You can customize this file to change API response if your bot code uses these APIs.
version: "0.1.0"
tenantId: 00000000-0000-0000-0000-0000000000001
bot:
id: 00000000-0000-0000-0000-00000000000011
name: Test Bot
currentUser:
id: user-id-0
name: Alex Wilber
userPrincipleName: alexw@example.com
aadObjectId: 00000000-0000-0000-0000-0000000000020
givenName: Alex
surname: Wilber
email: alexw@example.com
users:
- id: user-id-1
name: Megan Bowen
userPrincipleName: meganb@example.com
aadObjectId: 00000000-0000-0000-0000-0000000000021
givenName: Megan
surname: Bowen
email: meganb@example.com
- id: user-id-2
name: Adele Vance
userPrincipleName: adelev@example.com
aadObjectId: 00000000-0000-0000-0000-0000000000022
givenName: Adele
surname: Vance
email: adelev@example.com
- id: user-id-3
name: Isaiah Langer
userPrincipleName: isaiah@example.com
aadObjectId: 00000000-0000-0000-0000-0000000000023
givenName: Isaiah
surname: Langer
email: isaiahl@example.com
- id: user-id-4
name: Patti Fernandez
userPrincipleName: pattif@example.com
aadObjectId: 00000000-0000-0000-0000-0000000000024
givenName: Patti
surname: Fernandez
email: pattif@example.com
- id: user-id-5
name: Lynne Robbins
userPrincipleName: lynner@example.com
aadObjectId: 00000000-0000-0000-0000-0000000000025
givenName: Lynne
surname: Robbins
email: lynner@example.com
personalChat:
id: personal-chat-id
groupChat:
id: group-chat-id
name: Group Chat
team:
id: team-id
name: My Team
aadGroupId: 00000000-0000-0000-0000-000000000031
channels:
- id: channel-announcements-id
name: Announcements
更新配置文件
如果机器人代码使用 Bot Framework API,则可以修改配置文件以更改 API 响应。 让我们考虑在团队中安装的 Azure DevOps 通知机器人,该机器人从 Azure DevOps 提取非活动 bug。 它标识非活动 bug 的所有者,提取其电子邮件地址,并每天向其个人聊天发送通知。
若要在测试工具中全面测试此机器人,更新配置文件以使用非活动 bug 所有者的正确电子邮件地址至关重要。
转到
.teamsapptesttool.yml
项目的根文件夹中的文件。转到
users
部分并更新name
所需用户的 、userPrincipleName
和email
。users: - id: user-id-1 name: Megan Bowen userPrincipleName: meganb@example.com aadObjectId: 00000000-0000-0000-0000-0000000000021 givenName: Megan surname: Bowen email: some-real-user@real-domain.onmicrosoft.com
保存文件,然后选择 F5 以在测试工具中进行调试。
注意
在 Visual Studio Code 中编辑配置文件时,Intellisense 会自动更新属性名称,并在输入无效值时发出警告。
必须认识到更新配置文件有三个主要影响:
- 它会影响从 Bot Framework 连接器 API 获取的响应,
TeamsInfo.getPagedMembers()
例如 。 - 它塑造活动有效负载中的详细信息,例如
activity.recipient
。 - 它会影响测试工具中的用户界面,例如群聊名称。
限制
通过 Teams 应用清单启用的机器人功能不可用,因为测试工具不会处理它。
测试工具不支持除自适应卡片以外的所有类型的卡片。
测试工具不支持以下自适应卡片功能:
测试工具不支持以下体验:
- 移动设备
- 会议
测试工具可以模拟以下体验:
功能 在测试工具中调试 在本地调试 Teams 应用 基本发送/接收消息 可用 可用 Bot Framework API (TeamsInfo.getPagedMembers () ...) 可用 (使用模拟数据) 进行响应 可用 发送 Teams 事件 可用的 (模拟活动) 可用 键入指示器 不可用 可用 选项卡、消息扩展、对话 (TeamsJS v1.x) 中称为任务模块、单一登录 (SSO) 和非自适应卡 不可用 可用
使用测试工具调试现有应用
确保已使用 Teams 工具包创建现有机器人。 若要使用测试工具调试机器人,请执行以下步骤:
在 Teams 工具包中打开现有机器人的项目文件夹。
转到 EXPLORER.vscode>。
选择 “launch.json ”,并在文件末尾添加以下代码:
// .vscode/launch.json { ... "compounds": [ ... { "name": "Debug in Test Tool", "configurations": [ "Attach to Local Service" ], "preLaunchTask": "Start Teams App (Test Tool)", "presentation": { "group": "1-local", "order": 1 }, "stopAll": true }, ] }
转到 tasks.json 并在文件末尾添加以下代码:
{ "label": "Start Test Tool", "type": "shell", "command": "npm run dev:teamsfx:launch-testtool", "isBackground": true, "options": { "env": { "PATH": "${workspaceFolder}/devTools/teamsapptester/node_modules/.bin:${env:PATH}" } }, "windows": { "options": { "env": { "PATH": "${workspaceFolder}/devTools/teamsapptester/node_modules/.bin;${env:PATH}" } } }, "problemMatcher": { "pattern": [ { "regexp": "^.*$", "file": 0, "location": 1, "message": 2 } ], "background": { "activeOnStart": true, "beginsPattern": ".*", "endsPattern": "Listening on" } }, "presentation": { "panel": "dedicated", "reveal": "silent" } }, ], }
在 “资源管理器”下,创建 .localConfigs.testtool 文件并添加以下代码:
// .localConfigs.testTool # A gitignored place holder file for local runtime configurations when debug in test tool BOT_ID= BOT_PASSWORD= TEAMSFX_NOTIFICATION_STORE_FILENAME=.notification.testtoolstore.json
转到 资源管理器>env。
创建 .env.testtool 文件并添加以下代码:
// .env.testtool # This file includes environment variables that can be committed to git. It's gitignored by default because it represents your local development environment # Built-in environment variables TEAMSFX_ENV=testtool # Environment variables used by test tool TEAMSAPPTESTER_PORT=56150
如果有自定义环境变量,请在 .env.testtool 或 .env.testtool.user 中设置其值。
在 .env.testtool.user 中添加 OpenAI 密钥或 Azure OpenAI 密钥和终结点。
# SECRET_OPENAI_API_KEY=*********** SECRET_AZURE_OPENAI_API_KEY=*********** SECRET_AZURE_OPENAI_ENDPOINT=<https://your-openai-service-name.openai.azure.com/>
转到 package.json 并在 属性下
scripts
添加以下代码:"scripts": { ... "dev:teamsfx:testtool": "env-cmd --silent -f .localConfigs.testTool npm run dev", "dev:teamsfx:launch-testtool": "env-cmd --silent -f env/.env.testtool teamsapptester start", ... },
在左窗格中,选择“ 运行和调试 (
Ctrl+Shift+D
) 并在下拉列表 中选择”在测试工具中调试 ”。
测试工具成功调试现有机器人。
常见问题
如果测试工具不支持其功能,如何测试机器人?
你始终可以使用 Teams 客户端来测试测试测试工具不支持的功能。 选择“ 在 Teams (Edge) 中调试”或“ 在 Teams (Chrome) 中调试 ”选项,在 Teams 客户端中测试应用程序。
如何知道测试工具是否不支持机器人中的功能?
测试工具在检测到不支持的功能时,在对话和日志面板中显示警告消息。
Microsoft是否建议仅使用测试工具来测试机器人应用程序?
不正确。 我们始终建议用户在将应用程序移动到生产环境之前在 Teams 客户端中测试其机器人应用程序。
代码示例
示例名称 | Description | Node.js |
---|---|---|
测试工具示例应用 | 用于浏览测试工具的示例机器人应用。 | View |
分步指南
按照 分步指南 使用 Teams 应用测试工具调试 AI 聊天机器人。