Built motion from commit (unavailable).|2.4.4
[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 _0x8b04=['../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','localhost','socket.io-emitter','GET','then','length','adminId','result','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','message','],\x20getUser\x20input\x20crm','validateEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','active','true','userId','userEmail','adminEmail',']\x20using\x20admin\x20profile','POST','endUserNumber','System','endUserId','catch','error','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','forEach','type','string','idField','customField','toLowerCase','toString','variable','variableName','Variable','name','incident','assign','Subjects','getString','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','Incident','ticketId','Incident\x20-\x20','ticketNumber','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','emit','trigger:browser:url','username','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','outbound','destcalleridnum','queue','abandoned','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','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','ioredis','./util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8b04,0x130));var _0x48b0=function(_0x5c588b,_0x473c4d){_0x5c588b=_0x5c588b-0x0;var _0x1ab9b4=_0x8b04[_0x5c588b];return _0x1ab9b4;};'use strict';var _=require(_0x48b0('0x0'));var Promise=require(_0x48b0('0x1'));var rp=require('request-promise');var util=require(_0x48b0('0x2'));var md5=require('md5');var Redis=require(_0x48b0('0x3'));var intUtil=require(_0x48b0('0x4'));var config=require(_0x48b0('0x5'));var logger=require(_0x48b0('0x6'))(_0x48b0('0x7'));config[_0x48b0('0x8')]=_[_0x48b0('0x9')](config[_0x48b0('0x8')],{'host':_0x48b0('0xa'),'port':0x18eb});var io=require(_0x48b0('0xb'))(new Redis(config['redis']));function getAdminUser(_0xe04bbe,_0x2fe681,_0x38d496,_0x1f3905,_0x3ca1e6,_0x3baa46){return new Promise(function(_0x6f19eb,_0x5bb6f3){var _0x1ba6b8={'method':_0x48b0('0xc'),'uri':_0x1f3905+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x3ca1e6+'&'+_0x3baa46,'auth':_0x2fe681,'json':!![]};return rp(_0x1ba6b8)[_0x48b0('0xd')](function(_0x157769){if(_0x157769['result'][_0x48b0('0xe')]>0x0){_0x38d496[_0x48b0('0xf')]=_0x157769[_0x48b0('0x10')][0x0][_0x48b0('0x11')];}logger[_0x48b0('0x12')]('['+[_0xe04bbe[_0x48b0('0x13')]()]+_0x48b0('0x14'),_0x38d496);_0x6f19eb(_0x38d496);})['catch'](function(_0x43e9e9){logger['error']('['+[_0xe04bbe[_0x48b0('0x13')]()]+']',_0x43e9e9['message']);_0x5bb6f3(_0x43e9e9[_0x48b0('0x15')]);});});}function getUser(_0x341566,_0x2e736d,_0x37110c,_0x57154e,_0x377f65){return function(_0x29e511){logger[_0x48b0('0x12')]('['+[_0x341566['toUpperCase']()]+_0x48b0('0x16'),_0x29e511);return new Promise(function(_0x4f796f,_0x4f9815){if(intUtil[_0x48b0('0x17')](_0x29e511['userEmail'])){var _0x207659={'method':'GET','uri':_0x37110c+_0x48b0('0x18')+_0x29e511['userEmail']+'&'+_0x57154e+'&'+_0x377f65,'auth':_0x2e736d,'json':!![]};logger[_0x48b0('0x12')]('['+[_0x341566[_0x48b0('0x13')]()]+_0x48b0('0x19'),_0x207659);return rp(_0x207659)[_0x48b0('0xd')](function(_0x30e06d){logger['info']('['+[_0x341566['toUpperCase']()]+'],\x20getUser\x20entity',_0x30e06d);if(_0x30e06d['result']['length']>0x0&&String(_0x30e06d[_0x48b0('0x10')][0x0][_0x48b0('0x1a')])===_0x48b0('0x1b')){_0x29e511[_0x48b0('0x1c')]=_0x30e06d['result'][0x0][_0x48b0('0x11')];}else{_0x29e511['userId']=_0x29e511[_0x48b0('0xf')];_0x29e511[_0x48b0('0x1d')]=_0x29e511[_0x48b0('0x1e')];}logger[_0x48b0('0x12')]('['+[_0x341566[_0x48b0('0x13')]()]+'],\x20getUser\x20crm',_0x29e511);_0x4f796f(_0x29e511);})['catch'](function(_0x57012b){logger['error']('['+[_0x341566['toUpperCase']()]+']',_0x57012b[_0x48b0('0x15')]);_0x4f9815(_0x57012b[_0x48b0('0x15')]);});}else{logger[_0x48b0('0x12')]('['+[_0x341566[_0x48b0('0x13')]()]+_0x48b0('0x1f'));_0x29e511['userId']=_0x29e511[_0x48b0('0xf')];_0x29e511[_0x48b0('0x1d')]=_0x29e511['adminEmail'];_0x4f796f(_0x29e511);}});};}function createEndUser(_0x50e7cf,_0x450bcf,_0x3b4b3c,_0x47e6a6,_0x175f52){logger[_0x48b0('0x12')]('['+[_0x50e7cf['toUpperCase']()]+'],\x20createEndUser\x20input\x20crm',_0x3b4b3c);return new Promise(function(_0x171ddf,_0x1d0b9d){var _0x3ac7aa={'method':_0x48b0('0x20'),'uri':_0x47e6a6+'sys_user?'+_0x175f52,'body':{'user_name':_0x3b4b3c[_0x48b0('0x21')],'roles':'user','first_name':_0x3b4b3c[_0x48b0('0x21')],'active':_0x48b0('0x1b'),'date_format':_0x48b0('0x22'),'phone':_0x3b4b3c['endUserNumber']},'auth':_0x450bcf,'json':!![]};return rp(_0x3ac7aa)['then'](function(_0x42c45d){logger[_0x48b0('0x12')]('['+[_0x50e7cf[_0x48b0('0x13')]()]+'],\x20EndUser\x20schema',_0x42c45d['result']);_0x3b4b3c[_0x48b0('0x23')]=_0x42c45d[_0x48b0('0x10')][_0x48b0('0x11')];_0x171ddf(_0x3b4b3c);})[_0x48b0('0x24')](function(_0x478efd){logger[_0x48b0('0x25')]('['+[_0x50e7cf['toUpperCase']()]+']',_0x478efd[_0x48b0('0x15')]);_0x1d0b9d(_0x478efd[_0x48b0('0x15')]);});});}function getEndUser(_0x33781a,_0x12b909,_0x2df849,_0x3f873e,_0x24bf60){return function(_0x226463){logger[_0x48b0('0x12')]('['+[_0x33781a['toUpperCase']()]+_0x48b0('0x26'),_0x226463);return new Promise(function(_0x262a9f,_0x231c0c){var _0x3dabdf={'method':_0x48b0('0xc'),'uri':_0x2df849+_0x48b0('0x27')+_0x226463[_0x48b0('0x21')]+'&'+_0x3f873e+'&'+_0x24bf60,'auth':_0x12b909,'json':!![]};return rp(_0x3dabdf)[_0x48b0('0xd')](function(_0x380080){if(_0x380080['result'][_0x48b0('0xe')]>0x0){_0x226463[_0x48b0('0x23')]=_0x380080['result'][0x0][_0x48b0('0x11')];logger[_0x48b0('0x12')]('['+[_0x33781a[_0x48b0('0x13')]()]+_0x48b0('0x28'),_0x226463);_0x262a9f(_0x226463);}else{return createEndUser(_0x33781a,_0x12b909,_0x226463,_0x2df849,_0x3f873e)[_0x48b0('0xd')](function(_0x14486f){logger[_0x48b0('0x12')]('['+[_0x33781a['toUpperCase']()]+'],\x20createEndUser\x20crm',_0x14486f);_0x262a9f(_0x14486f);});}})['catch'](function(_0xe0d0e){logger[_0x48b0('0x25')]('['+[_0x33781a[_0x48b0('0x13')]()]+']',_0xe0d0e[_0x48b0('0x15')]);_0x231c0c(_0xe0d0e['message']);});});};}function getCustomFields(_0x2b34fb,_0x351d89){var _0x1a1a05={};if(_0x2b34fb['length']>0x0){_[_0x48b0('0x29')](_0x2b34fb,function(_0x331962){if(_0x331962[_0x48b0('0x2a')]===_0x48b0('0x2b')&&_0x331962['nameField']&&!_0x331962['customField']){_0x1a1a05[_0x331962['idField']['toLowerCase']()]=_0x331962['content']['toString']();}else if(_0x331962[_0x48b0('0x2a')]===_0x48b0('0x2b')&&_0x331962[_0x48b0('0x2c')]&&_0x331962[_0x48b0('0x2d')]){_0x1a1a05[_0x331962['idField'][_0x48b0('0x2e')]()]=_0x331962['content'][_0x48b0('0x2f')]();}else if(_0x331962['type']===_0x48b0('0x30')&&_0x331962[_0x48b0('0x31')]&&_0x331962[_0x48b0('0x2c')]&&_0x331962['customField']){_0x1a1a05[_0x331962['idField'][_0x48b0('0x2e')]()]=_0x351d89[_0x331962[_0x48b0('0x31')]][_0x48b0('0x2f')]();}else if(_0x331962['type']==='customVariable'&&_0x331962[_0x48b0('0x32')]&&_0x331962['Variable'][_0x48b0('0x33')]&&_0x331962['idField']&&_0x331962[_0x48b0('0x2d')]){_0x1a1a05[_0x331962[_0x48b0('0x2c')][_0x48b0('0x2e')]()]=_0x351d89[_0x331962['Variable'][_0x48b0('0x33')][_0x48b0('0x2e')]()][_0x48b0('0x2f')]();}});}return _0x1a1a05;}function getTicket(_0x504eb8,_0x123612,_0x3bae9f,_0x2d180d,_0x3f3c73,_0x2b0547){return function(_0x37dd44){logger[_0x48b0('0x12')]('['+[_0x504eb8[_0x48b0('0x13')]()]+']\x20getTicket\x20input\x20crm',_0x37dd44);return new Promise(function(_0x19a8f3,_0x3548b5){var _0x33dd34=_0x504eb8[_0x48b0('0x2e')]()==='outbound'?_0x37dd44[_0x48b0('0x1c')]:_0x37dd44[_0x48b0('0x23')];var _0x244c0c={'method':_0x48b0('0x20'),'uri':_0x3bae9f+_0x48b0('0x34')+'?'+_0x2b0547,'body':Object[_0x48b0('0x35')]({},{'active':_0x48b0('0x1b'),'caller_id':_0x33dd34,'assigned_to':_0x37dd44[_0x48b0('0x1c')],'short_description':intUtil['getString'](_0x2d180d[_0x48b0('0x36')],_0x3f3c73,'\x20'),'description':intUtil[_0x48b0('0x37')](_0x2d180d[_0x48b0('0x38')],_0x3f3c73,'\x0a')},getCustomFields(_0x2d180d[_0x48b0('0x39')],_0x3f3c73)),'auth':_0x123612,'json':!![]};return rp(_0x244c0c)['then'](function(_0x526a78){logger[_0x48b0('0x12')]('['+[_0x504eb8[_0x48b0('0x13')]()]+_0x48b0('0x3a'),_0x526a78[_0x48b0('0x10')]);_0x37dd44['ticketId']=_0x526a78[_0x48b0('0x10')]['sys_id'];_0x37dd44['ticketNumber']=_0x526a78['result']['number'];logger[_0x48b0('0x12')]('['+[_0x504eb8['toUpperCase']()]+_0x48b0('0x3b'),_0x37dd44);_0x19a8f3(_0x37dd44);})['catch'](function(_0x1c3f6a){logger['error']('['+[_0x504eb8[_0x48b0('0x13')]()]+']',_0x1c3f6a[_0x48b0('0x15')]);_0x3548b5(_0x1c3f6a[_0x48b0('0x15')]);});});};}function createRemoteTag(_0x228bc8,_0x3eef91,_0x19b4fc,_0xa2719b){return new Promise(function(_0x18ad12,_0x400c3d){var _0x50baa3={'method':_0x48b0('0x20'),'uri':_0x19b4fc+_0x48b0('0x3c')+'?'+_0xa2719b,'body':{'short_description':_0x228bc8,'global':!![],'active':!![],'name':_0x228bc8},'auth':_0x3eef91,'json':!![]};return rp(_0x50baa3)['then'](function(_0x5b637b){var _0x429f00=_0x5b637b[_0x48b0('0x10')][_0x48b0('0x11')];_0x18ad12(_0x429f00);});});}function getRemoteTag(_0x3eec9c,_0xf81273,_0x2c42a9,_0x31061d,_0xea29d){return new Promise(function(_0x5e9b93,_0x178ef7){var _0x330a34={'method':_0x48b0('0xc'),'uri':_0x2c42a9+'label'+_0x48b0('0x3d')+_0x3eec9c+'&'+_0x31061d,'auth':_0xf81273,'json':!![]};return rp(_0x330a34)[_0x48b0('0xd')](function(_0x13e1f9){if(_0x13e1f9[_0x48b0('0x10')]['length']>0x0){var _0x270bc4=_0x13e1f9[_0x48b0('0x10')][0x0][_0x48b0('0x11')];_0x5e9b93(_0x270bc4);}else{return createRemoteTag(_0x3eec9c,_0xf81273,_0x2c42a9,_0x31061d)[_0x48b0('0xd')](function(_0x2460d9){_0x5e9b93(_0x2460d9);});}});});}function assignTagToIncident(_0x194a8a,_0x59da91,_0x2e63c1,_0x8fa940,_0x527fb2){return new Promise(function(_0x4f35a7,_0x9464f6){var _0x93580c={'method':_0x48b0('0x20'),'uri':_0x2e63c1+_0x48b0('0x3e')+'?'+_0x527fb2,'body':{'label':_0x194a8a,'table':_0x48b0('0x34'),'id_type':_0x48b0('0x3f'),'table_key':_0x8fa940[_0x48b0('0x40')],'title':_0x48b0('0x41')+_0x8fa940[_0x48b0('0x42')],'id_display':_0x8fa940['ticketNumber']},'auth':_0x59da91,'json':!![]};return rp(_0x93580c)[_0x48b0('0xd')](function(_0x10a258){_0x4f35a7();})['catch'](function(){_0x4f35a7();});});}function manageTags(_0x192e7a,_0x40edad,_0x161724,_0x45c169,_0x58a0dd,_0x25ee72,_0x20739b){return new Promise(function(_0x37c2e2,_0x46ba1b){var _0x5c1464=[];_0x40edad[_0x48b0('0x29')](function(_0x4f1824){_0x5c1464[_0x48b0('0x43')](getRemoteTag(_0x4f1824,_0x161724,_0x45c169,_0x25ee72,_0x20739b));});return Promise[_0x48b0('0x44')](_0x5c1464)[_0x48b0('0xd')](function(_0x4591c6){if(_0x4591c6['length']){logger['info']('['+[_0x192e7a['toUpperCase']()]+_0x48b0('0x45'),_0x4591c6);var _0x4f66dc=[];_0x4591c6[_0x48b0('0x29')](function(_0x197a19){_0x4f66dc['push'](assignTagToIncident(_0x197a19,_0x161724,_0x45c169,_0x58a0dd,_0x25ee72));});return Promise[_0x48b0('0x44')](_0x4f66dc)[_0x48b0('0xd')](function(){_0x37c2e2();})[_0x48b0('0x24')](function(){_0x37c2e2();});}else{_0x37c2e2();}});});}function getTags(_0x3cb221,_0x17eb8a,_0x152412,_0x1c85b7,_0x158779,_0x1449d5){return function(_0x1492a3){return new Promise(function(_0x4f7107,_0x1582d5){var _0x5d199c=[];var _0x3f4eb3=_0x1c85b7[_0x48b0('0x46')];if(_0x3f4eb3&&_0x3f4eb3['length']>0x0){_0x5d199c=_['map'](_0x3f4eb3,_0x48b0('0x33'));}if(_0x5d199c['length']>0x0){return manageTags(_0x3cb221,_0x5d199c,_0x17eb8a,_0x152412,_0x1492a3,_0x158779,_0x1449d5)[_0x48b0('0xd')](function(){_0x4f7107(_0x1492a3);});}else{_0x4f7107(_0x1492a3);}});};}function emit(_0x3613b8,_0x524740,_0x1b76ad){var _0x392545='%26sysparm_record_target%3Dincident'+_0x48b0('0x47')+_0x48b0('0x48')+_0x48b0('0x49');var _0x2ff9c4={'uri':_0x3613b8+_0x48b0('0x4a')+_0x1b76ad+_0x392545};io['to'](util[_0x48b0('0x4b')](_0x48b0('0x4c'),_0x524740))[_0x48b0('0x4d')](_0x48b0('0x4e'),_0x2ff9c4);}exports['cs']=function(_0x2e907e,_0x51a9e5,_0x545367,_0x2089cf,_0x135620,_0x2a7d40,_0xdec7c2,_0x320ce8){var _0x3b9557={};var _0x35b649={'user':_0x2a7d40[_0x48b0('0x4f')],'pass':_0x2a7d40['password']};var _0x4f1cde=_0x48b0('0x50');var _0x329aab=_0x48b0('0x51');_0x2a7d40[_0x48b0('0x52')]=intUtil['stripTrailingSlash'](_0x2a7d40[_0x48b0('0x52')]);_0x2a7d40['serverUrl']=intUtil[_0x48b0('0x53')](_0x2a7d40[_0x48b0('0x54')]);var _0x20de36=util[_0x48b0('0x4b')](_0x48b0('0x55'),_0x2a7d40[_0x48b0('0x52')]);_0x3b9557[_0x48b0('0x1d')]=!_[_0x48b0('0x56')](_0x2089cf)?_0x2089cf['email']:null;_0x3b9557['adminEmail']=_0x2a7d40['email'];_0x3b9557['endUserNumber']=_0x320ce8[_0x48b0('0x2e')]()===_0x48b0('0x57')?_0x51a9e5[_0x48b0('0x58')]:_0x51a9e5['calleridnum'];_0x3b9557['callDirection']=_0x320ce8===_0x48b0('0x59')||_0x320ce8===_0x48b0('0x5a')?_0x48b0('0x59'):_0x48b0('0x57');var _0x3c2d33=util[_0x48b0('0x4b')](_0x48b0('0x5b'),_0x2a7d40[_0x48b0('0x54')],_0x51a9e5['uniqueid'],md5(_0x51a9e5[_0x48b0('0x5c')]));if(_0x135620&&_0x135620['monitor_format']){logger[_0x48b0('0x12')](_0x48b0('0x5d'),_0x48b0('0x5e'));_0x51a9e5['recordingURL']=_0x3c2d33;}else if(_0xdec7c2&&_0xdec7c2[_0x48b0('0x5f')]&&_0xdec7c2[_0x48b0('0x5f')]!==_0x48b0('0x60')){logger[_0x48b0('0x12')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x51a9e5['recordingURL']=_0x3c2d33;}else{_0x51a9e5[_0x48b0('0x61')]='';}return getAdminUser(_0x320ce8,_0x35b649,_0x3b9557,_0x20de36,_0x329aab,_0x4f1cde)['then'](getUser(_0x320ce8,_0x35b649,_0x20de36,_0x329aab,_0x4f1cde))[_0x48b0('0xd')](getEndUser(_0x320ce8,_0x35b649,_0x20de36,_0x329aab,_0x4f1cde))[_0x48b0('0xd')](getTicket(_0x320ce8,_0x35b649,_0x20de36,_0x545367,_0x51a9e5,_0x329aab))[_0x48b0('0xd')](function(_0xaba758){logger[_0x48b0('0x12')](util['format'](_0x48b0('0x62'),_0xaba758[_0x48b0('0x40')]));logger[_0x48b0('0x12')](util[_0x48b0('0x4b')](_0x48b0('0x63'),_0x320ce8));if(_0x320ce8!=='abandoned'){logger[_0x48b0('0x12')]('['+[_0x320ce8['toUpperCase']()]+']',_0x48b0('0x64'));emit(_0x2a7d40[_0x48b0('0x52')],_0x2089cf[_0x48b0('0x33')],_0xaba758[_0x48b0('0x40')]);}})['catch'](function(_0x1035e1){logger[_0x48b0('0x25')]('['+[_0x320ce8['toUpperCase']()]+_0x48b0('0x65'),util[_0x48b0('0x66')](_0x1035e1,{'showHidden':!![],'depth':null}));});};