OMG团队机器人与代理和MCP集成
一个由以下技术支持的智能Microsoft Teams机器人 OpenAI的代理SDK 和 模型上下文协议(MCP) 它使用户能够从Teams内部无缝地管理任务、验证和导航OMG项目管理系统。
______________________________________________________________________
🚀 特性
- 智能代理 --使用OpenAI的代理SDK来解释用户意图,并决定何时使用MCP工具与一般知识。
- MCP工具集成 --连接到OMG后端,用于身份验证、任务创建和站点切换等操作。
- 自适应卡 --丰富的交互式卡片,用于登录、任务管理和网站选择。
- 持久会话管理 --使用基于SQLite的存储维护用户会话和身份验证状态。
- 多回合对话 --记住先前互动的上下文感知对话。
______________________________________________________________________
🧩 建筑
🔁 流程摘要
- User → 团队→ Bot:
用户发送消息或与自适应卡交互。
- 机器人↔ OpenAI代理:
这 AgentTeamsBot 将消息转发给OpenAI代理。 Agent处理上下文并将响应流式传输回机器人。
- 代理工具决策:
- 如果 不需要工具,代理直接向团队发送消息或卡片。 - 如果a 需要工具它调用相关的MCP工具(例如。, login, create_task, switch_site).
- MCP服务器↔ OMG后端:
MCP服务器与OMG后端API双向通信,以执行请求的操作并返回结构化数据。
- 代理→ Bot → 团队:
代理将工具的结果格式化为对话或基于卡片的回复,机器人将其发布回团队。
______________________________________________________________________
⚙️ 设置
1.安装依赖项
pip install -r requirements.txt2.配置环境变量
在您的 .env 文件:
| 变量 | 描述 |
|---|---|
MICROSOFT_APP_ID | 机器人的Azure应用程序注册ID |
MICROSOFT_APP_PASSWORD | Bot的客户端机密 |
MICROSOFT_APP_TENANT_ID | Azure AD租户ID |
OPENAI_API_KEY | OpenAI代理的API密钥 |
BOT_PORT | 运行bot服务器的端口(默认值:8000) |
BASE_URL | OMG后端API URL |
LOGIN_BASE_URL | OMG登录端点 |
APP_BASE_URL | 公共URL(例如ngrok隧道) |
______________________________________________________________________
3.运行Bot
cd bot_app
python main.py机器人将:
- 启动MCP服务器。
- 加载系统说明
prompts/system_instructions.md. - 使用MCP工具初始化OpenAI代理。
- 在配置的端口上启动Teams机器人。
______________________________________________________________________
4.将机器人暴露在互联网上
使用 ngrok 或类似使您的机器人可访问:
ngrok http 8000然后更新 APP_BASE_URL 在你的 .env 使用生成的公共URL创建文件。
______________________________________________________________________
5.配置Azure Bot服务
- 首选 Azure 门户→ 机器人服务→ 你的机器人
- 更新 消息传递端点 致:
https://your-ngrok-url.ngrok-free.app/api/messages- 保存更改。
______________________________________________________________________
💬 用法
🔐 认证
用户: “让我登录” → 机器人会出示一张登录卡。身份验证后,代理确认用户的站点和个人资料。
🧱 任务管理
用户: “创建一个名为网站重新设计的任务,明天到期” → Agent提取详细信息,填写卡片,请求确认,然后通过MCP创建任务。
🏢 站点切换
用户: “切换到伦敦网站” → Agent会列出可用站点,并在选择时切换当前上下文。
🧠 通用查询
用户: “我如何跟踪项目进度?” → 当不需要工具时,代理会使用一般知识进行响应。
______________________________________________________________________
🗂️ 项目结构
bot_app/
├── main.py # Application entry point
├── agent_bot.py # Bot logic and event handling
├── mcp_server.py # MCP tools for OMG backend
├── cards.py # Adaptive Card factories
├── config.py # Configuration and environment
├── session_manager.py # SQLite-based session storage
└── prompts/
└── system_instructions.md # Agent’s behavior and decision guide______________________________________________________________________
🧠 关键组件
代理团队Bot(agent_bot.py)
- 处理团队消息、卡操作和流式代理响应
- 团队和OpenAI代理之间的桥梁
- 更新用户上下文和会话状态
OpenAI代理
- 解析意图和上下文
- 决定是否调用MCP工具
- 生成自适应卡片提示和对话回复
MCP服务器(mcp_server.py)
- 提供代理可调用的工具:
- login - get_user_and_company_info - get_available_sites - switch_site - create_task - logout
- 与OMG后端双向通信
______________________________________________________________________
🧩 对话流程示例
创建任务
- 用户:“为营销活动创建一个任务。”
- 代理人:“当然!我应该把它和哪个项目联系起来?”
- 用户:“项目7334。”
- 代理:\[显示预先填写的任务创建卡\]
- 用户:\[提交表格\]
- 代理:\[显示带有任务ID和链接的任务确认卡\]
切换站点
- 用户:“切换到伦敦办公室。”
- 代理人:\[电话
get_available_sites\] - 代理:\[显示下拉选择卡\]
- 用户:\[选择站点\]
- 代理:\[显示更新的公司信息\]
______________________________________________________________________
🛠️ 发展
添加新的MCP工具
- 在中创建函数
mcp_server.py随着@mcp.tool()装饰师。 - 在中添加工具映射
config.py在...之下TOOL_CONFIG. - (可选)在中创建新的卡工厂
cards.py. - 更新
system_instructions.md如果代理人需要特殊处理。
修改代理行为
编辑 prompts/system_instructions.md 完善:
- 意图检测逻辑
- 工具调用规则
- 鼓舞人心的风格和基调
______________________________________________________________________
🧾 故障排除
| 问题 | 可能的解决方法 |
|---|---|
| Bot没有响应 | 确保 main.py 正在运行和 ngrok 隧道处于活动状态 |
| MCP工具故障 | 验证中的后端URL和身份验证令牌 .env |
| 代理未调用工具 | 确认 system_instructions.md 已加载并且 mcp_server 处于活动状态 |
| 登录错误 | 检查调试凭据和MCP工具响应 |
______________________________________________________________________
📜 许可证
专有的 --OMG项目管理系统的一部分。
______________________________________________________________________
