ServiceDesk Plus 附加字段设置为用户邮箱

[工单] 配置附加字段的值参考用户邮箱 | 附加字段可搜索所有用户邮箱

简介

在工单模板的配置过程中,会遇到部分场景需要附加字段引用用户的信息。比如申请权限的场景,用户A申请权限时,需要权限与用户B保持一致;又比如在移交资产时,用户A移交资产给用户B,需要用户B做确认接收资产。
目前局限:
如使用目前系统中的附加字段参考实体为User,则会仅展示用户的显示名。
不方便搜索,以及用户显示名会有重复的情况。
因此,暂时使用字段表单规则的方式来实现。

效果展示

输入两个字符以上后,会自动展示符合条件的用户邮箱,点击即可选择。

配置

全局函数


函数详情:
hosturl修改为可以直接调用的服务器本机URL,authtoken为技术员的API key
Quote
return {
"authtoken":"72342127-CD10-4277-A71C-D9BF74875D59"
};

回调自定义函数


函数详情:
Quote
global = global_config();

input_data= {
    "list_info": {
        "sort_field": "name",
        "start_index": 1,
        "sort_order": "asc",
        "row_count": "25",
        "get_total_count": true,
        "search_fields": {
            "email_id": param
        }
    },
    "fields_required": [
        "name",
        "is_technician",
        "citype",
        "login_name",
        "email_id",
        "department",
        "phone",
        "mobile",
        "jobtitle",
        "project_roles",
        "employee_id",
        "first_name",
        "middle_name",
        "last_name",
        "is_vipuser",
        "ciid"
    ]
};
response = invokeurl
[
url: global.get("hosturl")+"/api/v3/users"
type: GET
parameters: {"input_data":input_data}
headers: {"authtoken":global.get("authtoken")}
];
info response;
return response;


字段表单规则


脚本详情:
Quote
// 获取目标input元素,其中udf_sline_6902修改为实际附加字段的API字段名称
    var $input = jQuery('#for_udf_fields\\.udf_sline_6902');
    // 创建下拉容器
    var $dropdown = jQuery('<div class="autocomplete-dropdown"></div>')
        .css({
            'position': 'absolute',
            'z-index': '1000',
            'background': 'white',
            'border': '1px solid #ddd',
            'max-height': '200px',
            'overflow-y': 'auto',
            'display': 'none'
        })
        .insertAfter($input);

    // 输入事件处理(带防抖)
    var timer;
    $input.on('input', function() {
        clearTimeout(timer);
        timer = setTimeout(() => {
            var searchText = jQuery(this).val().trim();
            if (searchText.length >= 2) { // 至少2个字符才请求
                fetchSuggestions(searchText);
            } else {
                $dropdown.hide().empty();
            }
        }, 300);
    });

    // 获取建议数据
    function fetchSuggestions(query) {
    //调用回调函数,其中URL修改为实际回调自定义函数的自定义函数URL
jQuery.ajax({
        url:"/AppIntegrations?serviceName=callbackFunctions&api_name=get_user_list&auth_token=b44073e0c0313066e05cb8f5b4bbe29c237d4e77b6a2a9e7bed97c4ae3ed4842a71f607baad0a9762685d4469065bb385a0b1f7cef910e619d94e3ed9a94b30d85031457&PORTALID=1",
        type:"POST",
        async:false,
        cache:false,
        data:{"arguments":'{"param":"'+query+'"}'},
        success(data){
           dataJson = JSON.parse(data);
            result= dataJson.output;
             console.log(result);
             renderDropdown(result.users);
        }
   }); 
}

    // 渲染下拉选项
    function renderDropdown(items) {
        $dropdown.empty();
        items.forEach(item => {
            jQuery('<div class="select2-results-dept-0 select2-result select2-result-selectable"></div>')
                .text(item['email_id'])
                .css({ 'padding': '5px', 'cursor': 'pointer', 'width': '500px' })
                .hover(
                    () => jQuery(this).css('background', '#f5f5f5'),
                    () => jQuery(this).css('background', 'white')
                )
                .click(() => {
                    $input.val(item['email_id']);
                    $dropdown.hide();
                })
                .appendTo($dropdown);
        });
        $dropdown.show();
    }

    // 点击外部隐藏下拉
    jQuery(document).click(function(e) {
        if (!jQuery(e.target).closest('.autocomplete-dropdown, #for_udf_fields\\.udf_sline_301').length) {
            $dropdown.hide();
        }
    }); 

    • Related Articles

    • ServiceNow集成中没有记录新的工单

      问题:  即使正在为报告的监视器创建新告警,ServiceNow集成中也没有记录新的工单(低于14670版本的Applications Manger中仍然存在此问题) 解决方案: 确保为严重、警告和正常的严重性配置了记录工单的操作。  如果正常的严重性没有关联的操作,Applications Manager仍将维护初始工单并更新它,因为程序不知道初始工单是否已恢复正常。
    • 如何配置OpManager将工单记录到Service Deskplus指定的默认站点?

      解决方案:进行以下更改创建具有默认站点名称的工单。 1)在写字板中打开文件/Opmanager/conf/SDPMSPConfig.xml 2)在< SDP-Params >  之间输入站点名称,Opmanager必须在该站点上记录工单(区分大小写)  3)保存文件并重启OpManager。  之后所有来自OpManager的工单都将被记录到该默认站点。
    • 我怎么把邮件转成工单?

      首先,您应在您的邮箱服务器上创建一个邮件账号,例如"ServiceDesk",完成邮件的后台配置,例如协议、登录认证等,确保通过标准邮件协议,可以通过邮件客户端收发此账号的邮件 然后,登录ServiceDesk Plus,在管理 -> 邮箱服务器的设置 -> 接收服务器部分,设置邮箱服务其的连接信息。例如,服务器名imap.yourdomain.com, 邮件账号servicedesk@yourdomain.com(或servicedesk), 以及邮件地址、邮件协议、端口和收件间隔等。 ...
    • SDP OD:使用脚本实现当技术回复工单时状态自动更新,自动指派给回复工单的技术

      使用场景:用户希望当技术回复用户时,工单可以自动切换为某个自定义状态,以便标识技术开始工作 操作步骤: 1. 创建 一个触发器 2. 选择下面的条件(当然需要依据您所需要的条件调整) 3. 要实现状态自动更新,在自定义函数里黏贴入下面的代码,红色字体的statusname写入需要变更的状态名称 statusName = "Open"; parentObj = context.get("parent"); requestObj = parentObj.get("request"); ...
    • 【ITOM】通过邮件联系支持团队生成工单格式推荐

      在遇到任何问题需要协助时,均可发送邮件到 support@manageengine.cn 联系我们。系统在收到邮件后会自动生成工单,并通过邮件主题和内容过滤自动下发到相应的产品团队并由相应工程师回复。 为了确保工单的正常下发和及时响应,建议邮件格式: 邮件主题:产品名称(全程或缩写)_问题概述 邮件内容:产品关于页面+问题的详细描述+必要的截图 获取产品关于页面的办法如下: OPM/NFA/NCM/FWA/OpUtils ...