Soap message i cant send attachments via soap message

srinivas gupta1
Tera Contributor

If anyone has information, please respond to this with links and find the solution. I want to send Attachments creator via soap, but I am having trouble and getting errors.

5 REPLIES 5

srinivas gupta
Tera Contributor

Hi,

@ankurbiswas 
I have tired diffrent solutions for Attachements for via web service. I have written BR for this 

(function executeRule(current, previous /*null when async*/ ) {

    // Code to check if incident already exist on the other system
    var s = new sn_ws.SOAPMessageV2('Lemongrass''getRecords');
    s.setStringParameterNoEscape('getRecords.number', current.number);
    var response = s.execute();
    var ResponseBody = response.getBody();
    var status = response.getStatusCode();
    var xmlDoc = new XMLDocument2();
    xmlDoc.parseXML(ResponseBody);
    var num = xmlDoc.getNodeText('//number');
    var sysId = xmlDoc.getNodeText('//sys_id');
    //var status = xmlDoc.getNodeText('status_code');
    gs.addInfoMessage(status);
    gs.addInfoMessage(num);
    if (num) {
        //Updating the record if record already exist in the other system
        var s2 = new sn_ws.SOAPMessageV2('Lemongrass''update');
        s2.setStringParameterNoEscape('update.sys_id', sysId);
        s2.setStringParameterNoEscape('update.short_description', current.short_description);
        s2.setStringParameterNoEscape('update.resolved_by', current.resolved_by);
        s2.setStringParameterNoEscape('update.sys_id', sysId);
        s2.setStringParameterNoEscape('update.resolved_at', current.resolved_at);
        s2.setStringParameterNoEscape('update.urgency', current.urgency);
        s2.setStringParameterNoEscape('update.closed_by', current.closed_by);
        s2.setStringParameterNoEscape('update.hold_reason', current.hold_reason);
        s2.setStringParameterNoEscape('update.caller_id', current.caller_id);
        s2.setStringParameterNoEscape('update.category', current.category);
        s2.setStringParameterNoEscape('update.close_notes', current.close_notes);
        s2.setStringParameterNoEscape('update.close_code', current.close_code);
        if (current.state == '6' || current.state == '7' || current.state == '8')
            s2.setStringParameterNoEscape('update.state''7');
        else
            s2.setStringParameterNoEscape('update.state', current.state);
        s2.setStringParameterNoEscape('update.impact', current.impact);
        s2.setStringParameterNoEscape('update.number', current.number);
        s2.setStringParameterNoEscape('update.active', current.active);
        s2.setStringParameterNoEscape('update.work_notes', current.work_notes);
        s2.setStringParameterNoEscape('update.contact_type', current.contact_type);
        s2.setStringParameterNoEscape('update.subcategory', current.subcategory);
        s2.setStringParameterNoEscape('update.priority', current.priority);
        s2.setStringParameterNoEscape('update.description', current.description);
        s2.setStringParameterNoEscape('update.location', current.location);
        s2.setStringParameterNoEscape('update.assignment_group', current.assignment_group);
        s2.setStringParameterNoEscape('update.comments', current.comments);
        s2.setStringParameterNoEscape('update.cmdb_ci', current.cmdb_ci);
        s2.setStringParameterNoEscape('update.closed_at', current.closed_at);
        s2.setStringParameterNoEscape('update.opened_by', current.opened_by);
        s2.setStringParameterNoEscape('update.correlation_id', current.sys_id);

        //////////////////////////////Attachment Code////////////////////////

        var StringUtil = new GlideStringUtil();
        var attachments = new GlideSysAttachment();
        var fileName, contentType;
        var gR = new GlideRecord('sys_attachment');
        gR.addEncodedQuery('table_name=incident^table_sys_id='+current.sys_id);
        gR.query();
        gs.info("123  Records Found"+gR.getRowCount());
        while(gR.next()){
        try {
        var binData =   attachments.getBytes(gR);
        var encData =   StringUtil.base64Encode(binData);
        gs.log('XML Respons for payload='+encData);
        //Calling Attachment API
        var s = new sn_ws.SOAPMessageV2('attachment''insert');
        s.setStringParameterNoEscape('source''incident:'+current.correlation_id);
        s.setStringParameterNoEscape('payload', encData);
        s.setStringParameterNoEscape('topic''AttachmentCreatorV2');
        s.setStringParameterNoEscape('agent''AttachmentCreatorV2');
        s.setStringParameterNoEscape('name', gR.file_name+':'+gR.content_type);
        gs.info("123  Request Body Found"+s.getRequestBody());
        var response = s.execute();
        var responseBody = response.getBody();
        
        var status = response.getStatusCode();
        gs.log("attachment ==== "+status+", resbody = "+responseBody);
        }
        catch(ex) {
        var message = ex.getMessage();
        gs.log("attachment ==== message == "+message);
        }
        }
        
        //////////////////////////////Attachment Code////////////////////////

        var response2 = s2.execute();
        var responseBody2 = response2.getBody();
        var status2 = response2.getStatusCode();
    } else {
        gs.addErrorMessage(num);
        var s1 = new sn_ws.SOAPMessageV2('Lemongrass''insert');
        s1.setStringParameterNoEscape('insert.description', current.description);
        s1.setStringParameterNoEscape('insert.work_notes', current.work_notes);
        s1.setStringParameterNoEscape('insert.impact', current.impact);
        s1.setStringParameterNoEscape('insert.state', current.state);
        s1.setStringParameterNoEscape('insert.close_code', current.close_code);
        s1.setStringParameterNoEscape('insert.closed_by', current.closed_by);
        s1.setStringParameterNoEscape('insert.closed_at', current.closed_at);
        s1.setStringParameterNoEscape('insert.number', current.number);
        s1.setStringParameterNoEscape('insert.close_notes', current.close_notes);
        s1.setStringParameterNoEscape('insert.comments', current.comments);
        s1.setStringParameterNoEscape('insert.resolved_by', current.resolved_by);
        s1.setStringParameterNoEscape('insert.category', current.category);
        s1.setStringParameterNoEscape('insert.caller_id', current.caller_id);
        s1.setStringParameterNoEscape('insert.urgency', current.urgency);
        s1.setStringParameterNoEscape('insert.location', current.location);
        s1.setStringParameterNoEscape('insert.cmdb_ci', current.cmdb_ci);
        s1.setStringParameterNoEscape('insert.short_description', current.short_description);
        s1.setStringParameterNoEscape('insert.contact_type', current.contact_type);
        s1.setStringParameterNoEscape('insert.subcategory', current.subcategory);
        s1.setStringParameterNoEscape('insert.resolved_at', current.resolved_at);
        s1.setStringParameterNoEscape('insert.assignment_group', current.assignment_group);
        s1.setStringParameterNoEscape('insert.priority', current.priority);
        s1.setStringParameterNoEscape('insert.opened_by', current.opened_by);
        s1.setStringParameterNoEscape('insert.hold_reason', current.hold_reason);
        s1.setStringParameterNoEscape('insert.correlation_id', current.sys_id);
        var response1 = s1.execute();
        var responseBody1 = response1.getBody();
        var status1 = response1.getStatusCode();
        gs.log('target resopnse body' + responseBody1);

    }
})(current, previous);
Please go through it get the crt solution for this
Thanks