5b5d2b04055cfe25462b7decd3b2aeac76451e08
[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 _0xd406=['The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','user:%s','newTab','https://xcally.desk.com/web/agent/case/%d','error','stringify','outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','The\x20User\x20ID\x20is:','destcalleridname','integrationTab','trigger:desk:display','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/agent/tickets/%s','catch','unmanaged','toUpperCase','uniqueid','lastevent','lodash','request-promise','md5','util','ioredis','./util','../../../../config/logger','desk','redis','defaults','localhost','socket.io-emitter','application/json','validateEmail','info','format','%s/users','total_entries','find','_embedded','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','remoteUri','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','debug','[HTTP]','authType','basic','%s:%s','username','password','token','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','then','Enduser\x20found!','entries','%s/customers','POST','work','length','map','forEach','includes','picklist','type','nameField','customField','toLowerCase','content','string','idField','variable','variableName','custom_fields','customVariable','Variable','name','merge','getString','Subjects','phone','xCALLY','Motion','CTI','concat','Tags','Descriptions','/api/v2/users/%d','user','%s/customers/%d/cases','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','Authorization','calleridname','calleridnum'];(function(_0x5ed346,_0x49952d){var _0x11513e=function(_0x559eea){while(--_0x559eea){_0x5ed346['push'](_0x5ed346['shift']());}};_0x11513e(++_0x49952d);}(_0xd406,0x15e));var _0x6d40=function(_0x813f61,_0x30c3bd){_0x813f61=_0x813f61-0x0;var _0x459ea4=_0xd406[_0x813f61];return _0x459ea4;};'use strict';var _=require(_0x6d40('0x0'));var rp=require(_0x6d40('0x1'));var md5=require(_0x6d40('0x2'));var util=require(_0x6d40('0x3'));var Redis=require(_0x6d40('0x4'));var intUtil=require(_0x6d40('0x5'));var config=require('../../../../config/environment');var logger=require(_0x6d40('0x6'))(_0x6d40('0x7'));config[_0x6d40('0x8')]=_[_0x6d40('0x9')](config[_0x6d40('0x8')],{'host':_0x6d40('0xa'),'port':0x18eb});var io=require(_0x6d40('0xb'))(new Redis(config[_0x6d40('0x8')]));function emit(_0x369dd1,_0x18232e,_0x4683c3){io['to'](_0x369dd1)['emit'](_0x18232e,_0x4683c3);}var headers={'Content-Type':'application/json','Accept':_0x6d40('0xc')};function getUser(_0x5b329c,_0x1d505d){if(intUtil[_0x6d40('0xd')](_0x1d505d)===!![]){logger[_0x6d40('0xe')]('Getting\x20agent\x20with\x20email',_0x1d505d);return request({'uri':util[_0x6d40('0xf')](_0x6d40('0x10'),_0x5b329c['remoteUri'])})['then'](function(_0x2ba0f6){if(_0x2ba0f6[_0x6d40('0x11')]){return _[_0x6d40('0x12')](_0x2ba0f6[_0x6d40('0x13')]['entries'],{'email':_0x1d505d});}})['then'](function(_0x28f089){if(_0x28f089){logger[_0x6d40('0xe')]('Agent\x20found!');return _0x28f089;}else{logger[_0x6d40('0xe')](_0x6d40('0x14'));return request({'uri':util[_0x6d40('0xf')]('%s/users/me',_0x5b329c[_0x6d40('0x15')])});}});}else{logger[_0x6d40('0xe')](_0x6d40('0x16'));return request({'uri':util['format']('%s/users/me',_0x5b329c[_0x6d40('0x15')])});}}function request(_0x554902){logger[_0x6d40('0x17')](_0x6d40('0x18'),JSON['stringify'](_0x554902));return rp(_[_0x6d40('0x9')](_0x554902,{'method':'GET','headers':headers,'json':!![]}));}function getAuth(_0x28db12){var _0x39c9cb;if(_0x28db12[_0x6d40('0x19')]===_0x6d40('0x1a')){_0x39c9cb=util[_0x6d40('0xf')](_0x6d40('0x1b'),_0x28db12[_0x6d40('0x1c')],_0x28db12[_0x6d40('0x1d')]);}else if(_0x28db12[_0x6d40('0x19')]===_0x6d40('0x1e')){_0x39c9cb=util['format']('%s/token:%s',_0x28db12['username'],_0x28db12[_0x6d40('0x1e')]);}return util[_0x6d40('0xf')](_0x6d40('0x1f'),new Buffer(_0x39c9cb)[_0x6d40('0x20')](_0x6d40('0x21')));}function getEndUser(_0x44f8f7,_0x4d1810,_0x360ce7){logger[_0x6d40('0xe')](_0x6d40('0x22'),_0x360ce7);return request({'uri':util['format'](_0x6d40('0x23'),_0x44f8f7[_0x6d40('0x15')]),'qs':{'phone':_0x360ce7}})[_0x6d40('0x24')](function(_0x18746e){if(_0x18746e[_0x6d40('0x11')]){logger[_0x6d40('0xe')](_0x6d40('0x25'));return _0x18746e[_0x6d40('0x13')][_0x6d40('0x26')][0x0];}else{logger['info']('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util['format'](_0x6d40('0x27'),_0x44f8f7['remoteUri']),'method':_0x6d40('0x28'),'body':{'first_name':_0x4d1810,'title':_0x4d1810,'phone_numbers':[{'type':_0x6d40('0x29'),'value':_0x360ce7}]}});}});}function getTags(_0x41a454,_0x49a822){var _0x41cc28=[];if(_0x41a454&&_0x41a454[_0x6d40('0x2a')]>0x0){_0x41cc28=_[_0x6d40('0x2b')](_0x41a454,_0x49a822);}return _0x41cc28;}function getCustomFields(_0x5b968e,_0x3d7a7d){var _0xab7314=[];var _0x6e28a1={'custom_fields':{}};if(_0x5b968e[_0x6d40('0x2a')]>0x0){_[_0x6d40('0x2c')](_0x5b968e,function(_0x5617ab){if(_[_0x6d40('0x2d')](['string',_0x6d40('0x2e')],_0x5617ab[_0x6d40('0x2f')])&&_0x5617ab[_0x6d40('0x30')]&&!_0x5617ab[_0x6d40('0x31')]){_0x6e28a1[_0x5617ab['nameField'][_0x6d40('0x32')]()]=_0x5617ab[_0x6d40('0x33')]['toString']();}else if(_['includes']([_0x6d40('0x34'),_0x6d40('0x2e')],_0x5617ab[_0x6d40('0x2f')])&&_0x5617ab[_0x6d40('0x35')]&&_0x5617ab['customField']){_0x6e28a1['custom_fields'][_0x5617ab[_0x6d40('0x35')]]=_0x5617ab[_0x6d40('0x33')][_0x6d40('0x20')]();}else if(_0x5617ab[_0x6d40('0x2f')]===_0x6d40('0x36')&&_0x5617ab[_0x6d40('0x37')]&&_0x5617ab[_0x6d40('0x35')]&&_0x5617ab[_0x6d40('0x31')]){_0x3d7a7d[_0x5617ab[_0x6d40('0x37')]]&&(_0x6e28a1[_0x6d40('0x38')][_0x5617ab[_0x6d40('0x35')]]=_0x3d7a7d[_0x5617ab['variableName']][_0x6d40('0x20')]());}else if(_0x5617ab['type']===_0x6d40('0x39')&&_0x5617ab[_0x6d40('0x3a')]&&_0x5617ab[_0x6d40('0x3a')][_0x6d40('0x3b')]&&_0x5617ab[_0x6d40('0x35')]&&_0x5617ab[_0x6d40('0x31')]){_0x3d7a7d[_0x5617ab[_0x6d40('0x3a')][_0x6d40('0x3b')]['toLowerCase']()]&&(_0x6e28a1[_0x6d40('0x38')][_0x5617ab[_0x6d40('0x35')]]=_0x3d7a7d[_0x5617ab[_0x6d40('0x3a')]['name'][_0x6d40('0x32')]()][_0x6d40('0x20')]());}});}if(_0x6e28a1['priority']){_0x6e28a1['priority']=Number(_0x6e28a1['priority']);}return _0x6e28a1;}function getTicket(_0x4ff085,_0x5dc235,_0x2e6efe,_0x391f5e,_0x396db8){logger[_0x6d40('0xe')]('Creating\x20new\x20ticket...');var _0x40bbc7=_[_0x6d40('0x3c')]({'subject':intUtil[_0x6d40('0x3d')](_0x391f5e[_0x6d40('0x3e')],_0x396db8,'\x20'),'type':_0x6d40('0x3f'),'status':'new','labels':[_0x6d40('0x40'),_0x6d40('0x41'),_0x6d40('0x42')][_0x6d40('0x43')](getTags(_0x391f5e[_0x6d40('0x44')],_0x6d40('0x3b'))),'description':intUtil['getString'](_0x391f5e[_0x6d40('0x45')],_0x396db8,'\x0a'),'_links':{'assigned_user':{'href':util[_0x6d40('0xf')](_0x6d40('0x46'),_0x5dc235['id']),'class':_0x6d40('0x47')}},'message':{'direction':'in','body':intUtil[_0x6d40('0x3d')](_0x391f5e[_0x6d40('0x45')],_0x396db8,'\x0a')}},getCustomFields(_0x391f5e['Fields'],_0x396db8));return request({'uri':util[_0x6d40('0xf')](_0x6d40('0x48'),_0x4ff085[_0x6d40('0x15')],_0x2e6efe['id']),'method':_0x6d40('0x28'),'body':_0x40bbc7});}exports['queue']=function(_0x51ef46,_0x1ad492,_0x3387c1,_0x4f73a5,_0x4b068c,_0x26c172){var _0x178046,_0x1f1841;_0x26c172['remoteUri']=intUtil[_0x6d40('0x49')](_0x26c172[_0x6d40('0x15')]);_0x26c172[_0x6d40('0x4a')]=intUtil[_0x6d40('0x49')](_0x26c172[_0x6d40('0x4a')]);if(_0x4b068c&&_0x4b068c[_0x6d40('0x4b')]){logger['info'](_0x6d40('0x4c'),_0x6d40('0x4d'));_0x1ad492[_0x6d40('0x4e')]=util[_0x6d40('0xf')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x26c172['serverUrl'],_0x1ad492['uniqueid'],md5(_0x1ad492['uniqueid']));}else{_0x1ad492['recordingURL']='';}headers[_0x6d40('0x4f')]=getAuth(_0x26c172);return getUser(_0x26c172,_0x4f73a5['email'])[_0x6d40('0x24')](function(_0x4288d2){_0x178046=_0x4288d2;logger['info']('The\x20User\x20ID\x20is:',_0x178046['id']);return getEndUser(_0x26c172,_0x1ad492[_0x6d40('0x50')],_0x1ad492[_0x6d40('0x51')]);})[_0x6d40('0x24')](function(_0x30181b){_0x1f1841=_0x30181b;logger[_0x6d40('0xe')](_0x6d40('0x52'),_0x1f1841['id']);return getTicket(_0x26c172,_0x178046,_0x1f1841,_0x3387c1,_0x1ad492);})[_0x6d40('0x24')](function(_0x1b6c49){if(_0x1b6c49){logger[_0x6d40('0xe')](_0x6d40('0x53'));logger[_0x6d40('0xe')](_0x6d40('0x54'),_0x1b6c49['id']);switch(_0x26c172[_0x6d40('0x2f')]){case'integrationTab':logger[_0x6d40('0xe')](_0x6d40('0x4c'),_0x6d40('0x55'));emit(util['format'](_0x6d40('0x56'),_0x4f73a5[_0x6d40('0x3b')]),'trigger:desk:display',{'recordId':_0x1b6c49['id']});break;case _0x6d40('0x57'):logger[_0x6d40('0xe')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0x6d40('0x56'),_0x4f73a5[_0x6d40('0x3b')]),'trigger:browser:url',{'uri':util[_0x6d40('0xf')](_0x6d40('0x58'),_0x1b6c49['id'])});break;default:logger['error'](_0x6d40('0x4c'),'Desk\x20account\x20type\x20not\x20recognized');}}})['catch'](function(_0xc2bef8){console[_0x6d40('0x59')](_0xc2bef8);logger['error'](_0x6d40('0x4c'),JSON[_0x6d40('0x5a')](_0xc2bef8));});};exports[_0x6d40('0x5b')]=function(_0x45f525,_0x8a5f01,_0x5353a5,_0x2dc1ea,_0x1c17a7,_0x2df7fd,_0x3333f1){var _0x41d46d,_0x5d8b06;_0x2df7fd['remoteUri']=intUtil['stripTrailingSlash'](_0x2df7fd[_0x6d40('0x15')]);_0x2df7fd['serverUrl']=intUtil[_0x6d40('0x49')](_0x2df7fd['serverUrl']);if(_0x3333f1&&_0x3333f1[_0x6d40('0x5c')]&&_0x3333f1[_0x6d40('0x5c')]!==_0x6d40('0x5d')){logger[_0x6d40('0xe')](_0x6d40('0x5e'),'Recording\x20is\x20enabled!');_0x8a5f01['recordingURL']=util['format'](_0x6d40('0x5f'),_0x2df7fd[_0x6d40('0x4a')],_0x8a5f01['uniqueid'],md5(_0x8a5f01['uniqueid']));}headers[_0x6d40('0x4f')]=getAuth(_0x2df7fd);return getUser(_0x2df7fd,_0x2dc1ea['email'])['then'](function(_0x3a853c){_0x41d46d=_0x3a853c;logger[_0x6d40('0xe')](_0x6d40('0x60'),_0x41d46d['id']);return getEndUser(_0x2df7fd,_0x8a5f01[_0x6d40('0x61')],_0x8a5f01['destcalleridnum']);})[_0x6d40('0x24')](function(_0x21104f){_0x5d8b06=_0x21104f;logger[_0x6d40('0xe')]('The\x20Enduser\x20ID\x20is:',_0x5d8b06['id']);return getTicket(_0x2df7fd,_0x41d46d,_0x5d8b06,_0x5353a5,_0x8a5f01);})['then'](function(_0x2146f9){if(_0x2146f9){logger[_0x6d40('0xe')](_0x6d40('0x53'));logger['info'](_0x6d40('0x54'),_0x2146f9['id']);switch(_0x2df7fd[_0x6d40('0x2f')]){case _0x6d40('0x62'):logger[_0x6d40('0xe')](_0x6d40('0x4c'),_0x6d40('0x55'));emit(util['format'](_0x6d40('0x56'),_0x2dc1ea[_0x6d40('0x3b')]),_0x6d40('0x63'),{'recordId':_0x2146f9['id']});break;case'newTab':logger[_0x6d40('0xe')]('[QUEUE]',_0x6d40('0x64'));emit(util['format'](_0x6d40('0x56'),_0x2dc1ea['name']),_0x6d40('0x65'),{'uri':util[_0x6d40('0xf')](_0x6d40('0x66'),_0x2df7fd[_0x6d40('0x15')],_0x2146f9['id'])});break;default:logger['error'](_0x6d40('0x5e'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0x6d40('0x67')](function(_0x3d0568){logger[_0x6d40('0x59')]('[OUTBOUND]',JSON[_0x6d40('0x5a')](_0x3d0568));});};exports[_0x6d40('0x68')]=function(_0x70994b,_0x313804,_0x5a2aea,_0x470131,_0x597c8e,_0x519443){var _0x202618,_0x17db3c;_0x519443['remoteUri']=intUtil[_0x6d40('0x49')](_0x519443[_0x6d40('0x15')]);_0x519443['serverUrl']=intUtil[_0x6d40('0x49')](_0x519443['serverUrl']);if(_0x597c8e&&_0x597c8e[_0x6d40('0x4b')]){logger[_0x6d40('0xe')]('['+_0x313804['lastevent'][_0x6d40('0x69')]()+']','Recording\x20is\x20enabled!');_0x313804[_0x6d40('0x4e')]=util[_0x6d40('0xf')](_0x6d40('0x5f'),_0x519443['serverUrl'],_0x313804[_0x6d40('0x6a')],md5(_0x313804[_0x6d40('0x6a')]));}else{_0x313804[_0x6d40('0x4e')]='';}headers[_0x6d40('0x4f')]=getAuth(_0x519443);return getUser(_0x519443)[_0x6d40('0x24')](function(_0x719100){_0x202618=_0x719100;logger[_0x6d40('0xe')](_0x6d40('0x60'),_0x202618['id']);return getEndUser(_0x519443,_0x313804[_0x6d40('0x50')],_0x313804[_0x6d40('0x51')]);})['then'](function(_0x5c5f8b){_0x17db3c=_0x5c5f8b;logger[_0x6d40('0xe')](_0x6d40('0x52'),_0x17db3c['id']);return getTicket(_0x519443,_0x202618,_0x17db3c,_0x5a2aea,_0x313804);})[_0x6d40('0x24')](function(_0x4480ab){if(_0x4480ab){logger[_0x6d40('0xe')]('Ticket\x20created!');logger[_0x6d40('0xe')](_0x6d40('0x54'),_0x4480ab['id']);}})['catch'](function(_0x40605f){logger[_0x6d40('0x59')]('['+_0x313804[_0x6d40('0x6b')][_0x6d40('0x69')]()+']',JSON[_0x6d40('0x5a')](_0x40605f));});};