寻求ServiceNow REST API获取团队当前值班员工及邮箱的端点
获取ServiceNow当前值班员工的REST API方案
1. 定位REST API Explorer
- 直接在ServiceNow顶部搜索框输入
REST API Explorer,可快速定位工具,比菜单导航更高效 - 菜单路径备选:尝试导航到系统集成 > REST API Explorer(不同版本菜单命名可能略有差异)
2. 获取值班员工数据的API端点
ServiceNow中值班排班数据通常存储在on_call_rota表(部分实例可能用cmn_schedule_span,取决于排班配置),使用表API即可查询:
- 基础请求格式:
GET /api/now/table/on_call_rota
核心查询参数
sysparm_query:筛选当前生效的值班记录,示例:start_time<=NOW()^end_time>=NOW(),确保只返回当前在岗员工sysparm_fields:指定需返回的字段,示例:user,user.email,直接获取员工账号及关联邮箱sysparm_display_value:设为true可返回用户显示名称,方便告警内容使用
完整请求示例URL:
GET /api/now/table/on_call_rota?sysparm_query=start_time<=NOW()^end_time>=NOW()&sysparm_fields=user,user.email&sysparm_display_value=true
3. 权限配置要点
- 确保调用API的账号拥有
on_call_rota表的读取权限,以及rest_api_access角色(允许访问REST API) - Splunk脚本建议使用专用集成账号,避免使用个人账号
4. Splunk Python脚本示例片段
import requests from requests.auth import HTTPBasicAuth # ServiceNow实例配置 SN_INSTANCE = "你的实例名称" SN_USER = "集成专用账号" SN_PASS = "账号密码" # 构建API请求地址 api_url = f"https://{SN_INSTANCE}.service-now.com/api/now/table/on_call_rota" query_params = { "sysparm_query": "start_time<=NOW()^end_time>=NOW()", "sysparm_fields": "user,user.email", "sysparm_display_value": "true" } # 发送GET请求 response = requests.get( api_url, auth=HTTPBasicAuth(SN_USER, SN_PASS), headers={"Accept": "application/json"}, params=query_params ) # 处理响应数据 if response.status_code == 200: on_call_records = response.json()["result"] # 提取有效邮箱列表 alert_recipients = [record["user.email"] for record in on_call_records if record.get("user.email")] print(f"当前值班员工邮箱: {alert_recipients}") # 后续可添加发送告警邮件的逻辑 else: print(f"请求失败,状态码: {response.status_code}, 详情: {response.text}")
内容的提问来源于stack exchange,提问作者Andrew Smith
相关产品推荐
相关产品推荐

