通过 ServiceNow 同步 Webhook,将 Flashduty 的故障与 ServiceNow Incident 进行关联同步,实现 Flashduty 与 ServiceNow 的联动。在 ServiceNow#
创建用户#
1.
登录 ServiceNow 实例控制台,通过选择 ALL
,输入 USERS
选择Organization
-Users
。
3.
在编辑页面中,User ID
输入:flashduty 。
4.
Password needs reset
和 Web service access only
以及 Internal Integration User
保持取消勾选状态。

配置用户#
用于访问 ServiceNow 的用户需要是管理员角色。1.
在用户列表页面,找到新创建的 flashduty
用户并进到配置页面。
2.
在编辑页面中,点击 Set Password
设置一个密码。
3.
点击 Roles
添加 admin 和 itil 角色。

在 Flashduty#
配置集成#
将以上配置的用户名/密码以及实例名称输入到左侧集成信息中并点击下一步进行配置。管理团队: 当选择管理团队后,只有该团队成员以及租户管理员可以编辑此集成。
To_ServiceNow:将 Flashduty 的故障同步至 ServiceNow。
From_ServiceNow:将 ServiceNow 的 Incident 同步至 Flashduty。
Two-way:Flashduty 和 ServiceNow 互相同步。
自动触发:需要配置相应的条件,Flashduty 会自动将符合条件的故障同步到 ServiceNow 中。
手动触发:需要在故障详情页的更多操作中手动触发 ServiceNow 同步(该集成配置的名称为触发器名称)。
严重程度映射:ServiceNow 的 Priority 是由 Impact 和 Urgency 的值共同决定的,所以可以参考 ServiceNow 的 Priority Lookup Rules
进行配置。另外需要注意的是,只有当 ServiceNow Incident 的 Urgency 发生变化时,才会触发 Flashduty 故障严重程度的更新。
自定义字段映射:可以选择将故障的某些标签或所有标签以及自定义字段内容同步至 ServiceNow 的字段中(仅支持文本类型的字段)。
在 ServiceNow#
当同步方向选择 From_ServiceNow 或 Two-way 时,还需要在 ServiceNow 中做相应的配置,以便将 ServiceNow Incident 同步至 Flashduty, 在同步至 Flashduty 时,有以下两种方式,可根据实际需求选择即可。手动同步#
该方式依赖 ServiceNow 提供的 UI Action 和 Script Include 的配置,根据以下步骤配置完成的效果:当新建 Incident 或更新 Incident 时,可以在功能区看到发送同步请求的按钮,触发该按钮,可以将当前 Incident 的内容同步至 Flashduty。需要注意的是,如果触发请求时遇到失败的情况,请重试(重试时间间隔需大于 10 秒)。配置 UI Action#
1.
登录 ServiceNow 实例控制台,通过选择 ALL
,输入 UI Actions
选择System Definition
-UI Actions
。
3.
Name
输入: Send To Flashduty, Table
选择 Incident 。
4.
Form button
,Active
,Show insert
,Show update
,Client
, List v2/3 Compatible
保持勾选状态。
配置 Script Include#
1.
登录 ServiceNow 实例控制台,通过选择 ALL
,输入 Script Includes
选择System Definition
-Script Includes
。
2.
点击 New
新建 Script Include。
3.
Name
输入:IncidentWebhookHelper , Accessible from
选择 All application scopes。
4.
Client callable
和 Active
保持勾选状态。
5.
Script
输入以下内容,其中 request.setEndpoint 中需要补充集成的推送地址:
注意: body 中配置的是默认接收字段,如果有自定义字段需要同步至 Flashduty ,需要额外手动补充内容到 body 中,比如希望添加一个字段名为:test_001 的字段(该字段名可以在配置集成中添加自定义字段的时候获取,不要使用 ServiceNow Inident 表单中显示的字段名),那么需要在 body 中补充:test_001: current.getDisplayValue("test_001")。
7.
回到 Script Includes 列表,继续创建。
8.
点击 New
新建 Script Include。
9.
Name
输入:IncidentWebhookHelperAjax , Accessible from
选择 All application scopes。
10.
Client callable
和 Active
保持勾选状态。
自动同步#
该方式依赖 ServiceNow 提供的 Business Rules 的配置,使用该方式可以实现当有新建或更新事件时,自动将 Incident 同步至 Flashduty。配置 Business Rules#
1.
登录 ServiceNow 实例控制台,通过选择 ALL
,输入 Business Rules
选择System Definition
-Business Rules
。
3.
Name
输入:Send To Flashduty , Table
选择 Incident。
4.
Advanced
和 Active
保持勾选状态。
5.
在 When to run
区域中,When
选择 async,Insert
和 Upsert
保持勾选状态,其他按需配置。
6.
在 Advanced
区域中,Script
填写以下内容,其中 endpoint 中需要补充集成的推送地址:
注意: body 中配置的是默认接收字段,如果有自定义字段需要同步至 Flashduty ,需要额外手动补充内容到 body 中,比如希望添加一个字段名为:test_001 的字段(该字段名可以在配置集成中添加自定义字段的时候获取,不要使用 ServiceNow Inident 表单中显示的字段名),那么需要在 body 中补充:test_001: current.getDisplayValue("test_001")。
同步信息#
表单字段#
ServiceNow | Flashduty | 备注 |
---|
Short_description | Title | |
Description | Description | |
Additional comments | Comments | |
State | Progress | |
Urgency | Severity | |
Others | Custom Fields | |
状态映射#
ServiceNow | Flashduty | 备注 |
---|
New | Trigger | |
In Progress | Processing | |
On Hold | Snoozed | 默认暂缓 2 小时 |
Resolved | CLosed | |
Closed | CLosed | |
Canceled | CLosed | |
优先级映射#
只有 ServiceNow 的 Urgency 值变化时,才会影响 Flashduty 的 SeverityServiceNow | Flashduty | 备注 |
---|
Low | Info | |
Medium | Warning | |
High | Critical | |