You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 07:58:11