技术人员可以在 Zia 的开发者控制台中定义适用于其组织的 [Zia] 操作。技术人员可以定义 Zia 支持的三种操作类型,包括直接提问、数据获取型提问和操作执行。
所有 ServiceDesk Plus Cloud 技术人员都可以在 Zia 的开发者控制台中配置操作。但是,技术人员只能修改或删除他们自己创建的操作。只有管理员对所有操作拥有完全控制权。
预配置完成后,这些操作将在 ServiceDesk Plus Cloud 中 Ask Zia 内的 汉堡 图标下显示。
以下是配置任意类型操作的通用初始步骤:
点击 Zia 集成页面上显示的链接以打开 Zia 的开发者控制台。
点击 AddAction 并选择 Write your Own。
.png)
例如,您希望定义一个用于提供系统管理员分机号码的操作。
在新建操作表单中,为您的操作提供一个名称。(该名称仅用于开发者控制台中的参考。)
选择 Answer a Question,然后选择 Give a Direct Answer。
设置此操作在 AskZia 中向用户显示的方式。为该操作提供一个简短但有意义的名称。
.png)
提供问题的答案,然后点击 Next。
.png)
输入所有可能用于在 AskZia 中调用同一操作的问题或语句。这些问题将作为推荐项供用户选择。
对问题进行排序,以便在 AskZia 中显示。使用每个问题右侧显示的指针来重新定位问题顺序。
点击 Save。

选择是仅允许 Zoho 用户还是允许所有网页用户访问该操作。
点击 Save。
.png)
您可以通过点击 ADD FOLLOWUP ACTION 来定义顺序操作。
.png)
从可用问题中进行选择,然后点击 UPDATE。

然后,点击左侧窗格中显示的 ServiceDesk Plus Cloud,并点击页面上半部分的 UPDATE。
例如,您希望定义一个通过主题搜索请求的操作。
在新建操作表单中,为您的操作提供一个名称。(该名称仅用于开发者控制台中的参考。)
选择 Answer a Question,然后选择 Construct Answer by Fetching Data。
设置此操作在 AskZia 中向用户显示的方式。为该操作提供一个简短但有意义的名称。
使用 Add 图标,输入所有可能用于在 AskZia 中调用同一操作的问题或语句。这些问题将作为推荐项供用户选择。
对问题进行排序,以便在 AskZia 中显示。使用每个问题右侧显示的指针来重新定位问题顺序。第一个问题将显示在 AskZia 中的 汉堡 菜单下。
.png)
然后,您必须提供 参数。有关每种参数类型的详细说明,请参阅此处。
点击 AddParam 并填写相关字段。

使用 Add 图标并输入该操作所需的所有参数。
对参数进行排序,以便在调用该操作时按顺序显示在 AskZia 中。使用每个参数左侧显示的指针来重新定位参数顺序。
选择是仅允许 Zoho 用户还是允许所有网页用户访问该操作,然后点击 Done。
.png)
在显示的页面上点击 EDIT EXECUTION FUNCTION。
将脚本插入编辑器中,然后点击 SaveScript。(此处提供了示例操作的格式化脚本。)
您可以通过与页面右侧提供的实时控制台中的 Zia 进行交互,立即测试脚本执行情况,如下所示:
.png)
点击 Done。
然后,点击左侧面板中显示的 ServiceDesk Plus Cloud,并在页面上半部分点击 PUBLISH。
假设您想定义一个添加提醒的操作。
在新建操作表单中,为您的操作提供一个名称。(该名称仅用于开发者控制台内部参考。)
选择 Perform an Operation。
说明该操作在 Ask Zia 中应如何向用户显示。为该操作提供一个简短但有意义的名称。例如,Add Reminder 可以表示任务“Zia,您能为请求添加一个提醒吗?”

使用 Add 图标,输入所有可用于在 Ask Zia 中调用同一操作的问题或句子。这些问题将推荐给用户进行选择。
对问题进行排序,以确定它们在 AskZia 中的显示顺序。使用每个问题右侧显示的指针来重新定位问题。第一个问题将显示在 AskZia 中的 Hamburger 菜单下。

点击 Next 并提供 参数。有关字段的详细说明,请参阅此处。
点击 Add Param 按钮并填写详细信息。

使用 Add 图标,输入该操作所需的所有参数。对参数进行排序,以便在调用操作时按顺序显示在 Ask Zia 中。使用每个参数左侧显示的指针来重新定位参数。
选择仅 Zoho 用户还是所有网络用户可以访问此操作,然后点击 Done。

点击 Done。
在显示的页面上点击 Edit Execution Function。
将脚本插入编辑器中,然后点击 Save Script。(此处提供了示例操作的格式化脚本。)
您可以通过与页面右侧提供的实时控制台中的 Zia 进行交互,立即测试脚本执行情况,如下所示:
.png)
点击 Done。
然后,点击左侧面板中显示的 ServiceDeskPlusCloud,并在页面上半部分点击 UPDATE。
在 ServiceDesk Plus Cloud 下,选择一个筛选器以查看相应的操作。
.png)
点击您想要修改或停用的操作。
如需修改,请使用页面右上角显示的 Edit 图标。在数据获取问题和操作中,您可以通过点击 Edit Code(位于 Edit 下拉菜单中)来修改脚本。
如需停用,请点击 Vertical Ellipsis 按钮,然后点击 Deactivate。已停用的操作将显示在 Inactive [操作] 筛选器下。
.png)
参数是必须从用户处接收以完成操作的输入数据。
在每个参数中,您必须填写以下字段:
参数类型 - 为您的参数选择合适的数据类型。Zia 支持以下数据类型:
数组类型参数 - 对于数组类型参数,您可能需要输入以下附加信息:
当您在 ServiceDesk Plus Cloud 中与 Zia 交互时,Zia 将通过显示提示来获取在操作中配置的参数输入。
result = Map();
/*
按主题搜索的条件
*/
criteria = Map();
criteria.put("condition","like");
criteria.put("field","subject");
criteria.put("value",searchsubject);
list_info_param = Map();
list_info_param.put("search_criteria",criteria);
paramMap = Map();
paramMap.put("list_info",list_info_param);
apiUrl = "/api/v3/requests";
client_data = sessionData.get("client_data");
if(client_data != null)
{
appName = client_data.get("appname");
if(appName != null)
{
apiUrl = "/app/" + appName + apiUrl;
}
}
response = invokeurl
[
url :"https://sdpondemand.manageengine.com"+apiUrl
type :GET
parameters:{"input_data":paramMap}
connection:"sdpondemand3"
];
info response;
// 以表格格式显示 API 结果
requestArr = response.get("requests");
card = list();
item = Map();
item.put("type","table");
item.put("heading","请求");
columns = {"请求 ID","请求主题","请求人姓名","分配给","状态","到期日期","链接"};
item.put("columns",columns);
rows = {};
foreach request in requestArr
{
row = {};
row.add(request.get("display_id"));
row.add(request.get("subject"));
requestername = request.get("requester").get("name");
row.add(requestername);
technician = request.get("technician");
technicianName = "-";
if(technician != null)
{
technicianName = technician.get("name");
}
row.add(technicianName);
row.add(request.get("status").get("name"));
dueByTime = request.get("due_by_time");
if(dueByTime != null)
{
dueByTimeLabel = dueByTime.get("display_value");
}
if(dueByTimeLabel == null)
{
dueByTimeLabel = "-";
}
row.add("" + dueByTimeLabel);
row.add("https://sdpondemand.manageengine.com/app/" + appName + "/WorkOrder.do?woMode=viewWO&woID=" + request.get("id"));
rows.add(row);
}
item.put("rows",rows);
card.add(item);
//info "此操作中的卡片数据======>" + card;
if(requestArr.size() > 0)
{
result.put("card",card);
}
else
{
result.put("message","未找到结果。");
}
return result;apiUrl = "/api/v3/reminders";
client_data = sessionData.get("client_data");
if(client_data != null)
{
appName = client_data.get("appname");
if(appName != null)
{
apiUrl = "/app/" + appName + apiUrl;
}
}
reminder_base = Map();
if(summaryparam != null && reminderdateparam != null && remindertimeparam != null)
{
reminder_base.put("summary",summaryparam);
datemap = Map();
reminderdateparam = reminderdateparam.toTime().addHour(remindertimeparam.toTime().getHour());
reminderdateparam = reminderdateparam.toTime().addMinutes(remindertimeparam.toTime().getMinutes());
datemap.put("value",reminderdateparam.toTime().toLong());
reminder_base.put("date",datemap);
paramMap = Map();
paramMap.put("reminder",reminder_base);
response = invokeurl
[
url :"https://sdpondemand.manageengine.com"+apiUrl
type :POST
parameters:{"input_data":paramMap}
connection:"sdpondemand3"
];
responseStatusObject = response.get("response_status");
result = Map();
if(responseStatusObject != null)
{
responseStatusMessage = responseStatusObject.get("status");
resultString = "添加提醒时出错。";
if(responseStatusMessage == "success")
{
resultString = "提醒添加成功。";
}
else
{
responseMessages = responseStatusObject.get("messages").toJSONList().get(0);
resultString = resultString + " 请使用有效的 " + responseMessages.get("field") + " 重新执行该过程。";
}
result.put("message",resultString);
}
}
return result;