Built motion from commit b5413ace.|2.6.9
[motion2.git] / server / services / ami / trigger / integration / dynamics365.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 _0x35c1=['outbound','destcalleridnum','calleridnum','contacts','4.0','body','odata-entityid','substring','lastIndexOf','enduserId','catch','telephone1','contacts?$select=','&$filter=','\x20eq\x20\x27','replace','%2b','value','contactid','nothing','info',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','forEach','string','picklist','type','nameField','idField','indexOf','content','ticketType','incident','incidents','assign','Subjects','getString','Fields','phonecall','/systemusers(','callDirection','queue','/contacts(','phonecalls','headers','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','stripTrailingSlash','serverUrl','unmanaged','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none',']\x20The\x20User\x20email\x20is:','moduleCreate','additionalSearchContact',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','openNewTab','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','Error\x20running\x20Dynamics365\x20integration','request-promise','util','./util','ioredis','../../../../config/logger','dynamics365','defaults','redis','localhost','socket.io-emitter','modernAuthentication','remoteUri','CloudProvider','data7','tenantId','data2','data5','POST','username','password','clientSecret','access_token','error','toUpperCase',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','then','isNil','validateEmail','email','userEmail','length','isdisabled',']\x20Agent\x20found\x20','internalemailaddress','userId','systemuserid','toLowerCase'];(function(_0x15acbd,_0x327a09){var _0x68f3b3=function(_0x4fe016){while(--_0x4fe016){_0x15acbd['push'](_0x15acbd['shift']());}};_0x68f3b3(++_0x327a09);}(_0x35c1,0xb7));var _0x135c=function(_0x39c9fc,_0x267494){_0x39c9fc=_0x39c9fc-0x0;var _0x425ea4=_0x35c1[_0x39c9fc];return _0x425ea4;};'use strict';var _=require('lodash');var rp=require(_0x135c('0x0'));var util=require(_0x135c('0x1'));var intUtil=require(_0x135c('0x2'));var md5=require('md5');var Redis=require(_0x135c('0x3'));var logger=require(_0x135c('0x4'))(_0x135c('0x5'));var config=require('../../../../config/environment');config['redis']=_[_0x135c('0x6')](config[_0x135c('0x7')],{'host':_0x135c('0x8'),'port':0x18eb});var io=require(_0x135c('0x9'))(new Redis(config[_0x135c('0x7')]));function getAuthToken(_0x1a15e9,_0x33680e,_0x44a171){if(_0x1a15e9[_0x135c('0xa')]){_0x1a15e9[_0x135c('0xb')]=_0x1a15e9[_0x135c('0xc')][_0x135c('0xd')];_0x1a15e9[_0x135c('0xe')]=_0x1a15e9[_0x135c('0xc')][_0x135c('0xf')];return Promise['resolve'](_0x1a15e9['CloudProvider'][_0x135c('0x10')]);}var _0x3efc5f={'method':_0x135c('0x11'),'uri':_0x33680e,'form':{'client_id':_0x1a15e9['clientId'],'resource':_0x1a15e9[_0x135c('0xb')],'username':_0x1a15e9[_0x135c('0x12')],'password':_0x1a15e9['password'],'grant_type':_0x135c('0x13'),'client_secret':_0x1a15e9[_0x135c('0x14')]},'json':!![]};return rp(_0x3efc5f)['then'](function(_0x2978b1){return _0x2978b1[_0x135c('0x15')];})['catch'](function(_0x59b0a6){logger[_0x135c('0x16')]('['+[_0x44a171[_0x135c('0x17')]()]+_0x135c('0x18'));return _0x59b0a6[_0x135c('0x19')];});}function getUser(_0x5734eb,_0x227ce8,_0x314c82,_0xc2a1fc,_0x32f43d,_0x5e0226){return new Promise(function(_0x31310e,_0x47a88f){return getAuthToken(_0x227ce8,_0xc2a1fc,_0x5e0226)['then'](function(_0xd50aa5){var _0x4cdb3c={'method':_0x135c('0x1a'),'uri':_0x32f43d+_0x135c('0x1b'),'headers':{'Authorization':_0x135c('0x1c')+_0xd50aa5,'OData-Version':'4.0'},'json':!![]};return rp(_0x4cdb3c);})[_0x135c('0x1d')](function(_0x29da28){var _0x109a9d=_0x29da28['value'];var _0x34a30b=![];var _0x2cc54b=null;if(!_[_0x135c('0x1e')](_0x314c82)){if(intUtil[_0x135c('0x1f')](_0x314c82[_0x135c('0x20')])){_0x5734eb[_0x135c('0x21')]=_0x314c82[_0x135c('0x20')];for(_0x2cc54b=0x0;_0x2cc54b<_0x109a9d[_0x135c('0x22')];_0x2cc54b++){if(_0x109a9d[_0x2cc54b]['internalemailaddress']===_0x314c82[_0x135c('0x20')]&&!_0x109a9d[_0x2cc54b][_0x135c('0x23')]){_0x34a30b=!![];logger['info']('['+[_0x5e0226[_0x135c('0x17')]()]+_0x135c('0x24')+_0x109a9d[_0x2cc54b]['systemuserid']+'!');_0x5734eb['userId']=_0x109a9d[_0x2cc54b]['systemuserid'];}}}}if(!_0x34a30b){logger['info']('['+[_0x5e0226[_0x135c('0x17')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x5734eb[_0x135c('0x21')]=_0x227ce8[_0x135c('0x12')];for(_0x2cc54b=0x0;_0x2cc54b<_0x109a9d[_0x135c('0x22')];_0x2cc54b++){if(_0x109a9d[_0x2cc54b][_0x135c('0x25')]===_0x227ce8[_0x135c('0x12')]){_0x5734eb[_0x135c('0x26')]=_0x109a9d[_0x2cc54b][_0x135c('0x27')];}}}_0x31310e(_0x5734eb);})['catch'](function(_0x3973e7){_0x47a88f(_0x3973e7[_0x135c('0x19')]);});});}function createEndUser(_0x2c890e,_0x361282,_0x49a05b,_0x567447,_0x1dcb94,_0x585a51,_0x5713bf){return new Promise(function(_0x128882,_0x547a66){return getAuthToken(_0x361282,_0x49a05b,_0x585a51)[_0x135c('0x1d')](function(_0x533bb6){var _0x35d035=_0x585a51[_0x135c('0x28')]()===_0x135c('0x29')?_0x1dcb94[_0x135c('0x2a')]:_0x1dcb94[_0x135c('0x2b')];var _0x101e89={'method':'POST','uri':_0x567447+_0x135c('0x2c'),'body':{'fullname':_0x35d035,'firstname':_0x35d035,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0x2c890e[_0x135c('0x26')]+')'},'headers':{'Authorization':_0x135c('0x1c')+_0x533bb6,'OData-Version':_0x135c('0x2d')},'json':!![],'resolveWithFullResponse':!![]};_0x101e89[_0x135c('0x2e')][_0x5713bf]=_0x35d035;return rp(_0x101e89);})['then'](function(_0x3e3a33){var _0x91d8de=_0x3e3a33['headers'][_0x135c('0x2f')];var _0x1c2bf4=_0x91d8de[_0x135c('0x30')](_0x91d8de[_0x135c('0x31')]('(')+0x1,_0x91d8de[_0x135c('0x31')](')'));_0x2c890e[_0x135c('0x32')]=_0x1c2bf4;_0x128882(_0x2c890e);})[_0x135c('0x33')](function(_0x55d83d){_0x547a66(_0x55d83d[_0x135c('0x19')]);});});}function getEndUser(_0xaaf232,_0x4ce8ef,_0x5c4450,_0x43d3a9,_0x802cd7,_0x2f5ea7,_0x4f7f87,_0x3a4950){var _0x358d9b=_0x2f5ea7['toLowerCase']()==='outbound'?_0x802cd7['destcalleridnum']:_0x802cd7[_0x135c('0x2b')];return getAuthToken(_0x4ce8ef,_0x5c4450,_0x2f5ea7)[_0x135c('0x1d')](function(_0x8fa938){_0x3a4950=_0x3a4950?_0x3a4950:_0x135c('0x34');var _0x1d9131={'method':'GET','uri':_0x43d3a9+_0x135c('0x35')+_0x3a4950+_0x135c('0x36')+_0x3a4950+_0x135c('0x37')+_0x358d9b[_0x135c('0x38')]('+',_0x135c('0x39'))+'\x27','headers':{'Authorization':_0x135c('0x1c')+_0x8fa938,'If-None-Match':null,'OData-Version':_0x135c('0x2d')},'json':!![]};return rp(_0x1d9131);})[_0x135c('0x1d')](function(_0x12f433){var _0x4aaacd=![];if(!_0x12f433)return _0x4aaacd;var _0x3e9833=_0x12f433[_0x135c('0x3a')];for(var _0x3b7c81=0x0;_0x3b7c81<_0x3e9833[_0x135c('0x22')];_0x3b7c81++){if(_0x3e9833[_0x3b7c81][_0x3a4950]===_0x358d9b){_0x4aaacd=!![];_0xaaf232[_0x135c('0x32')]=_0x3e9833[_0x3b7c81][_0x135c('0x3b')];}}return _0x4aaacd;})[_0x135c('0x1d')](function(_0x199100){if(_0x199100)return _0xaaf232;if(_0x4f7f87===_0x135c('0x3c')){logger[_0x135c('0x3d')]('['+[_0x2f5ea7[_0x135c('0x17')]()]+_0x135c('0x3e'));return _0xaaf232;}return createEndUser(_0xaaf232,_0x4ce8ef,_0x5c4450,_0x43d3a9,_0x802cd7,_0x2f5ea7,_0x3a4950)[_0x135c('0x1d')](function(_0x325d44){logger[_0x135c('0x3d')]('['+[_0x2f5ea7['toUpperCase']()]+_0x135c('0x3f'),_0x325d44[_0x135c('0x32')]);return _0x325d44;});});}function getCustomFields(_0xbd5ec6,_0x5ef6c5,_0x3396f0){var _0x2140dc={};if(_0xbd5ec6[_0x135c('0x22')]>0x0){_[_0x135c('0x40')](_0xbd5ec6,function(_0x456c15){if(_['includes']([_0x135c('0x41'),_0x135c('0x42')],_0x456c15[_0x135c('0x43')])&&_0x456c15[_0x135c('0x44')]&&!_0x456c15['customField']){var _0x3bb903=_0x456c15[_0x135c('0x45')][_0x135c('0x28')]();var _0x44c1dc=_0x3bb903[_0x135c('0x30')](0x0,_0x3bb903[_0x135c('0x46')]('_'));var _0x4566bc=_0x3bb903['substring'](_0x3bb903[_0x135c('0x46')]('_')+0x1);if(_0x44c1dc===_0x3396f0){_0x2140dc[_0x4566bc]=_0x456c15[_0x135c('0x47')];}}});}return _0x2140dc;}function getTicket(_0x335835,_0x484f14,_0x1c1569,_0x1bfd4b,_0x4fdb98,_0x2fd383,_0x122edd){return new Promise(function(_0x1ffedc,_0x9187e6){var _0x41a640;return getAuthToken(_0x484f14,_0x1c1569,_0x122edd)[_0x135c('0x1d')](function(_0x51274f){if(_0x2fd383[_0x135c('0x48')]===_0x135c('0x49')){_0x41a640={'method':_0x135c('0x11'),'uri':_0x1bfd4b+_0x135c('0x4a'),'body':Object[_0x135c('0x4b')]({},{'title':intUtil['getString'](_0x2fd383[_0x135c('0x4c')],_0x4fdb98,'\x20'),'description':intUtil[_0x135c('0x4d')](_0x2fd383['Descriptions'],_0x4fdb98,'\x0a'),'customerid_contact@odata.bind':_0x335835[_0x135c('0x32')]?'/contacts('+_0x335835['enduserId']+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x335835[_0x135c('0x26')]+')','caseorigincode':'1'},getCustomFields(_0x2fd383[_0x135c('0x4e')],_0x4fdb98,_0x2fd383[_0x135c('0x48')])),'headers':{'Authorization':_0x135c('0x1c')+_0x51274f,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x2fd383[_0x135c('0x48')]===_0x135c('0x4f')){var _0x631e5b=_0x335835[_0x135c('0x32')]?[{'partyid_systemuser@odata.bind':_0x135c('0x50')+_0x335835[_0x135c('0x26')]+')','participationtypemask':_0x335835[_0x135c('0x51')]===_0x135c('0x52')?0x2:0x1},{'partyid_contact@odata.bind':_0x135c('0x53')+_0x335835[_0x135c('0x32')]+')','participationtypemask':_0x335835[_0x135c('0x51')]==='queue'?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0x135c('0x50')+_0x335835[_0x135c('0x26')]+')','participationtypemask':_0x335835['callDirection']===_0x135c('0x52')?0x2:0x1}];_0x41a640={'method':_0x135c('0x11'),'uri':_0x1bfd4b+_0x135c('0x54'),'body':Object[_0x135c('0x4b')]({},{'subject':intUtil[_0x135c('0x4d')](_0x2fd383['Subjects'],_0x4fdb98,'\x20'),'phonenumber':String(_0x4fdb98['calleridnum']),'description':intUtil[_0x135c('0x4d')](_0x2fd383['Descriptions'],_0x4fdb98,'\x0a'),'regardingobjectid_contact@odata.bind':_0x335835['enduserId']?'/contacts('+_0x335835[_0x135c('0x32')]+')':undefined,'ownerid@odata.bind':_0x135c('0x50')+_0x335835['userId']+')','directioncode':_0x335835['callDirection']===_0x135c('0x52')?![]:!![],'phonecall_activity_parties':_0x631e5b},getCustomFields(_0x2fd383[_0x135c('0x4e')],_0x4fdb98,_0x2fd383[_0x135c('0x48')])),'headers':{'Authorization':_0x135c('0x1c')+_0x51274f,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x41a640);})['then'](function(_0xcd29ab){var _0x167467=_0xcd29ab[_0x135c('0x55')][_0x135c('0x2f')];var _0x547da8=_0x167467[_0x135c('0x30')](_0x167467[_0x135c('0x31')]('(')+0x1,_0x167467[_0x135c('0x31')](')'));_0x335835[_0x135c('0x56')]=_0x547da8;_0x1ffedc(_0x335835);})['catch'](function(_0x3a7844){_0x9187e6(_0x3a7844[_0x135c('0x19')]);});});}function emit(_0x1fb453,_0x530938,_0x330d31,_0x58a0dd){var _0x58c68c={'uri':util[_0x135c('0x57')](_0x135c('0x58'),_0x1fb453,_0x330d31,_0x58a0dd)};io['to'](util[_0x135c('0x57')](_0x135c('0x59'),_0x530938))[_0x135c('0x5a')]('trigger:browser:url',_0x58c68c);}exports['cs']=function(_0x45eab2,_0x3b4b6a,_0x17fd06,_0x4d066f,_0x5bd146,_0x4d08f1,_0x556010,_0x1083b9){var _0x222e32={};_0x4d08f1[_0x135c('0xb')]=_0x4d08f1[_0x135c('0xa')]?intUtil['stripTrailingSlash'](_0x4d08f1['CloudProvider'][_0x135c('0xd')]):intUtil[_0x135c('0x5b')](_0x4d08f1[_0x135c('0xb')]);_0x4d08f1[_0x135c('0x5c')]=intUtil[_0x135c('0x5b')](_0x4d08f1[_0x135c('0x5c')]);_0x222e32[_0x135c('0x51')]=_0x1083b9===_0x135c('0x52')||_0x1083b9===_0x135c('0x5d')?'queue':_0x135c('0x29');var _0x1d5aec=_0x4d08f1[_0x135c('0xa')]?util[_0x135c('0x57')]('%s/api/data/v9.0/',_0x4d08f1['CloudProvider']['data7']):util['format']('%s/api/data/v9.0/',_0x4d08f1['remoteUri']);var _0x4cbf46=util[_0x135c('0x57')](_0x135c('0x5e'),_0x4d08f1['tenantId']);var _0x936b8a=util['format'](_0x135c('0x5f'),_0x4d08f1[_0x135c('0x5c')],_0x3b4b6a[_0x135c('0x60')],md5(_0x3b4b6a[_0x135c('0x60')]));if(_0x5bd146&&_0x5bd146['monitor_format']){logger['info'](_0x135c('0x61'),_0x135c('0x62'));_0x3b4b6a[_0x135c('0x63')]=_0x936b8a;}else if(_0x556010&&_0x556010[_0x135c('0x64')]&&_0x556010[_0x135c('0x64')]!==_0x135c('0x65')){logger[_0x135c('0x3d')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x3b4b6a[_0x135c('0x63')]=_0x936b8a;}else{_0x3b4b6a['recordingURL']='';}return getUser(_0x222e32,_0x4d08f1,_0x4d066f,_0x4cbf46,_0x1d5aec,_0x1083b9)[_0x135c('0x1d')](function(_0x4315cd){logger[_0x135c('0x3d')]('['+_0x1083b9[_0x135c('0x17')]()+']\x20The\x20User\x20ID\x20is:',_0x4315cd['userId']);logger['info']('['+_0x1083b9['toUpperCase']()+_0x135c('0x66'),_0x4315cd[_0x135c('0x21')]);return getEndUser(_0x4315cd,_0x4d08f1,_0x4cbf46,_0x1d5aec,_0x3b4b6a,_0x1083b9,_0x17fd06[_0x135c('0x67')],_0x17fd06[_0x135c('0x68')]);})[_0x135c('0x1d')](function(_0x5f36fa){logger[_0x135c('0x3d')]('['+_0x1083b9[_0x135c('0x17')]()+']\x20The\x20Enduser\x20ID\x20is:',_0x5f36fa['enduserId']);logger[_0x135c('0x3d')]('['+_0x1083b9[_0x135c('0x17')]()+_0x135c('0x69'),_0x3b4b6a[_0x135c('0x2b')]);return getTicket(_0x5f36fa,_0x4d08f1,_0x4cbf46,_0x1d5aec,_0x3b4b6a,_0x17fd06,_0x1083b9);})[_0x135c('0x1d')](function(_0x16e112){logger[_0x135c('0x3d')](util[_0x135c('0x57')]('['+_0x1083b9['toUpperCase']()+_0x135c('0x6a'),_0x17fd06[_0x135c('0x48')],_0x16e112['ticketId']));logger['info'](util[_0x135c('0x57')]('['+_0x1083b9[_0x135c('0x17')]()+_0x135c('0x6b'),_0x1083b9));if(_0x1083b9!==_0x135c('0x5d')&&_0x17fd06[_0x135c('0x6c')]){logger[_0x135c('0x3d')]('['+_0x1083b9[_0x135c('0x17')]()+']',_0x135c('0x6d'));emit(_0x4d08f1[_0x135c('0xb')],_0x4d066f[_0x135c('0x6e')],_0x17fd06[_0x135c('0x48')],_0x16e112[_0x135c('0x56')]);}})[_0x135c('0x33')](function(_0x2e293e){logger[_0x135c('0x16')]('['+_0x1083b9[_0x135c('0x17')]()+']\x20Error\x20running\x20Dynamics365\x20integration',_0x2e293e[_0x135c('0x19')]);console[_0x135c('0x16')](_0x135c('0x6f'),_0x2e293e);});};