Built motion from commit da617fac.|2.6.6
[motion2.git] / server / services / ami / trigger / integration / servicenow.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0xcc4e=['sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','picklist','type','nameField','toLowerCase','content','includes','string','idField','customField','toString','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','endUserId','incident','assign','getString','Subjects','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','label','Incident','Incident\x20-\x20','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%255EORDERBYDESCnumber','format','user:%s','emit','username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','isNil','email','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','util','md5','./util','../../../../config/environment','servicenow','defaults','redis','socket.io-emitter','sys_user?sysparm_query=user_name%3Dadmin','length','adminId','result','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','catch','error','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','GET','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','then','],\x20getUser\x20entity','active','true','userId','adminEmail','],\x20getUser\x20crm','POST'];(function(_0x2ace8e,_0x5b7a3d){var _0x19d576=function(_0x184b02){while(--_0x184b02){_0x2ace8e['push'](_0x2ace8e['shift']());}};_0x19d576(++_0x5b7a3d);}(_0xcc4e,0x19d));var _0xecc4=function(_0x4f8cef,_0x511202){_0x4f8cef=_0x4f8cef-0x0;var _0x18d9b8=_0xcc4e[_0x4f8cef];return _0x18d9b8;};'use strict';var _=require(_0xecc4('0x0'));var Promise=require(_0xecc4('0x1'));var rp=require('request-promise');var util=require(_0xecc4('0x2'));var md5=require(_0xecc4('0x3'));var Redis=require('ioredis');var intUtil=require(_0xecc4('0x4'));var config=require(_0xecc4('0x5'));var logger=require('../../../../config/logger')(_0xecc4('0x6'));config['redis']=_[_0xecc4('0x7')](config[_0xecc4('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0xecc4('0x9'))(new Redis(config[_0xecc4('0x8')]));function getAdminUser(_0x3883a7,_0x540d68,_0x550b86,_0x562acf,_0x5dce6e,_0x138d8a){return new Promise(function(_0x24fdc6,_0x180d68){var _0x221d6a={'method':'GET','uri':_0x562acf+_0xecc4('0xa')+'&'+_0x5dce6e+'&'+_0x138d8a,'auth':_0x540d68,'json':!![]};return rp(_0x221d6a)['then'](function(_0x228e9e){if(_0x228e9e['result'][_0xecc4('0xb')]>0x0){_0x550b86[_0xecc4('0xc')]=_0x228e9e[_0xecc4('0xd')][0x0][_0xecc4('0xe')];}logger[_0xecc4('0xf')]('['+[_0x3883a7[_0xecc4('0x10')]()]+_0xecc4('0x11'),_0x550b86);_0x24fdc6(_0x550b86);})[_0xecc4('0x12')](function(_0xaa6f0b){logger[_0xecc4('0x13')]('['+[_0x3883a7[_0xecc4('0x10')]()]+']',_0xaa6f0b[_0xecc4('0x14')]);_0x180d68(_0xaa6f0b[_0xecc4('0x14')]);});});}function getUser(_0x5aeb05,_0x1f3cfc,_0x2cb512,_0x20f182,_0x24fffd){return function(_0x4d9d54){logger[_0xecc4('0xf')]('['+[_0x5aeb05[_0xecc4('0x10')]()]+_0xecc4('0x15'),_0x4d9d54);return new Promise(function(_0x5c0314,_0x2eed83){if(intUtil[_0xecc4('0x16')](_0x4d9d54[_0xecc4('0x17')])){var _0x2d10da={'method':_0xecc4('0x18'),'uri':_0x2cb512+_0xecc4('0x19')+_0x4d9d54[_0xecc4('0x17')]+'&'+_0x20f182+'&'+_0x24fffd,'auth':_0x1f3cfc,'json':!![]};logger[_0xecc4('0xf')]('['+[_0x5aeb05[_0xecc4('0x10')]()]+_0xecc4('0x1a'),_0x2d10da);return rp(_0x2d10da)[_0xecc4('0x1b')](function(_0x4e93ee){logger[_0xecc4('0xf')]('['+[_0x5aeb05['toUpperCase']()]+_0xecc4('0x1c'),_0x4e93ee);if(_0x4e93ee[_0xecc4('0xd')][_0xecc4('0xb')]>0x0&&String(_0x4e93ee[_0xecc4('0xd')][0x0][_0xecc4('0x1d')])===_0xecc4('0x1e')){_0x4d9d54[_0xecc4('0x1f')]=_0x4e93ee[_0xecc4('0xd')][0x0][_0xecc4('0xe')];}else{_0x4d9d54[_0xecc4('0x1f')]=_0x4d9d54[_0xecc4('0xc')];_0x4d9d54[_0xecc4('0x17')]=_0x4d9d54[_0xecc4('0x20')];}logger[_0xecc4('0xf')]('['+[_0x5aeb05['toUpperCase']()]+_0xecc4('0x21'),_0x4d9d54);_0x5c0314(_0x4d9d54);})[_0xecc4('0x12')](function(_0x52cced){logger[_0xecc4('0x13')]('['+[_0x5aeb05['toUpperCase']()]+']',_0x52cced[_0xecc4('0x14')]);_0x2eed83(_0x52cced['message']);});}else{logger[_0xecc4('0xf')]('['+[_0x5aeb05[_0xecc4('0x10')]()]+']\x20using\x20admin\x20profile');_0x4d9d54[_0xecc4('0x1f')]=_0x4d9d54[_0xecc4('0xc')];_0x4d9d54[_0xecc4('0x17')]=_0x4d9d54[_0xecc4('0x20')];_0x5c0314(_0x4d9d54);}});};}function createEndUser(_0x580a69,_0x40fc3a,_0x1cdccd,_0x1d12a1,_0x314f5d){logger['info']('['+[_0x580a69[_0xecc4('0x10')]()]+'],\x20createEndUser\x20input\x20crm',_0x1cdccd);return new Promise(function(_0x1b5c2c,_0x39a92c){var _0x1472ef={'method':_0xecc4('0x22'),'uri':_0x1d12a1+_0xecc4('0x23')+_0x314f5d,'body':{'user_name':_0x1cdccd[_0xecc4('0x24')],'roles':_0xecc4('0x25'),'first_name':_0x1cdccd[_0xecc4('0x24')],'active':_0xecc4('0x1e'),'date_format':_0xecc4('0x26'),'phone':_0x1cdccd[_0xecc4('0x24')]},'auth':_0x40fc3a,'json':!![]};return rp(_0x1472ef)[_0xecc4('0x1b')](function(_0xc41eb3){logger[_0xecc4('0xf')]('['+[_0x580a69[_0xecc4('0x10')]()]+_0xecc4('0x27'),_0xc41eb3['result']);_0x1cdccd['endUserId']=_0xc41eb3[_0xecc4('0xd')][_0xecc4('0xe')];_0x1b5c2c(_0x1cdccd);})[_0xecc4('0x12')](function(_0x4821a3){logger[_0xecc4('0x13')]('['+[_0x580a69[_0xecc4('0x10')]()]+']',_0x4821a3['message']);_0x39a92c(_0x4821a3[_0xecc4('0x14')]);});});}function getEndUser(_0x2ecba3,_0x2108eb,_0x3e4b37,_0x860c97,_0x273902){return function(_0x3f7b9a){logger[_0xecc4('0xf')]('['+[_0x2ecba3[_0xecc4('0x10')]()]+_0xecc4('0x28'),_0x3f7b9a);return new Promise(function(_0x2ab90f,_0x170801){var _0x358214={'method':_0xecc4('0x18'),'uri':_0x3e4b37+_0xecc4('0x29')+_0x3f7b9a[_0xecc4('0x24')]+'&'+_0x860c97+'&'+_0x273902,'auth':_0x2108eb,'json':!![]};return rp(_0x358214)[_0xecc4('0x1b')](function(_0x20e058){if(_0x20e058[_0xecc4('0xd')]['length']>0x0){_0x3f7b9a['endUserId']=_0x20e058[_0xecc4('0xd')][0x0]['sys_id'];logger['info']('['+[_0x2ecba3['toUpperCase']()]+_0xecc4('0x2a'),_0x3f7b9a);_0x2ab90f(_0x3f7b9a);}else{return createEndUser(_0x2ecba3,_0x2108eb,_0x3f7b9a,_0x3e4b37,_0x860c97)[_0xecc4('0x1b')](function(_0x15416c){logger[_0xecc4('0xf')]('['+[_0x2ecba3[_0xecc4('0x10')]()]+_0xecc4('0x2b'),_0x15416c);_0x2ab90f(_0x15416c);});}})[_0xecc4('0x12')](function(_0x2e9c58){logger['error']('['+[_0x2ecba3['toUpperCase']()]+']',_0x2e9c58['message']);_0x170801(_0x2e9c58['message']);});});};}function getCustomFields(_0x22b260,_0x5abd40){var _0xc7e1d3={};if(_0x22b260[_0xecc4('0xb')]>0x0){_[_0xecc4('0x2c')](_0x22b260,function(_0x4a163e){if(_['includes'](['string',_0xecc4('0x2d')],_0x4a163e[_0xecc4('0x2e')])&&_0x4a163e['nameField']&&!_0x4a163e['customField']){_0xc7e1d3[_0x4a163e[_0xecc4('0x2f')][_0xecc4('0x30')]()]=_0x4a163e[_0xecc4('0x31')]['toString']();}else if(_[_0xecc4('0x32')]([_0xecc4('0x33'),'picklist'],_0x4a163e[_0xecc4('0x2e')])&&_0x4a163e[_0xecc4('0x34')]&&_0x4a163e[_0xecc4('0x35')]){_0xc7e1d3[_0x4a163e['idField'][_0xecc4('0x30')]()]=_0x4a163e['content'][_0xecc4('0x36')]();}else if(_0x4a163e[_0xecc4('0x2e')]==='variable'&&_0x4a163e[_0xecc4('0x37')]&&_0x4a163e[_0xecc4('0x34')]&&_0x4a163e['customField']){_0xc7e1d3[_0x4a163e['idField'][_0xecc4('0x30')]()]=_0x5abd40[_0x4a163e[_0xecc4('0x37')]][_0xecc4('0x36')]();}else if(_0x4a163e[_0xecc4('0x2e')]===_0xecc4('0x38')&&_0x4a163e[_0xecc4('0x39')]&&_0x4a163e['Variable'][_0xecc4('0x3a')]&&_0x4a163e['idField']&&_0x4a163e[_0xecc4('0x35')]){_0xc7e1d3[_0x4a163e[_0xecc4('0x34')][_0xecc4('0x30')]()]=_0x5abd40[_0x4a163e[_0xecc4('0x39')][_0xecc4('0x3a')][_0xecc4('0x30')]()][_0xecc4('0x36')]();}});}return _0xc7e1d3;}function getTicket(_0x413ee7,_0x2dbaa3,_0x4b0b30,_0x3e06fa,_0x193c2f,_0x998b68){return function(_0x20017d){logger['info']('['+[_0x413ee7[_0xecc4('0x10')]()]+_0xecc4('0x3b'),_0x20017d);return new Promise(function(_0x5b6b3d,_0x1b441f){var _0x3bf075=_0x413ee7['toLowerCase']()===_0xecc4('0x3c')?_0x20017d[_0xecc4('0x1f')]:_0x20017d[_0xecc4('0x3d')];var _0x46007e={'method':_0xecc4('0x22'),'uri':_0x4b0b30+_0xecc4('0x3e')+'?'+_0x998b68,'body':Object[_0xecc4('0x3f')]({},{'active':_0xecc4('0x1e'),'caller_id':_0x3bf075,'assigned_to':_0x20017d['userId'],'short_description':intUtil[_0xecc4('0x40')](_0x3e06fa[_0xecc4('0x41')],_0x193c2f,'\x20'),'description':intUtil[_0xecc4('0x40')](_0x3e06fa['Descriptions'],_0x193c2f,'\x0a')},getCustomFields(_0x3e06fa[_0xecc4('0x42')],_0x193c2f)),'auth':_0x2dbaa3,'json':!![]};return rp(_0x46007e)['then'](function(_0x19e8ca){logger[_0xecc4('0xf')]('['+[_0x413ee7['toUpperCase']()]+_0xecc4('0x43'),_0x19e8ca[_0xecc4('0xd')]);_0x20017d[_0xecc4('0x44')]=_0x19e8ca[_0xecc4('0xd')][_0xecc4('0xe')];_0x20017d[_0xecc4('0x45')]=_0x19e8ca[_0xecc4('0xd')]['number'];logger[_0xecc4('0xf')]('['+[_0x413ee7[_0xecc4('0x10')]()]+']\x20getTicket\x20crm',_0x20017d);_0x5b6b3d(_0x20017d);})[_0xecc4('0x12')](function(_0x1090a9){logger[_0xecc4('0x13')]('['+[_0x413ee7['toUpperCase']()]+']',_0x1090a9[_0xecc4('0x14')]);_0x1b441f(_0x1090a9['message']);});});};}function createRemoteTag(_0x4d1a16,_0x18aa81,_0x2ebd25,_0x132ee9){return new Promise(function(_0x8489ae,_0x14ea40){var _0x30db59={'method':_0xecc4('0x22'),'uri':_0x2ebd25+_0xecc4('0x46')+'?'+_0x132ee9,'body':{'short_description':_0x4d1a16,'global':!![],'active':!![],'name':_0x4d1a16},'auth':_0x18aa81,'json':!![]};return rp(_0x30db59)[_0xecc4('0x1b')](function(_0xd167c5){var _0x3c1c19=_0xd167c5[_0xecc4('0xd')]['sys_id'];_0x8489ae(_0x3c1c19);});});}function getRemoteTag(_0x1f0b25,_0x1b908a,_0x30cdca,_0x33bcd5,_0x497044){return new Promise(function(_0x3aeb1,_0x27729e){var _0x23051e={'method':'GET','uri':_0x30cdca+'label'+'?sysparm_query=name%3D'+_0x1f0b25+'&'+_0x33bcd5,'auth':_0x1b908a,'json':!![]};return rp(_0x23051e)[_0xecc4('0x1b')](function(_0x3ed77a){if(_0x3ed77a[_0xecc4('0xd')][_0xecc4('0xb')]>0x0){var _0x2cb217=_0x3ed77a[_0xecc4('0xd')][0x0][_0xecc4('0xe')];_0x3aeb1(_0x2cb217);}else{return createRemoteTag(_0x1f0b25,_0x1b908a,_0x30cdca,_0x33bcd5)['then'](function(_0x20ad26){_0x3aeb1(_0x20ad26);});}});});}function assignTagToIncident(_0xcdfba4,_0x189343,_0x149b8d,_0x135a29,_0x5b7f77){return new Promise(function(_0x1c730f,_0x196403){var _0x2832e5={'method':'POST','uri':_0x149b8d+'label_entry'+'?'+_0x5b7f77,'body':{'label':_0xcdfba4,'table':'incident','id_type':_0xecc4('0x47'),'table_key':_0x135a29[_0xecc4('0x44')],'title':_0xecc4('0x48')+_0x135a29[_0xecc4('0x45')],'id_display':_0x135a29['ticketNumber']},'auth':_0x189343,'json':!![]};return rp(_0x2832e5)[_0xecc4('0x1b')](function(_0x78ed9){_0x1c730f();})[_0xecc4('0x12')](function(){_0x1c730f();});});}function manageTags(_0x3e70fd,_0x2af038,_0x5fd21,_0x304c5e,_0x42acbf,_0x22e109,_0x3db0de){return new Promise(function(_0x4652ce,_0x556349){var _0xc41bf2=[];_0x2af038[_0xecc4('0x2c')](function(_0x235dac){_0xc41bf2[_0xecc4('0x49')](getRemoteTag(_0x235dac,_0x5fd21,_0x304c5e,_0x22e109,_0x3db0de));});return Promise[_0xecc4('0x4a')](_0xc41bf2)[_0xecc4('0x1b')](function(_0x16b648){if(_0x16b648[_0xecc4('0xb')]){logger[_0xecc4('0xf')]('['+[_0x3e70fd[_0xecc4('0x10')]()]+_0xecc4('0x4b'),_0x16b648);var _0x1958f9=[];_0x16b648[_0xecc4('0x2c')](function(_0x3000e5){_0x1958f9[_0xecc4('0x49')](assignTagToIncident(_0x3000e5,_0x5fd21,_0x304c5e,_0x42acbf,_0x22e109));});return Promise['all'](_0x1958f9)[_0xecc4('0x1b')](function(){_0x4652ce();})[_0xecc4('0x12')](function(){_0x4652ce();});}else{_0x4652ce();}});});}function getTags(_0x324233,_0xef90f9,_0x58dd00,_0x5c319a,_0x10e105,_0x2c6d5b){return function(_0x43d060){return new Promise(function(_0x561e53,_0x54a559){var _0x145a77=[];var _0x59e9ec=_0x5c319a[_0xecc4('0x4c')];if(_0x59e9ec&&_0x59e9ec[_0xecc4('0xb')]>0x0){_0x145a77=_[_0xecc4('0x4d')](_0x59e9ec,_0xecc4('0x3a'));}if(_0x145a77['length']>0x0){return manageTags(_0x324233,_0x145a77,_0xef90f9,_0x58dd00,_0x43d060,_0x10e105,_0x2c6d5b)[_0xecc4('0x1b')](function(){_0x561e53(_0x43d060);});}else{_0x561e53(_0x43d060);}});};}function emit(_0x34151f,_0x4a9f7e,_0x2ba512){var _0x244036=_0xecc4('0x4e')+_0xecc4('0x4f')+'%26sysparm_record_list%3Dactive%253Dtrue'+_0xecc4('0x50');var _0x8d40e2={'uri':_0x34151f+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x2ba512+_0x244036};io['to'](util[_0xecc4('0x51')](_0xecc4('0x52'),_0x4a9f7e))[_0xecc4('0x53')]('trigger:browser:url',_0x8d40e2);}exports['cs']=function(_0x185f7f,_0x5f58c8,_0x220767,_0x2b229b,_0x524fc9,_0x47c027,_0x18be59,_0x4122f5){var _0x36e255={};var _0x269e03={'user':_0x47c027[_0xecc4('0x54')],'pass':_0x47c027[_0xecc4('0x55')]};var _0x936c17=_0xecc4('0x56');var _0x1a694b=_0xecc4('0x57');_0x47c027[_0xecc4('0x58')]=intUtil[_0xecc4('0x59')](_0x47c027[_0xecc4('0x58')]);_0x47c027[_0xecc4('0x5a')]=intUtil[_0xecc4('0x59')](_0x47c027[_0xecc4('0x5a')]);var _0x458bb5=util[_0xecc4('0x51')]('%s/api/now/table/',_0x47c027['remoteUri']);_0x36e255['userEmail']=!_[_0xecc4('0x5b')](_0x2b229b)?_0x2b229b[_0xecc4('0x5c')]:null;_0x36e255['adminEmail']=_0x47c027['email'];_0x36e255[_0xecc4('0x24')]=_0x4122f5['toLowerCase']()===_0xecc4('0x3c')?_0x5f58c8[_0xecc4('0x5d')]:_0x5f58c8[_0xecc4('0x5e')];_0x36e255[_0xecc4('0x5f')]=_0x4122f5===_0xecc4('0x60')||_0x4122f5===_0xecc4('0x61')?_0xecc4('0x60'):'outbound';var _0x394fe7=util[_0xecc4('0x51')](_0xecc4('0x62'),_0x47c027[_0xecc4('0x5a')],_0x5f58c8[_0xecc4('0x63')],md5(_0x5f58c8[_0xecc4('0x63')]));if(_0x524fc9&&_0x524fc9[_0xecc4('0x64')]){logger[_0xecc4('0xf')](_0xecc4('0x65'),_0xecc4('0x66'));_0x5f58c8['recordingURL']=_0x394fe7;}else if(_0x18be59&&_0x18be59[_0xecc4('0x67')]&&_0x18be59[_0xecc4('0x67')]!==_0xecc4('0x68')){logger[_0xecc4('0xf')](_0xecc4('0x69'),_0xecc4('0x66'));_0x5f58c8[_0xecc4('0x6a')]=_0x394fe7;}else{_0x5f58c8[_0xecc4('0x6a')]='';}return getAdminUser(_0x4122f5,_0x269e03,_0x36e255,_0x458bb5,_0x1a694b,_0x936c17)['then'](getUser(_0x4122f5,_0x269e03,_0x458bb5,_0x1a694b,_0x936c17))[_0xecc4('0x1b')](getEndUser(_0x4122f5,_0x269e03,_0x458bb5,_0x1a694b,_0x936c17))[_0xecc4('0x1b')](getTicket(_0x4122f5,_0x269e03,_0x458bb5,_0x220767,_0x5f58c8,_0x1a694b))[_0xecc4('0x1b')](function(_0x3fe0d7){logger[_0xecc4('0xf')](util['format'](_0xecc4('0x6b'),_0x3fe0d7[_0xecc4('0x44')]));logger[_0xecc4('0xf')](util[_0xecc4('0x51')](_0xecc4('0x6c'),_0x4122f5));if(_0x4122f5!=='unmanaged'){logger[_0xecc4('0xf')]('['+[_0x4122f5[_0xecc4('0x10')]()]+']',_0xecc4('0x6d'));emit(_0x47c027[_0xecc4('0x58')],_0x2b229b[_0xecc4('0x3a')],_0x3fe0d7[_0xecc4('0x44')]);}})[_0xecc4('0x12')](function(_0x373ea5){logger['error']('['+[_0x4122f5[_0xecc4('0x10')]()]+_0xecc4('0x6e'),util[_0xecc4('0x6f')](_0x373ea5,{'showHidden':!![],'depth':null}));});};