0027e76c10e2ef71198721bbe902b1f23657c179
[motion2.git] / server / services / ami / trigger / integration / desk.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 _0xb03e=['xCALLY','Motion','CTI','concat','Tags','getString','Descriptions','/api/v2/users/%d','user','Fields','%s/customers/%d/cases','queue','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','user:%s','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','error','Desk\x20account\x20type\x20not\x20recognized','catch','outbound','recordingFormat','none','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','Authorization','destcalleridname','destcalleridnum','Displaying\x20ticket\x20to\x20agent...','%s/agent/tickets/%s','[OUTBOUND]','abandoned','monitor_format','calleridnum','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','desk','redis','defaults','localhost','emit','application/json','validateEmail','Getting\x20agent\x20with\x20email','%s/users','remoteUri','then','total_entries','find','_embedded','entries','info','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','format','%s/users/me','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','debug','[HTTP]','stringify','GET','authType','basic','%s:%s','username','password','token','%s/token:%s','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','%s/customers','POST','length','map','type','string','content','idField','custom_fields','variable','variableName','customField','customVariable','Variable','name','toLowerCase','priority','Creating\x20new\x20ticket...','Subjects','phone'];(function(_0x577c6f,_0x17dfbf){var _0x143418=function(_0x35f593){while(--_0x35f593){_0x577c6f['push'](_0x577c6f['shift']());}};_0x143418(++_0x17dfbf);}(_0xb03e,0x1eb));var _0xeb03=function(_0x184111,_0x14245c){_0x184111=_0x184111-0x0;var _0xdcddd4=_0xb03e[_0x184111];return _0xdcddd4;};'use strict';var _=require('lodash');var rp=require(_0xeb03('0x0'));var md5=require(_0xeb03('0x1'));var util=require(_0xeb03('0x2'));var Redis=require(_0xeb03('0x3'));var intUtil=require(_0xeb03('0x4'));var config=require(_0xeb03('0x5'));var logger=require(_0xeb03('0x6'))(_0xeb03('0x7'));config[_0xeb03('0x8')]=_[_0xeb03('0x9')](config[_0xeb03('0x8')],{'host':_0xeb03('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xeb03('0x8')]));function emit(_0x3d3322,_0x3a6e31,_0x246c6e){io['to'](_0x3d3322)[_0xeb03('0xb')](_0x3a6e31,_0x246c6e);}var headers={'Content-Type':_0xeb03('0xc'),'Accept':'application/json'};function getUser(_0x403b77,_0x99f4e2){if(intUtil[_0xeb03('0xd')](_0x99f4e2)===!![]){logger['info'](_0xeb03('0xe'),_0x99f4e2);return request({'uri':util['format'](_0xeb03('0xf'),_0x403b77[_0xeb03('0x10')])})[_0xeb03('0x11')](function(_0x5e50ea){if(_0x5e50ea[_0xeb03('0x12')]){return _[_0xeb03('0x13')](_0x5e50ea[_0xeb03('0x14')][_0xeb03('0x15')],{'email':_0x99f4e2});}})[_0xeb03('0x11')](function(_0x2422fd){if(_0x2422fd){logger[_0xeb03('0x16')](_0xeb03('0x17'));return _0x2422fd;}else{logger['info'](_0xeb03('0x18'));return request({'uri':util[_0xeb03('0x19')](_0xeb03('0x1a'),_0x403b77[_0xeb03('0x10')])});}});}else{logger['info'](_0xeb03('0x1b'));return request({'uri':util[_0xeb03('0x19')](_0xeb03('0x1a'),_0x403b77['remoteUri'])});}}function request(_0x7ce874){logger[_0xeb03('0x1c')](_0xeb03('0x1d'),JSON[_0xeb03('0x1e')](_0x7ce874));return rp(_[_0xeb03('0x9')](_0x7ce874,{'method':_0xeb03('0x1f'),'headers':headers,'json':!![]}));}function getAuth(_0x167a33){var _0x8d6725;if(_0x167a33[_0xeb03('0x20')]===_0xeb03('0x21')){_0x8d6725=util[_0xeb03('0x19')](_0xeb03('0x22'),_0x167a33[_0xeb03('0x23')],_0x167a33[_0xeb03('0x24')]);}else if(_0x167a33['authType']===_0xeb03('0x25')){_0x8d6725=util[_0xeb03('0x19')](_0xeb03('0x26'),_0x167a33[_0xeb03('0x23')],_0x167a33[_0xeb03('0x25')]);}return util[_0xeb03('0x19')](_0xeb03('0x27'),new Buffer(_0x8d6725)[_0xeb03('0x28')](_0xeb03('0x29')));}function getEndUser(_0x5a704b,_0x712ac2,_0x1707ec){logger[_0xeb03('0x16')](_0xeb03('0x2a'),_0x1707ec);return request({'uri':util[_0xeb03('0x19')]('%s/customers/search',_0x5a704b[_0xeb03('0x10')]),'qs':{'phone':_0x1707ec}})[_0xeb03('0x11')](function(_0x16cd4){if(_0x16cd4[_0xeb03('0x12')]){logger[_0xeb03('0x16')](_0xeb03('0x2b'));return _0x16cd4[_0xeb03('0x14')][_0xeb03('0x15')][0x0];}else{logger[_0xeb03('0x16')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xeb03('0x19')](_0xeb03('0x2c'),_0x5a704b[_0xeb03('0x10')]),'method':_0xeb03('0x2d'),'body':{'first_name':_0x712ac2,'title':_0x712ac2,'phone_numbers':[{'type':'work','value':_0x1707ec}]}});}});}function getTags(_0x581685,_0x1064a5){var _0x49e449=[];if(_0x581685&&_0x581685[_0xeb03('0x2e')]>0x0){_0x49e449=_[_0xeb03('0x2f')](_0x581685,_0x1064a5);}return _0x49e449;}function getCustomFields(_0x160a37,_0x5db8bb){var _0xd4c8ec=[];var _0x5de53a={'custom_fields':{}};if(_0x160a37['length']>0x0){_['forEach'](_0x160a37,function(_0x538d19){if(_0x538d19[_0xeb03('0x30')]===_0xeb03('0x31')&&_0x538d19['nameField']&&!_0x538d19['customField']){_0x5de53a[_0x538d19['nameField']['toLowerCase']()]=_0x538d19[_0xeb03('0x32')][_0xeb03('0x28')]();}else if(_0x538d19[_0xeb03('0x30')]===_0xeb03('0x31')&&_0x538d19[_0xeb03('0x33')]&&_0x538d19['customField']){_0x5de53a[_0xeb03('0x34')][_0x538d19['idField']]=_0x538d19[_0xeb03('0x32')][_0xeb03('0x28')]();}else if(_0x538d19[_0xeb03('0x30')]===_0xeb03('0x35')&&_0x538d19[_0xeb03('0x36')]&&_0x538d19[_0xeb03('0x33')]&&_0x538d19[_0xeb03('0x37')]){_0x5db8bb[_0x538d19[_0xeb03('0x36')]]&&(_0x5de53a['custom_fields'][_0x538d19[_0xeb03('0x33')]]=_0x5db8bb[_0x538d19['variableName']][_0xeb03('0x28')]());}else if(_0x538d19[_0xeb03('0x30')]===_0xeb03('0x38')&&_0x538d19[_0xeb03('0x39')]&&_0x538d19[_0xeb03('0x39')][_0xeb03('0x3a')]&&_0x538d19['idField']&&_0x538d19[_0xeb03('0x37')]){_0x5db8bb[_0x538d19['Variable']['name']['toLowerCase']()]&&(_0x5de53a[_0xeb03('0x34')][_0x538d19[_0xeb03('0x33')]]=_0x5db8bb[_0x538d19[_0xeb03('0x39')][_0xeb03('0x3a')][_0xeb03('0x3b')]()]['toString']());}});}if(_0x5de53a[_0xeb03('0x3c')]){_0x5de53a[_0xeb03('0x3c')]=Number(_0x5de53a[_0xeb03('0x3c')]);}return _0x5de53a;}function getTicket(_0x51a4ba,_0x4efbb7,_0xac05c4,_0x27e61f,_0x47118d){logger['info'](_0xeb03('0x3d'));var _0x392729=_['merge']({'subject':intUtil['getString'](_0x27e61f[_0xeb03('0x3e')],_0x47118d,'\x20'),'type':_0xeb03('0x3f'),'status':'new','labels':[_0xeb03('0x40'),_0xeb03('0x41'),_0xeb03('0x42')][_0xeb03('0x43')](getTags(_0x27e61f[_0xeb03('0x44')],_0xeb03('0x3a'))),'description':intUtil[_0xeb03('0x45')](_0x27e61f[_0xeb03('0x46')],_0x47118d,'\x0a'),'_links':{'assigned_user':{'href':util[_0xeb03('0x19')](_0xeb03('0x47'),_0x4efbb7['id']),'class':_0xeb03('0x48')}},'message':{'direction':'in','body':intUtil[_0xeb03('0x45')](_0x27e61f[_0xeb03('0x46')],_0x47118d,'\x0a')}},getCustomFields(_0x27e61f[_0xeb03('0x49')],_0x47118d));return request({'uri':util[_0xeb03('0x19')](_0xeb03('0x4a'),_0x51a4ba[_0xeb03('0x10')],_0xac05c4['id']),'method':_0xeb03('0x2d'),'body':_0x392729});}exports[_0xeb03('0x4b')]=function(_0x138d13,_0x43e530,_0x2f83c3,_0x2879b0,_0x5bb7d9,_0x53c406){var _0x44aa30,_0x2262b7;_0x53c406[_0xeb03('0x10')]=intUtil[_0xeb03('0x4c')](_0x53c406[_0xeb03('0x10')]);_0x53c406[_0xeb03('0x4d')]=intUtil[_0xeb03('0x4c')](_0x53c406[_0xeb03('0x4d')]);if(_0x5bb7d9&&_0x5bb7d9['monitor_format']){logger[_0xeb03('0x16')](_0xeb03('0x4e'),_0xeb03('0x4f'));_0x43e530[_0xeb03('0x50')]=util[_0xeb03('0x19')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x53c406['serverUrl'],_0x43e530[_0xeb03('0x51')],md5(_0x43e530['uniqueid']));}else{_0x43e530['recordingURL']='';}headers['Authorization']=getAuth(_0x53c406);return getUser(_0x53c406,_0x2879b0[_0xeb03('0x52')])[_0xeb03('0x11')](function(_0x38423f){_0x44aa30=_0x38423f;logger[_0xeb03('0x16')](_0xeb03('0x53'),_0x44aa30['id']);return getEndUser(_0x53c406,_0x43e530[_0xeb03('0x54')],_0x43e530['calleridnum']);})[_0xeb03('0x11')](function(_0x4bf739){_0x2262b7=_0x4bf739;logger['info'](_0xeb03('0x55'),_0x2262b7['id']);return getTicket(_0x53c406,_0x44aa30,_0x2262b7,_0x2f83c3,_0x43e530);})[_0xeb03('0x11')](function(_0x205fa3){if(_0x205fa3){logger['info'](_0xeb03('0x56'));logger[_0xeb03('0x16')](_0xeb03('0x57'),_0x205fa3['id']);switch(_0x53c406[_0xeb03('0x30')]){case _0xeb03('0x58'):logger['info'](_0xeb03('0x4e'),'Displaying\x20ticket\x20to\x20agent...');emit(util[_0xeb03('0x19')](_0xeb03('0x59'),_0x2879b0[_0xeb03('0x3a')]),_0xeb03('0x5a'),{'recordId':_0x205fa3['id']});break;case _0xeb03('0x5b'):logger[_0xeb03('0x16')](_0xeb03('0x4e'),_0xeb03('0x5c'));emit(util[_0xeb03('0x19')](_0xeb03('0x59'),_0x2879b0[_0xeb03('0x3a')]),_0xeb03('0x5d'),{'uri':util[_0xeb03('0x19')](_0xeb03('0x5e'),_0x205fa3['id'])});break;default:logger[_0xeb03('0x5f')](_0xeb03('0x4e'),_0xeb03('0x60'));}}})[_0xeb03('0x61')](function(_0x30668f){console[_0xeb03('0x5f')](_0x30668f);logger[_0xeb03('0x5f')](_0xeb03('0x4e'),JSON[_0xeb03('0x1e')](_0x30668f));});};exports[_0xeb03('0x62')]=function(_0x509d79,_0x17112e,_0x17bf76,_0x415c18,_0x5405b4,_0xbbb4dd,_0x3604e8){var _0x3a6532,_0xf7e2b;_0xbbb4dd[_0xeb03('0x10')]=intUtil[_0xeb03('0x4c')](_0xbbb4dd[_0xeb03('0x10')]);_0xbbb4dd[_0xeb03('0x4d')]=intUtil[_0xeb03('0x4c')](_0xbbb4dd[_0xeb03('0x4d')]);if(_0x3604e8&&_0x3604e8[_0xeb03('0x63')]&&_0x3604e8[_0xeb03('0x63')]!==_0xeb03('0x64')){logger[_0xeb03('0x16')]('[OUTBOUND]',_0xeb03('0x4f'));_0x17112e[_0xeb03('0x50')]=util[_0xeb03('0x19')](_0xeb03('0x65'),_0xbbb4dd[_0xeb03('0x4d')],_0x17112e[_0xeb03('0x51')],md5(_0x17112e[_0xeb03('0x51')]));}headers[_0xeb03('0x66')]=getAuth(_0xbbb4dd);return getUser(_0xbbb4dd,_0x415c18[_0xeb03('0x52')])[_0xeb03('0x11')](function(_0x5baf6f){_0x3a6532=_0x5baf6f;logger[_0xeb03('0x16')](_0xeb03('0x53'),_0x3a6532['id']);return getEndUser(_0xbbb4dd,_0x17112e[_0xeb03('0x67')],_0x17112e[_0xeb03('0x68')]);})['then'](function(_0x24a0c5){_0xf7e2b=_0x24a0c5;logger[_0xeb03('0x16')](_0xeb03('0x55'),_0xf7e2b['id']);return getTicket(_0xbbb4dd,_0x3a6532,_0xf7e2b,_0x17bf76,_0x17112e);})[_0xeb03('0x11')](function(_0x17a00f){if(_0x17a00f){logger['info'](_0xeb03('0x56'));logger[_0xeb03('0x16')](_0xeb03('0x57'),_0x17a00f['id']);switch(_0xbbb4dd['type']){case _0xeb03('0x58'):logger[_0xeb03('0x16')]('[QUEUE]',_0xeb03('0x69'));emit(util[_0xeb03('0x19')](_0xeb03('0x59'),_0x415c18['name']),_0xeb03('0x5a'),{'recordId':_0x17a00f['id']});break;case _0xeb03('0x5b'):logger['info'](_0xeb03('0x4e'),_0xeb03('0x5c'));emit(util[_0xeb03('0x19')](_0xeb03('0x59'),_0x415c18[_0xeb03('0x3a')]),_0xeb03('0x5d'),{'uri':util[_0xeb03('0x19')](_0xeb03('0x6a'),_0xbbb4dd['remoteUri'],_0x17a00f['id'])});break;default:logger[_0xeb03('0x5f')]('[OUTBOUND]',_0xeb03('0x60'));}}})[_0xeb03('0x61')](function(_0x3a9518){logger['error'](_0xeb03('0x6b'),JSON[_0xeb03('0x1e')](_0x3a9518));});};exports[_0xeb03('0x6c')]=function(_0x467a9d,_0x47c389,_0x3fe855,_0x1cdf8e,_0x5db5c5,_0x588f31){var _0x583518,_0x24ece0;_0x588f31[_0xeb03('0x10')]=intUtil[_0xeb03('0x4c')](_0x588f31[_0xeb03('0x10')]);_0x588f31[_0xeb03('0x4d')]=intUtil[_0xeb03('0x4c')](_0x588f31[_0xeb03('0x4d')]);if(_0x5db5c5&&_0x5db5c5[_0xeb03('0x6d')]){logger[_0xeb03('0x16')]('[ABANDONED]','Recording\x20is\x20enabled!');_0x47c389[_0xeb03('0x50')]=util[_0xeb03('0x19')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x588f31[_0xeb03('0x4d')],_0x47c389[_0xeb03('0x51')],md5(_0x47c389[_0xeb03('0x51')]));}else{_0x47c389[_0xeb03('0x50')]='';}headers['Authorization']=getAuth(_0x588f31);return getUser(_0x588f31)['then'](function(_0x21a182){_0x583518=_0x21a182;logger[_0xeb03('0x16')](_0xeb03('0x53'),_0x583518['id']);return getEndUser(_0x588f31,_0x47c389[_0xeb03('0x54')],_0x47c389[_0xeb03('0x6e')]);})[_0xeb03('0x11')](function(_0x1a8057){_0x24ece0=_0x1a8057;logger[_0xeb03('0x16')](_0xeb03('0x55'),_0x24ece0['id']);return getTicket(_0x588f31,_0x583518,_0x24ece0,_0x3fe855,_0x47c389);})[_0xeb03('0x11')](function(_0x46fba8){if(_0x46fba8){logger['info']('Ticket\x20created!');logger[_0xeb03('0x16')]('The\x20Ticket\x20ID\x20is:',_0x46fba8['id']);}})[_0xeb03('0x61')](function(_0x4cf4f1){logger[_0xeb03('0x5f')]('[ABANDONED]',JSON[_0xeb03('0x1e')](_0x4cf4f1));});};