创建 Teams 聊天机器人
Microsoft Teams 聊天机器人允许用户通过文本、交互式卡片和对话与 Web 服务进行交互, (TeamsJS v1.x) 中称为任务模块。 基本对话通过 Bot Framework 连接器(单个 REST API)进行处理。 此 API 使机器人能够与 Teams 和其他频道通信。
Bot Builder SDK 的主要功能
- 提供对 Bot Framework 连接器的访问。
- 管理聊天流和状态。
- 包含认知服务,例如自然语言处理 (NLP) 。
将机器人添加到组或团队时,将发送简介消息。 该消息简要介绍了机器人的功能及其使用方式。
本分步指南可帮助你在 Teams 应用程序中创建聊天机器人。 可以看到以下输出:
先决条件
确保安装以下工具并设置开发环境:
安装 | 用于使用... | |
---|---|---|
Microsoft 365 开发人员帐户 | 具有安装应用的相应权限的 Teams 帐户的访问权限。 | |
Visual Studio 2022 | 可以在 Visual Studio 2022 中安装企业版,并安装 ASP.NET 和 Web 开发工作负载。 使用最新版本。 | |
.NET Core SDK | 用于本地调试和Azure Functions应用部署的自定义绑定。 如果尚未安装最新版本,请安装可移植版本。 | |
Microsoft Teams | Microsoft Teams,通过聊天、会议和通话应用与你合作的每个人协作 | |
开发隧道 | Teams 应用功能 (对话机器人、消息扩展和传入 Webhook) 需要入站连接。 隧道将开发系统连接到 Teams。 开发隧道是一种功能强大的工具,用于安全地将 localhost 打开到 Internet 并控制谁有权访问。 Visual Studio 2022 版本 17.7.0 或更高版本中提供了开发隧道。 或者 还可以使用 ngrok 作为隧道,将开发系统连接到 Teams。 对于仅包含选项卡的应用,这不是必需的。 此包使用 npm devDependencies ) 安装在项目目录 (中。 |
注意
下载 ngrok 后,注册并安装 authtoken。
设置本地环境
选择“ 代码”。
在下拉菜单中,选择“ 使用 GitHub Desktop 打开”。
选择“ 克隆”。
注册Microsoft Entra应用
在 Azure 中开发和托管机器人服务时,将其注册到 Azure 机器人服务。 操作步骤如下所示:
将机器人注册到 Azure 机器人服务。
创建启用单一登录 (SSO) 机器人身份验证的客户端密码。
添加 Teams 频道以部署机器人。
使用开发隧道创建到 Web 服务器终结点的隧道, (建议) 或 ngrok。
将消息传递终结点添加到你创建的开发隧道。
添加应用注册
转到Azure 门户。
选择“应用注册”。
选择“ + 新建注册”。
输入应用的名称。
选择任何组织目录中的帐户 (任何Microsoft Entra ID租户 - 多租户) 。
选择“注册”。
你的应用已在 Microsoft Entra ID 中注册。 此时会显示应用概述页。
注意
保存 应用程序 (客户端的应用 ID) ID 和 目录 (租户) ID 以供进一步使用。
创建隧道
打开 Visual Studio。
选择 “打开项目或解决方案”。
转到 Microsoft-Teams-Samples > 示例 > 机器人对话 > csharp。
选择 “TeamsConversationBot.sln 文件”。
此时会显示概述窗口。
在调试下拉列表中,选择“ 开发隧道 (无活动隧道) >创建隧道...”。
将出现一个弹出窗口。
在弹出窗口中更新以下详细信息:
- 帐户:输入Microsoft或 GitHub 帐户。
- 名称:输入隧道的名称。
- 隧道类型:从下拉列表中选择“ 临时”。
- 访问:从下拉列表中选择“ 公共”。
选择“确定”。
此时会显示一个弹出窗口,显示已成功创建开发隧道。
选择“确定”。
可以在调试下拉列表中找到已创建的隧道,如下所示:
选择 F5 以在调试模式下运行应用程序。
如果出现 “安全警告 ”对话框,请选择“ 是”。
将出现一个弹出窗口。
选择 继续。
开发隧道主页将在新的浏览器窗口中打开,开发隧道现在处于活动状态。
转到 Visual Studio,选择“ 查看 > 输出”。
在 “输出 控制台”下拉菜单中,选择“ 开发隧道”。
输出控制台显示开发隧道 URL。
添加 Web 身份验证
在左窗格中的 “管理”下,选择“ 身份验证”。
选择 “添加平台>Web”。
通过将 追加
auth-end
到完全限定的域名,输入应用的重定向 URI。 例如,https://your-devtunnel-domain/auth-end
或https://your-ngrok-domain/auth-end
。在 “隐式授予和混合流”下,选中“ 访问令牌 和 ID 令牌 ”复选框。
选择“配置”。
在 “Web”下,选择“ 添加 URI”。
输入
https://token.botframework.com/.auth/web/redirect
。选择“保存”。
创建客户端密码
在左窗格中的 “管理”下,选择“ 证书 & 机密”。
在 “客户端机密”下,选择“ + 新建客户端密码”。
此时会显示 “添加客户端机密 ”窗口。
输入 “说明”。
选择“添加”。
在“ 值”下,选择“ 复制到剪贴板 ”以保存客户端密码值以供进一步使用。
添加 API 权限
在左窗格中,选择“ API 权限”。
选择“ + 添加权限”。
选择 Microsoft Graph。
选择“应用程序权限”。
选择 “User>User.Read.All”。
选择 添加权限。
注意
- 如果未向应用授予 IT 管理员同意,用户必须在首次使用应用时提供同意。
- 仅当Microsoft Entra应用在不同租户中注册时,用户才需要同意 API 权限。
添加应用程序 ID URI
在左窗格中的 “管理”下,选择“ 公开 API”。
在 “应用程序 ID URI”旁边,选择“ 添加”。
以 或
api://your-ngrok-domain/botid-{AppID}
格式更新应用程序 ID URIapi://your-devtunnel-domain/botid-{AppID}
,然后选择“保存”。下图显示了域名:
添加范围
在左窗格中的 “管理”下,选择“ 公开 API”。
选择“ + 添加范围”。
输入 “access_as_user ”作为 “作用域名称”。
在 “谁可以同意?”下,选择“ 管理员和用户”。
更新其余字段的值,如下所示:
输入 Teams 可以访问用户的个人资料作为管理员同意显示名称。
输入“允许 Teams 以当前用户身份调用应用的 Web API”作为管理员同意说明。
输入 Teams 可以访问用户配置文件,并代表用户发出请求 作为 用户同意显示名称。
输入“启用 Teams”以调用此应用的 API,其权限与用户同意说明相同。
确保将“状态”设置为“已启用”。
选择“添加作用域”。
下图显示了字段和值:
注意
作用域名称必须与末尾追加的应用程序 ID URI
/access_as_user
匹配。
添加客户端应用程序
在左窗格中的 “管理”下,选择“ 公开 API”。
在 “授权的客户端应用程序”下,确定要为应用的 Web 应用程序授权的应用程序。
选择“ + 添加客户端应用程序”。
添加 Teams 移动或桌面和 Teams Web 应用程序。
对于 Teams 移动版或桌面版:输入 客户端 ID 作为
1fec8e78-bce4-4aaf-ab1b-5451cc387264
。对于 Teams Web:输入 客户端 ID 作为
5e3ce6c0-2b1f-4285-8d4b-75ee78787346
。
选中“ 授权的范围 ”复选框。
选择“添加应用程序”。
下图显示了 客户端 ID:
创建机器人
创建 Azure 机器人资源
注意
如果已在 Teams 中测试机器人,请注销此应用和 Teams。 若要查看此更改,请再次登录。
转到“主页”。
选择“ + 创建资源”。
在搜索框中,输入 Azure 机器人。
选择“Enter”。
选择“ Azure 机器人”。
选择“创建”。
在机器人 句柄中输入机器人名称。
从下拉列表中选择 订阅 。
从下拉列表中选择 资源组 。
如果没有现有的资源组,可以创建新的资源组。 若要创建新的资源组,请执行以下步骤:
- 选择“ 新建”。
- 输入资源名称,然后选择“ 确定”。
- 从 “新建资源组 位置”下拉列表中选择一个位置。
在 “定价”下,选择“ 更改计划”。
选择 FO Free>Select。
在 “Microsoft应用 ID”下,选择“ 应用类型 ”作为 “多租户”。
在 “创建类型”中,选择“ 使用现有应用注册”。
输入 应用 ID。
注意
不能使用相同的 Microsoft应用 ID 创建多个机器人。
然后“审阅 + 创建”。
验证通过后,选择“ 创建”。
机器人需要几分钟时间进行预配。
选择“转到资源”。
已成功创建 Azure 机器人。
添加 Teams 频道
在左窗格中,选择“ 频道”。
在 “可用频道”下,选择“ Microsoft Teams”。
选中复选框以接受 服务条款。
选择“ 同意”。
选择“应用”。
添加消息传送终结点
设置机器人服务连接
配置机器人,了解如何在 Teams 中对聊天机器人进行身份验证、创建 Teams 应用包并将其上传到组织。
- 在 Visual Studio 中更新appsettings.json文件。
- 更新 Visual Studio 中的 manifest.json 文件,并将其压缩为 文件资源管理器 中的 zip 文件。
- 在 Visual Studio 中运行解决方案。
- 将机器人上传到 Teams。
更新应用设置
在文件资源管理器中,转到 Microsoft-Teams-Samples>示例>机器人对话>csharp。
在 Visual Studio 中打开 appsettings.json 文件,并更新机器人的配置。
- 设置为
"MicrosoftAppType"
多租户。 - 设置为
"MicrosoftAppId"
机器人 Microsoft应用 ID。 - 将 设置为
"MicrosoftAppPassword"
机器人的客户端机密 值。 -
"MicrosoftAppTenantId"
将 设置为租户 ID。
- 设置为
选择“保存”。
更新清单
在文件资源管理器中,转到 Microsoft-Teams-Samples>示例>机器人对话>csharp>TeamsApp>appPackage。
在 Visual Studio 中打开 manifest.json 文件,然后进行以下更改:
- 将 和
"botId"
替换为"id"
机器人的 Microsoft 应用 ID。 - 将 替换为
"validDomains"
ngrok 域(https://
不包括 )。
- 将 和
压缩 appPackage 文件夹的内容以创建 manifest.zip。
注意
中
manifest.zip
不得包含任何其他文件夹。 它必须在 zip 文件夹中具有manifest json
源文件、color
图标和outline
图标。 在 Visual Studio 中运行解决方案,并在组织的演示租户或 Teams 帐户中上传清单。
在 Visual Studio 中运行解决方案
打开 Visual Studio。
选择“ 文件>打开>项目/解决方案...”。
转到 Microsoft-Teams-Samples>示例>机器人对话>csharp。
选择 “TeamsConversationBot.c#proj 文件”。
选择 F5 运行项目。
选择“ 是 ”以安装证书。
此时会显示一个网页,其中显示消息 “机器人已准备就绪!
将应用上传到 Teams
在 Teams 客户端中,选择“ 应用” 图标。
选择“管理应用”。
选择 “上传应用”。
查找“ 上传自定义应用”选项。 如果选项可见,则启用自定义应用上传。
注意
如果找不到上传自定义应用的选项,请与 Teams 管理员联系。
选择“ 打开 ”以上传在 appPackage 文件夹中创建的 .zip 文件。
选择“添加”。
选择“ 打开 ”以在个人范围内使用该应用。
或者,可以搜索并选择所需的范围,或者从列表中选择频道或聊天,然后在对话框中移动以选择“ 转到”。
可以与机器人交互。
与聊天机器人交互
可以通过向机器人发送消息或从命令列表中选择命令来与 Teams 中的机器人进行交互。 机器人响应字符串。
在 Teams 的左窗格中,选择“ (●●●) 添加的更多应用”,然后从列表中选择你的应用。 机器人显示 建议 ,如下所示:
- MentionMe
- 显示欢迎
- MessageAllMembers
- MessageAllMembersUsingAadId
MentionMe | 显示欢迎 | MessageAllMembers |
---|---|---|
结果:机器人响应消息并提及用户。 | 结果:机器人发送欢迎卡供你与之交互。 | 结果: 机器人向当前对话中的每个成员发送一对一消息。 |
有效范围: 个人聊天、群组聊天、团队聊天。 | 有效范围: 个人聊天、群组聊天、团队聊天。 | 有效范围: 个人聊天、群组聊天、团队聊天。 |
可以通过在撰写区域中键入 “@TeamsConversationBot ”或“ 我该怎么办?” 文本并从命令列表中选择一个选项并发送它。
完成挑战
你想出了这样的东西吗?
恭喜!
你已完成本教程以开始使用适用于 Microsoft Teams 的对话机器人。
你有关于此部分的问题? 如果有,请向我们提供反馈,以便我们对此部分作出改进。