要在 Teams 上使用您的 Chainlit 应用,您需要创建一个 Teams 机器人并设置必要的环境变量。

工作原理

Teams 机器人将在直接消息中可用。

预览

支持的功能

消息流式传输元素音频询问用户聊天记录聊天资料反馈

安装 Botbuilder 库

Botbuilder 库不包含在 Chainlit 依赖项中。您需要手动安装它。

pip install botbuilder-core

创建 Teams 应用

首先,导航到应用管理页面。在这里,创建一个新应用。

创建 Teams 应用

填写应用基本信息

导航到 配置 > 基本信息,填写您的应用基本信息。在填写完所有必填字段之前,您将无法发布您的应用。

基本信息

创建机器人

导航到 配置 > 应用功能,添加机器人功能。创建一个新机器人,并为其赋予以下权限并保存。

机器人权限

前往 Bot Framework Portal

导航到Bot Framework Portal,点击您刚创建的机器人,然后转到设置页面。

获取应用 ID

在 Bot Framework Portal 中,您会找到应用 ID。复制它并将其设置为 Chainlit 应用中的环境变量。

TEAMS_APP_ID=your_app_id

获取应用 ID

在本地工作

如果您在本地工作,您需要将您的本地 Chainlit 应用暴露到互联网,以便接收 Teams 的传入消息。您可以使用ngrok来实现这一点。

ngrok http 8000

这将为您提供一个公共 URL,可用于设置应用清单。部署 Chainlit 到公共主机后,请不要忘记替换此 URL。

设置消息终结点

在配置下,将消息终结点设置为您的 Chainlit 应用 HTTPS URL,并添加 /teams/events 后缀。

消息终结点

获取应用密钥

在同一页面上,您会找到一个蓝色的“管理 Microsoft 应用 ID 和密码”按钮。点击它。

管理密码

导航到 管理 > 证书与密钥,创建一个新的客户端密钥。复制它并将其设置为 Chainlit 应用中的环境变量。

TEAMS_APP_PASSWORD=your_app_secret

支持多租户账户类型

导航到 管理 > 身份验证,切换“任何组织目录中的账户(任何 Microsoft Entra ID 租户 - 多租户)”选项,然后保存。

多租户

启动 Chainlit 应用

由于 Chainlit 应用未运行,Teams 机器人将无法与之通信。

作为示例,我们将使用这个简单的应用

my_app.py
import chainlit as cl

@cl.on_message
async def on_message(msg: cl.Message):
    # Access the teams user
    print(cl.user_session.get("user"))

    # Access potential attached files
    attached_files = msg.elements

    await cl.Message(content="Hello World").send()

提醒:请确保环境变量已设置,并且您的本地 chainlit 应用已通过 ngrok 暴露到互联网。

启动 Chainlit 应用

chainlit run my_app.py -h

使用 -h 参数,因为我们正在使用 Teams,所以不打开默认的 Chainlit UI。

发布机器人

回到应用管理页面,导航到“发布到组织”,然后点击“发布”。

发布

授权机器人

在使用机器人之前,它必须获得 Teams 管理员的授权。为此,请导航到Teams 管理中心并找到该应用。

发布

然后授权它。

发布

现在您应该可以通过 Teams 与您的 Chainlit 应用进行交互了。