定制Zia动作

定制Zia动作

技术人员可在 Zia 的开发人员控制台中定义特定于其组织的 [Zia] 操作。技术人员可以定义 Zia 支持的所有三类操作,包括直接问题、数据获取问题和操作。

配置自定义动作

所有 ServiceDesk Plus Cloud 技术人员都可以在 Zia 的开发人员控制台中配置动作。但是,技术人员只能修改或删除他们创建的动作。只有管理员才能完全控制所有动作。

技术人员可以配置任意数量的动作,没有任何限制。

预配置完成后,这些操作将出现在 ServiceDesk Plus Cloud 中 Ask Zia 内的汉堡图标下。

以下是配置任何类型操作的常用初始步骤:

点击 Zia 集成页面上显示的链接,打开 Zia 的开发人员控制台。

点击 "添加动作"并选择 "编写自己的动作"。

 


 

配置直接问题

比方说,您想定义一个提供系统管理员分机号码的操作。

在新操作表单中,为操作提供一个名称。(名称仅供开发人员控制台内部参考)。

选择回答问题,然后选择 "直接回答"。

说明此操作必须如何在 "Ask Zia "中显示给用户。给操作起一个简短但有意义的名称。


 

提供问题答案,然后单击 "下一步"。
 


 

输入所有可能的问题或句子,以便在 Ask Zia 中调用相同的操作。这些问题将推荐给用户选择。

将问题按顺序显示在 Ask Zia 中。使用每个问题右侧显示的指针重新定位问题。

点击保存。


 

选择是否只让 Zoho 用户或网络上的所有用户访问该操作。

点击保存。

 


点击 "添加后续操作"可定义顺序操作。



 

从可用的问题中进行选择,然后点击 "更新"。 


 

然后,点击左侧窗格中显示的 ServiceDesk Plus Cloud,再点击页面上半部分的 "更新"。

只有在发布后,该操作才能在 ServiceDesk Plus Cloud 中使用。

配置数据获取问题

比方说,您想定义一个按主题搜索请求的操作。

在新操作表单中,为您的操作提供一个名称。(名称仅供开发人员控制台参考)。

选择 "回答问题",然后选择 "通过获取数据构建答案"。

说明此操作必须如何在 "Ask Zia "中显示给用户。给操作起一个简短但有意义的名称。

使用添加图标并输入所有可能的问题或句子,以便在 Ask Zia 中调用相同的操作。这些问题将作为建议显示,供用户选择。

将问题排序显示在 Ask Zia 中。使用每个问题右侧显示的指针调整问题的位置。第一个问题将列在 Ask Zia 的汉堡菜单下。

 


 

然后,您必须提供参数。

点击添加参数并填写字段。

 


 

使用添加图标,输入操作所需的所有参数。

组织参数,以便在调用操作时按顺序显示在 Ask Zia 中。使用每个参数左侧显示的指针调整参数的位置。

选择只有 Zoho 用户还是网络上的所有用户可以访问此操作,然后点击 "完成"。

 


 

点击显示页面上的编辑执行功能。

在编辑器中插入脚本,然后点击保存脚本。(下面是示例操作的格式化脚本)。

您可以在页面右侧提供的实时控制台中与 Zia 进行交互,立即测试脚本的执行情况,如下图所示:

 


 

点击 "完成"。

然后,点击左侧窗格中显示的 ServiceDesk Plus Cloud,并点击页面上半部分的 "发布"。

只有在发布后,该操作才能在 ServiceDesk Plus Cloud 中使用。

 

配置操作

假设您想定义一个添加提醒的操作。

在新操作表单中,为您的操作提供一个名称。(名称仅供开发人员控制台参考)。

选择执行操作。

说明此操作必须如何在 "Ask Zia "中显示给用户。给操作取一个简短但有意义的名称。例如,添加提醒可以代表任务 "Zia,您能为请求添加提醒吗?

 


 

使用添加图标并输入所有可能的问题或句子,以便在 Ask Zia 中调用相同的操作。这些问题将推荐给用户选择。

将问题按顺序显示在 Ask Zia 中。使用每个问题右侧显示的指针调整问题的位置。第一个问题将列在 Ask Zia 的汉堡菜单下。

 


点击下一步并提供参数。

点击添加参数按钮并填写详细信息。 


 

使用添加图标,输入操作所需的所有参数。

组织参数,以便在调用操作时按顺序显示在 Ask Zia 中。使用显示在每个参数左侧的指针重新定位参数。

选择只有 Zoho 用户还是网络上的所有用户可以访问此操作,然后单击 "完成"。

 


 

点击完成。

点击显示页面上的编辑执行功能。

在编辑器中插入脚本,然后单击保存脚本。(以下是示例操作的格式化脚本)。

您可以在页面右侧提供的实时控制台中与 Zia 进行交互,立即测试脚本的执行情况,如下图所示:

 


 

点击完成。

然后,点击左侧窗格中显示的 ServiceDesk Plus Cloud,并点击页面上半部分的更新。

只有在更新后,该操作才能在 ServiceDesk Plus Cloud 中使用。

 

 

查看/编辑/停用操作

在 ServiceDesk Plus Cloud 下,选择过滤器以查看相应的操作。


 

点击要修改或停用的操作。

要修改,请使用页面右上角显示的 "编辑 "图标。在数据获取问题和操作中,可以通过单击 "编辑 "下拉菜单中的 "编辑代码 "来修改脚本。

要停用,请单击垂直椭圆按钮并单击停用。停用的操作将显示在非活动 [操作] 过滤器下。


 

管理员可以控制所有操作,而技术人员只能修改或停用自己的操作。

参数

参数是为完成操作而必须从用户处接收的输入数据。

参数明细

参数名称 - 有效的参数名称应符合以下几点。

  • 在一个操作中,参数名称必须是唯一的
  • 以小写字母开头
  • 字符只能是字母、数字和下划线 
  • 以下名称不能用作参数,因为它们是 Zia 的保留字 - userInput、previousParam、additionalParams、sessionData、broadcast、previousUserMsgs、cache、org 和 user

 

参数类型 -为您的参数选择合适的数据类型。Zia 支持以下数据类型:

  • 字符串 - 字符串序列
  • 数字 - 任何有效数字
  • 时间 - 有效格式的时间
  • 日期 - 有效日期
  • 数组单选 - 用户可从中选择一个选项的列表
  • 数组多选 - 用户可选择多个选项的列表

数组类型参数 - 如果使用数组类型参数,可能需要输入以下附加信息:

  • 数组值 - 您可以包含一个选项列表,用户可以从中选择一个或多个选项。另外,您也可以为每个选项输入 ID,或者在输入值时使用自动生成的 ID。
  • 输入模式 - 指定数组参数提示用户的方式。可以是文本方式,也可以是可视化方式。如果选择文本方式,用户就可以键入(在聊天情况下)或说出(在语音情况下)他们想要为数组参数赋值的首选值。如果选择的是可视输入模式,用户必须点击或触摸从数组值中选择输入内容,这些内容将显示为单选按钮(如果是单选)或复选框(如果是多选)。

提示信息

当您在 ServiceDesk Plus Cloud 中与 Zia 交互时,Zia 会通过显示提示来获取操作中配置的参数输入。

脚本示例

Action 1: Search Requests by Subject
 

result = Map();
/*
Criteria to search by subject
*/
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 :"http://sdpondemand.manageengine.com"+apiUrl
    type :GET
    parameters:{"input_data":paramMap}
    connection:"sdpondemand3"
];
info response;
// Display the api result in table format
requestArr = response.get("requests");
card = list();
item = Map();
item.put("type","table");
item.put("heading","Requests");
columns = {"Request Id","Request Subject","Requester name","Assigned To ","Status","Due Date","Link"};
item.put("columns",columns);
rows = {};
for each  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 data in this actions======>" + card;
if(requestArr.size() > 0)
{
    result.put("card",card);
}
else
{
    result.put("message","No results found.");
}
return result;

动作 2:添加提醒

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 :"http://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 = "Error while adding reminder.";
        if(responseStatusMessage == "success")
        {
            resultString = "Reminder added successfully.";
        }
        else
        {
            responseMessages = responseStatusObject.get("messages").toJSONList().get(0);
            resultString = resultString + " Please repeat the process with a valid " + responseMessages.get("field") + ".";
        }
        result.put("message",resultString);
    }
}
return result;