Create catalog request through email inbound

jamesgo
Giga Contributor

I have a requirement to auto-create catalog request through email inbound action, my approach is to use the Cart API(any better solution?) in inbound action script, I set up the inbound on sc_req_item table but I am not doing a current.insert() otherwise it will double submit the request(as the order is already placed through Cart API), things working fine but one problem I don't find a way to attach the original inbound email to the Activity field, any idea?

1 ACCEPTED SOLUTION

Here are some ideas:



Option 1: Add Message to Comments



Inbound Action: Create Requested Item


Table: sc_req_item


Condition: <your condition here>


Script:


createRequest();


function createRequest() {


  var cart = new Cart();


  // add in cart


  var item = cart.addItem('8c2a069c242cb800839dec45b40a7496');


  // set requested for


  cart.setVariable(item, 'requested_for', '5136503cc611227c0183e96598c4f706');


  cart.setVariable(item, 'request_short_description', email.subject.toString());


  cart.setVariable(item, 'request_description', email.body_html);


  cart.setVariable(item, 'request_type', 'others');


  // set application


  cart.setVariable(item, 'application', '3243d574bd05300071578913764fb117');


  // set assignment group


  cart.setVariable(item, 'assignment_group', '4769d53099266800d7ea6843423a4c2b');


  cart.setVariable(item, 'priority', 'PR3');


  var cartmsg = "received from: " + email.origemail + "\n\n" + email.body_text;


  cart.setVariable(item,'comments',cartmsg);


  var rc = cart.placeOrder();


}




Option 2: Generate without Cart API



Inbound Action: Create Requested Item


Table: sc_req_item


Condition: <your condition here>


Script:


createRequest();


function createRequest() {


      //Create Request


      var grRequest = new GlideRecord ("sc_request");


      grRequest.initialize();


      grRequest.requested_for = '5136503cc611227c0183e96598c4f706';


      grRequest.short_description = email.subject.toString();


      grRequest.description = "received from: " + email.origemail + "\n\n" + email.body_text;


      var requestSysId = grRequest.insert();


      //Create Request Item


      current.requested_for = '5136503cc611227c0183e96598c4f706';


      current.short_description = email.subject.toString();


      current.description = "received from: " + email.origemail + "\n\n" + email.body_text;


      current.cat_item = '8c2a069c242cb800839dec45b40a7496';


      current.parent = requestSysId;


      current.request = requestSysId;


      current.request_type = 'others';


      current.application= '3243d574bd05300071578913764fb117';


      current.assignment_group='4769d53099266800d7ea6843423a4c2b';


      current.priority= 'PR3';


      current.insert();


}



I tested Option 2 and it did work for me.   I used a different Catalog Item (Dev Laptop), because I didn't have your item in my catalog, but most everything else worked the same.Capture.PNG


View solution in original post

48 REPLIES 48

sagar khobare3
Kilo Contributor

hello

 

I have created Inbound action to create catalog request.

but whenever i'm triggering email it creating incident.

 

I have specified Target Table:- sc_req_item

If the request is also getting created along with an incident, make sure to either check the box at the top of the inbound action for Stop processing or add a line at the bottom of the script for event.state = 'stop_processing';

If the request isn't getting created, make sure the condition set on the inbound action is catching the inbound email properly.

Priya128
Mega Contributor

I could not get attachments with this code , kindly suggest to get attachments also

Brahmanandaredd
Mega Contributor

Hi,

can any one please help me " how to raise a catalog request through inbound email action"