🤖 面向微软团队的人工智能IT服务台机器人
为Microsoft Teams构建的智能、会话式IT服务台助理。该机器人利用 Azure OpenAI, Azure人工智能搜索(RAG),the 模型上下文协议(MCP),以及 ServiceNow 自动化事件路由、分流和经理审批。
✨ 主要特点
- 对话界面: 用户在Microsoft Teams内部报告IT问题。
- 自动SLA和优先级分类: 使用Azure AI搜索查询内部SLA策略文档,以动态确定票证的优先级/紧急程度。
- 智能AI分配路由: 查询基于Excel的团队映射矩阵,并将其与 实时ServiceNow工作负载指标 以找到绝对最佳的可用L1/L2代理。
- ServiceNow集成: 在ServiceNow中自动创建、更新和解决事件。
- 1-单击安全管理器批准: 对于高优先级(P1)问题,机器人会将票证置于“搁置”状态,生成加密安全的令牌,并向经理发送电子邮件。经理可以通过手机/笔记本电脑点击一下,批准人工智能建议的任务--无需登录ServiceNow。
______________________________________________________________________
🏗️ 建筑
- 微软团队/Bot框架(
app.py): 保持对话状态和用户交互。 - AI推理引擎(
teams_bot.py): Azure OpenAI处理对话,确定下一步,并决定调用哪些工具。 - MCP工具服务器(
server.py): 将Python函数暴露为AI使用的离散工具(例如。,create_ticket,find_assignee,lookup_sla_policy). - ServiceNow自定义API: 处理安全令牌存储、审批记录生成和未经身份验证的一键电子邮件操作。
______________________________________________________________________
📋 先决条件
- Python 3.9+
- Microsoft Azure帐户: Azure OpenAI部署和Azure AI搜索索引(加载了您的SLA策略)。
- 微软机器人框架: 团队集成应用程序ID和密码。
- ServiceNow开发人员实例: 管理员访问以创建自定义字段和API。
______________________________________________________________________
⚙️ 环境变量设置
创建一个 .env 将文件放在项目的根目录中,并用以下内容填充它:
# Microsoft Bot Framework Credentials
MICROSOFT_APP_ID=your_bot_app_id
MICROSOFT_APP_PASSWORD=your_bot_password
MICROSOFT_APP_TENANT_ID=your_tenant_id
# Azure OpenAI Credentials
AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com/
AZURE_OPENAI_KEY=your_openai_key
AZURE_OPENAI_API_VERSION=2024-02-15-preview
AZURE_OPENAI_DEPLOYMENT=your_model_deployment_name
# Azure AI Search (SLA Policy Knowledge Base)
AZURE_SEARCH_ENDPOINT=https://your-search.search.windows.net
AZURE_SEARCH_KEY=your_search_key
AZURE_SEARCH_INDEX_NAME=your_index_name
# ServiceNow Credentials
SNOW_INSTANCE=devXXXXX.service-now.com
SNOW_USER=admin
SNOW_PASSWORD=your_snow_password______________________________________________________________________
🛠️ ServiceNow配置
要使一键式令牌审批系统工作,您必须在ServiceNow实例中配置以下内容:
1.自定义字段
- 导航到
incident表,并添加类型为的新自定义字段 参考 (指着sys_user表)命名u_ai_suggested_engineer. - 确保开箱即用
correlation_id字段在偶发事件表上处于活动状态(用于存储安全的一次性令牌)。
2.自定义脚本REST API
导航至 脚本化REST API 并创建一个新的API:
- 姓名: Teams Bot API
- API标识:
teams_bot_api(命名空间:例如。,1920142)
资源A:创建审批(POST)
- 相对路径:
/create_approval - 需要身份验证: 是
- 目的: 从Python获取有效载荷,将安全令牌保存到事件的
correlation_id,并创建sysapproval_approver记录。
资源B:流程审批点击(GET)
- 相对路径:
/process_approval - 需要身份验证: ❌ 不 (取消选中此框,以便经理可以在不登录的情况下单击电子邮件)。
- 目的: 阅读
tokenURL中的参数,根据事件的correlation_id,分配票证,清除令牌,并返回一个成功的HTML页面。
3.电子邮件通知和脚本
- 导航至 系统通知->电子邮件->通知电子邮件脚本.
- 创建一个名为的脚本
generate_manager_assignment_links. - 此脚本遍历分配组成员,从事件中获取秘密令牌,并为经理的电子邮件生成动态HTML按钮。
______________________________________________________________________
🚀 安装和运行应用程序
1.克隆存储库并安装依赖项:
git clone https://github.com/yourusername/teams-itsm-bot.git
cd teams-itsm-bot
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt2.确保本地数据文件存在: 确保 roster.xlsx 和 teams_mapping.xlsx 存在于 data/ 文件夹。
3.启动MCP服务器: 打开终端并启动工具服务器(通过SSE在端口8000上运行)。
python -m mcp_server.azure_server
python -m mcp_server.servicenow_server4.启动Teams Bot: 打开第二个终端并启动aiohttp web服务器。
python app.py5.接触互联网(用于本地测试): 如果使用Microsoft Teams或Bot Framework Emulator进行本地测试,请使用Ngrok隧道端口3978。
ngrok http 3978*(将Azure Bot消息传递终结点更新为 https://.ngrok.app/api/messages)*
______________________________________________________________________
🧪 如何使用(工作流示例)
- 用户: “嗨,我的设计软件在启动时总是崩溃。请帮忙。”
- 机器人(思考):
- 呼叫 lookup_sla_policy ->确定这是一个紧急/关键的P1问题。 - 呼叫 find_assignee ->查看Excel映射,确定它属于 Software_Support.查询SNOW,发现“Karen”有0张有效票。 - 呼叫 create_ticket ->创建INC0010147。 - 呼叫 request_manager_approval ->将票搁置,生成令牌,推送到Snoww。
- 机器人(响应): “我创建了INC0010147。因为这是一个关键优先级问题,所以在向您的团队经理发送电子邮件以批准AI建议的分配给Karen时,它已被搁置。"
- 经理: 收到电子邮件,点击 "⭐ 批准AI分配\[Karen\]”.
- 系统: 令牌立即验证。票已分配给Karen并移至“进行中”。
______________________________________________________________________
🛡️ 安全说明
- 未经身份验证
/process_approvalAPI端点由加密强、32个字符的伪随机URL-安全令牌保护。 - 代币严格来说是一次性使用的。单击后
correlation_id从ServiceNow中清除,使URL永久处于非活动状态。
