自定义部件

自定义部件

自定义部件将外部服务引入 ServiceDesk Plus 以扩展应用程序的功能。 通过它们,您可以在 ServiceDesk Plus 中访问第三方应用程序和网页。 部件是可嵌入的用户界面组件,您可以使用自定义部件包来创建。

自定义部件仅适用于企业版 ServiceDesk Plus。
目前,您可以为每个部件创建 10 个部件和 4 个部件项。

您可以将自定义部件配置为可从以下位置访问:

  • 仪表板
  • 网页标签
  • 请求明细
  • 变更明细
  • 资产明细
  • 发布明细
  • 自定义模块明细

创建自定义部件包

自定义部件包是创建自定义部件所需的配置文件和资源文件(如 html、png、js 或 css 文件)的捆绑包。 这有助于嵌入第三方应用程序和扩展 ServiceDesk Plus 的功能。


要创建自定义部件包,请执行以下操作

  • 使用资源文件开发应用程序软件包。
  • 创建一个 plugin-manifest.json 文件。
  • 将应用程序软件包和 plugin-manifest.json 文件压缩为一个 zip 文件。
  • 在自定义部件页面上传压缩文件。

以下文件介绍了创建应用程序软件包和插件-manifest.json 文件的步骤。

开发应用程序软件包

在应用程序文件夹中为部件创建一个资源文件。 生成指向部件项目登陆页面的 URL。 在 plugin-manifest.json 文件中配置路径 URL 时输入该 URL。


您可以使用 Util 函数在 ServiceDesk Plus 和自定义部件之间建立连接。 使用 Util 函数,您可以从自定义部件向应用程序服务器添加数据,或从自定义部件获取部件数据(如 URL 或任何数据)。

创建 Plugin-Manifest.JSON 文件

plugin-manifest.json 文件包含自定义部件的配置细节。 该文件中包含的某些key值是可选的,而其他key值则是必须的。


请使用以下指引为key提供值:

  • 部件*: 一个 JSON 数组,其中包含自定义部件项目的详细信息。 您必须在自定义部件包中添加至少一个部件项目。 您最多可以添加四个部件项目。 每个部件项都必须具有以下属性集。
    • 名称*: 部件项目的名称(最多 100 个字符)。
    • 描述:部件项目的简要说明。
    • path url*: 部件项目的 URL 路径。 示例格式:("/app/index.html)

 

  • 属性 JSON:包含自定义部件项目的属性。
    • 白名单: 输入要调用 API 的域 URL 路径。示例格式:("api.zoom.us")
    • visible_to: 根据角色限制自定义部件对用户的可用性。
    • 图标: 为部件项目提供图标的可选键。默认情况下,图标根据部件项目名称生成。通过在插件列表文件中输入图标 URL 作为 30X30 关键字的值,您可以上传最大尺寸为 30x30 像素的图标。图标会根据应用程序主题动态呈现为深色或浅色。
    • 主题图标: 您可以为不同的主题提供不同的图标。主题图标的 URL 应包括 “深色 ”或 “浅色 ”版本。格式示例: "icons": {"dark": "/app/[icon-name].png", "light": "/app/[icon-name].png"}.
  • 位置*: 定义 ServiceDesk Plus 中可呈现自定义部件的位置。 您必须提供至少一个部件项目的位置。 目前,您可以在以下位置配置自定义部件:

 

位置

JSON Key 格式

描述

Web 标签

"webtab"

自定义部件将作为网页标签添加到导航窗格中。

主页

"dashboard"

(for Technicians and Requesters)

自定义部件嵌入仪表板。 仪表板部件只能启用。 要添加部件,请单击仪表板上的新建 > 新部件。

如果为请求者启用了自定义部件,则可在请求者门户主页上嵌入仪表板部件。 

请求详细信息页面

"request.detail.tab"

作为选项卡添加到请求详细信息页面。

"request.detail.rightpanel"

已添加到请求详细信息页面的右侧面板。

变更详细信息页面

"change.detail.tab"

作为选项卡添加到变更详细信息页面。

"change.detail.rightpanel"

已添加到变更详细信息页面的右侧面板。

发布详细信息页面

"release.detail.tab"

作为选项卡添加到发布详细信息页面。

"release.detail.rightpanel"

已添加到发布详细信息页面的右侧面板。

资产详细信息页面

"asset.detail.tab"

已添加为资产详细信息页面的一个选项卡。

"asset.detail.rightpanel"

已添加到资产详细信息页面的右侧面板。

自定义模块详细信息页面

"cm_{modulename}.detail.tab"

作为选项卡添加到自定义模块详细信息页面。

"cm_{modulename}.detail.rightpanel"

已添加到自定义模块详细信息页面的右侧面板中

 

其他配置

附加配置(如连接或模块)可增强自定义部件的功能。附加配置的范围要么仅限于部件项目级别,要么全局适用于所有部件项目。


配置连接: 


连接允许您将自定义部件与第三方 API 集成。通过在部件包中配置连接,您可以从自定义部件访问第三方应用程序。一个自定义部件最多可添加四个连接。


要在插件列表文件中配置连接,可以在创建连接后直接将连接详情复制为 JSON 字符串。转到管理 > 开发者空间 > 连接,然后从连接详细信息页面复制 JSON 代码段。

  • 要允许用户在插件-管理文件中授权连接,请将 “userAccess ”设置为 “true”。

    要限制只对安装自定义 widget 的 SDAdmin 进行授权,请将 “userAccess ”设为 “false”。

 

 插件管理文件中配置的连接示例:

"connections": [{
"connectionLinkName":"twitter",
"connectionName":"twitter",
"serviceName":"twitter",
"userAccess":false,
"isUserDefinedService":false
}           
],

 

范围: 此配置具有全局范围。 将为所有自定义部件项目配置连接。
删除自定义部件时,相关连接也会被删除。

配置模块

模块允许您收集和存储更多数据。数据可通过 JS API、API 或应用程序在自定义模块部件中填充和管理。自定义模块的详细信息只能通过自定义部件更新/删除。


自定义模块的显示名称、显示复数名称和 API 名称在应用程序中是唯一的。请在插件-管理文件的相应字段中添加唯一值。

 

插件管理文件中配置的模块示例:

Modules
"modules":[ {
  "display_name": "zoom details1", //module name
  "display_plural_name": "zoom_c3ustom_1widget",
  "api_plural_name": "zoom_custom_3wi2dget",
  "name": "zoom1_custo33m_widget",
"permission": { //persions for the module
"all": [
  {
    "field": "type",
    "values": [
      "user",
      "technician"
    ],
    "condition": "is",
    "logical_operator": "and"
  }
],
"allowed_users": "All"
},
"fields": [{
  "additional_attributes":{"nullable":false}, //denotes its a mandory field
  "display_name": "request_id",
  "name": "request_id",
  "field_type": "Single Line",
  "only_numeric": false
},
{
  "display_name": "meeting_id",
  "name": "meeting_id",
  "field_type": "Single Line",
  "only_numeric": true
},
{
  "display_name": "ticket_name",
  "name": "ticket_name",
  "field_type": "Single Line",
  "only_numeric": false
},
{
  "display_name": "start_time",
  "name": "start_time",
  "field_type": "Single Line",
  "only_numeric": false
},
{
  "display_name": "duration",
  "name": "duration",
  "field_type": "Single Line",
  "only_numeric": false
},
{
  "display_name": "cur_tech_name",
  "name": "cur_tech_name",
  "field_type": "Single Line",
  "only_numeric": false
}],
}]

 

范围: 此配置针对每个部件项目。 如果自定义部件包有多个部件项目,用户可为每个部件项目配置唯一的自定义模块。
删除自定义部件时,相关的自定义模块也会被删除。

plugin-manifest.json 文件示例

{
  "name": "Meeting Apps",
  "widgets": [
      {
          "name": "Zoom Apps",
          "description": "A widget that allows technicians to gain remote access to devices across different platforms.",
          "locations": [
              {
                  "name": "request.detail.rightpanel",
                  "is_enabled": true
              }
          ],
          "property_json": {
            "icons":{
              "dark":"/app/img/TV_icon.png"
            },
            "white_list": [
                "api.zoom.us"
            ],
            "visible_to": ["SDAdmin"],
        },
          "url": "/app/zoom.html"
      }
  ],
  "connections": [{
  "connectionLinkName": "adminzoom",
  "connectionName": "adminzoom",
  "serviceName": "zoom",
  "userAccess": false,
  "isUserDefinedService": true,
  "sharedBy": 5
}],
"modules":[ {
  "display_name": "zoom details",
  "display_plural_name": "zoom_custom_widget",
  "description": "zoom custom widget details",
  "is_attachment_supported": true,
  "api_plural_name": "zoom_custom_widget",
  "name": "zoom1_custom_widget",
"permission": {
"all": [
  {
    "field": "type",
    "values": [
      "user",
      "technician"
    ],
    "condition": "is",
    "logical_operator": "and"
  }
],
"allowed_users": "All"
},
"fields": [{
  "additional_attributes":{"nullable":false},
  "display_name": "request_id",
  "name": "request_id",
  "field_type": "Single Line",
  "only_numeric": false
},
{
  "display_name": "meeting_id",
  "name": "meeting_id",
  "field_type": "Single Line",
  "only_numeric": true
},
{
  "display_name": "ticket_name",
  "name": "ticket_name",
  "field_type": "Single Line",
},
{
  "display_name": "start_time",
  "name": "start_time",
  "field_type": "Single Line",
},
{
  "display_name": "duration",
  "name": "duration",
  "field_type": "Single Line",
},
{
  "display_name": "cur_tech_name",
  "name": "cur_tech_name",
  "field_type": "Single Line",
}],
}]
}