00024fbd351a128ebb40c0429549f76610382288
[motion2.git] / server / services / ami / trigger / integration / freshdesk.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 _0x1784=['%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','Enduser\x20created.','Basic\x20%s','apiKey','debug','[HTTP]','GET','map','forEach','picklist','type','nameField','toLowerCase','content','toString','string','idField','customField','push','variable','variableName','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','stringify','outbound','recordingFormat','none','[OUTBOUND]','email','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','unmanaged','error','toUpperCase','lodash','request-promise','util','../../../../config/environment','defaults','redis','localhost','socket.io-emitter','application/json','emit','info','Caller\x20-\x20%s','calleridnum','Subjects','<br>','Tags','name','custom_fields','mapValues','value','format','%s/api/v2/tickets','Ticket\x20created!','validateEmail','%s/api/v2/agents','remoteUri','length','find','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','then','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Searching\x20enduser\x20with\x20phone'];(function(_0x34e0d2,_0x59c6a4){var _0x40fd0c=function(_0x30e24d){while(--_0x30e24d){_0x34e0d2['push'](_0x34e0d2['shift']());}};_0x40fd0c(++_0x59c6a4);}(_0x1784,0x142));var _0x4178=function(_0x5e3115,_0x540600){_0x5e3115=_0x5e3115-0x0;var _0x5a1dc6=_0x1784[_0x5e3115];return _0x5a1dc6;};'use strict';var _=require(_0x4178('0x0'));var rp=require(_0x4178('0x1'));var md5=require('md5');var util=require(_0x4178('0x2'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0x4178('0x3'));var logger=require('../../../../config/logger')('freshdesk');config['redis']=_[_0x4178('0x4')](config[_0x4178('0x5')],{'host':_0x4178('0x6'),'port':0x18eb});var io=require(_0x4178('0x7'))(new Redis(config[_0x4178('0x5')]));var headers={'Content-Type':_0x4178('0x8'),'Accept':'application/json'};function emit(_0xd0ab81,_0x3050d8,_0x37dc2e){io['to'](_0xd0ab81)[_0x4178('0x9')](_0x3050d8,_0x37dc2e);}function getTicket(_0xcb1f0d,_0x3d1fb4,_0x29680b,_0x31ad56,_0x367724){logger[_0x4178('0xa')]('Creating\x20new\x20ticket...');var _0xaffc04=_['merge']({'responder_id':_0x3d1fb4['id'],'requester_id':_0x29680b['id'],'name':util['format'](_0x4178('0xb'),_0x367724['calleridname']),'phone':_0x367724[_0x4178('0xc')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x31ad56[_0x4178('0xd')],_0x367724,'\x20'),'description':intUtil['getString'](_0x31ad56['Descriptions'],_0x367724,_0x4178('0xe')),'tags':getTags(_0x31ad56[_0x4178('0xf')],_0x4178('0x10'))},getCustomFields(_0x31ad56['Fields'],_0x367724));_0xaffc04[_0x4178('0x11')]=_[_0x4178('0x12')](_['keyBy'](_0xaffc04[_0x4178('0x11')],'id'),_0x4178('0x13'));return request({'uri':util[_0x4178('0x14')](_0x4178('0x15'),_0xcb1f0d['remoteUri']),'method':'POST','body':_0xaffc04})['then'](function(_0x1a3c10){logger['info'](_0x4178('0x16'));return _0x1a3c10;});}function getUser(_0x24b79e,_0x311c4d){if(intUtil[_0x4178('0x17')](_0x311c4d)){return request({'uri':util[_0x4178('0x14')](_0x4178('0x18'),_0x24b79e[_0x4178('0x19')]),'qs':{'email':_0x311c4d}})['then'](function(_0x3b479d){if(_0x3b479d[_0x4178('0x1a')]){logger[_0x4178('0xa')]('Agent\x20found!');return _[_0x4178('0x1b')](_0x3b479d,function(_0x2cd5c3){return _0x2cd5c3['contact']['email']===_0x311c4d;});}else{logger[_0x4178('0xa')](_0x4178('0x1c'));return request({'uri':util[_0x4178('0x14')]('%s/api/v2/agents/me',_0x24b79e[_0x4178('0x19')])})[_0x4178('0x1d')](function(_0x27a623){logger[_0x4178('0xa')](_0x4178('0x1e'));return _0x27a623;});}});}else{logger[_0x4178('0xa')](_0x4178('0x1f'));return request({'uri':util[_0x4178('0x14')](_0x4178('0x20'),_0x24b79e[_0x4178('0x19')])})[_0x4178('0x1d')](function(_0x54fda6){logger[_0x4178('0xa')]('Admin\x20account\x20selected.');return _0x54fda6;});}}function getEndUser(_0xc872ab,_0x586183,_0x4c447f){logger[_0x4178('0xa')](_0x4178('0x21'),_0x4c447f);return request({'uri':util[_0x4178('0x14')](_0x4178('0x22'),_0xc872ab[_0x4178('0x19')]),'qs':{'phone':_0x4c447f}})[_0x4178('0x1d')](function(_0x51978f){if(_0x51978f['length']){logger[_0x4178('0xa')](_0x4178('0x23'));return _[_0x4178('0x1b')](_0x51978f,{'phone':_0x4c447f});}else{logger[_0x4178('0xa')](_0x4178('0x24'));return request({'uri':util[_0x4178('0x14')](_0x4178('0x22'),_0xc872ab[_0x4178('0x19')]),'method':_0x4178('0x25'),'body':{'name':_0x586183,'phone':_0x4c447f}})[_0x4178('0x1d')](function(_0x340f1c){logger['info'](_0x4178('0x26'));return _0x340f1c;});}});}function getAuth(_0x3347fd){return util['format'](_0x4178('0x27'),new Buffer(_0x3347fd[_0x4178('0x28')]+':X')['toString']('base64'));}function request(_0x2e19d6){logger[_0x4178('0x29')](_0x4178('0x2a'),JSON['stringify'](_0x2e19d6));return rp(_['defaults'](_0x2e19d6,{'method':_0x4178('0x2b'),'headers':headers,'json':!![]}));}function getTags(_0xd9fec,_0x5113dc){var _0x3fb085=[];if(_0xd9fec&&_0xd9fec[_0x4178('0x1a')]>0x0){_0x3fb085=_[_0x4178('0x2c')](_0xd9fec,_0x5113dc);}return _0x3fb085;}function getCustomFields(_0x5ab134,_0x33e6ca){var _0x48071c=[];var _0x55bb47={'custom_fields':[]};if(_0x5ab134[_0x4178('0x1a')]>0x0){_[_0x4178('0x2d')](_0x5ab134,function(_0x137b46){if(_['includes'](['string',_0x4178('0x2e')],_0x137b46[_0x4178('0x2f')])&&_0x137b46[_0x4178('0x30')]&&!_0x137b46['customField']){_0x55bb47[_0x137b46[_0x4178('0x30')][_0x4178('0x31')]()]=_0x137b46[_0x4178('0x32')][_0x4178('0x33')]();}else if(_['includes']([_0x4178('0x34'),_0x4178('0x2e')],_0x137b46[_0x4178('0x2f')])&&_0x137b46[_0x4178('0x35')]&&_0x137b46[_0x4178('0x36')]){_0x55bb47[_0x4178('0x11')][_0x4178('0x37')]({'id':_0x137b46[_0x4178('0x35')],'value':_0x137b46[_0x4178('0x32')]['toString']()});}else if(_0x137b46[_0x4178('0x2f')]===_0x4178('0x38')&&_0x137b46[_0x4178('0x39')]&&_0x137b46[_0x4178('0x35')]&&_0x137b46[_0x4178('0x36')]){_0x33e6ca[_0x137b46[_0x4178('0x39')]]&&_0x55bb47[_0x4178('0x11')][_0x4178('0x37')]({'id':_0x137b46[_0x4178('0x35')],'value':_0x33e6ca[_0x137b46[_0x4178('0x39')]][_0x4178('0x33')]()});}else if(_0x137b46[_0x4178('0x2f')]==='customVariable'&&_0x137b46['Variable']&&_0x137b46['Variable'][_0x4178('0x10')]&&_0x137b46[_0x4178('0x35')]&&_0x137b46[_0x4178('0x36')]){_0x33e6ca[_0x137b46[_0x4178('0x3a')][_0x4178('0x10')][_0x4178('0x31')]()]&&_0x55bb47[_0x4178('0x11')]['push']({'id':_0x137b46[_0x4178('0x35')],'value':_0x33e6ca[_0x137b46[_0x4178('0x3a')][_0x4178('0x10')][_0x4178('0x31')]()][_0x4178('0x33')]()});}});}return _0x55bb47;}exports[_0x4178('0x3b')]=function(_0x2ff2a5,_0x1f06b7,_0x92ff11,_0x3caef6,_0xbdaced,_0x4cf180){var _0x2d9899,_0x42e6d9;_0x4cf180[_0x4178('0x19')]=intUtil[_0x4178('0x3c')](_0x4cf180[_0x4178('0x19')]);_0x4cf180['serverUrl']=intUtil[_0x4178('0x3c')](_0x4cf180[_0x4178('0x3d')]);if(_0xbdaced&&_0xbdaced[_0x4178('0x3e')]){logger[_0x4178('0xa')](_0x4178('0x3f'),_0x4178('0x40'));_0x1f06b7[_0x4178('0x41')]=util[_0x4178('0x14')](_0x4178('0x42'),_0x4cf180[_0x4178('0x3d')],_0x1f06b7[_0x4178('0x43')],md5(_0x1f06b7[_0x4178('0x43')]));}else{_0x1f06b7[_0x4178('0x41')]='';}headers[_0x4178('0x44')]=getAuth(_0x4cf180);return getUser(_0x4cf180,_0x3caef6['email'])[_0x4178('0x1d')](function(_0x55b2e0){_0x2d9899=_0x55b2e0;logger['info']('The\x20User\x20ID\x20is:',_0x2d9899['id']);return getEndUser(_0x4cf180,_0x1f06b7[_0x4178('0x45')],_0x1f06b7[_0x4178('0xc')]);})['then'](function(_0x542d08){_0x42e6d9=_0x542d08;logger[_0x4178('0xa')](_0x4178('0x46'),_0x42e6d9['id']);return getTicket(_0x4cf180,_0x2d9899,_0x42e6d9,_0x92ff11,_0x1f06b7);})[_0x4178('0x1d')](function(_0x39270a){if(_0x39270a&&_0x39270a['id']){logger[_0x4178('0xa')](_0x4178('0x16'));logger[_0x4178('0xa')](_0x4178('0x47'),_0x39270a['id']);logger[_0x4178('0xa')](_0x4178('0x3f'),_0x4178('0x48'));emit(util['format'](_0x4178('0x49'),_0x3caef6['name']),_0x4178('0x4a'),{'uri':util['format'](_0x4178('0x4b'),_0x4cf180['remoteUri'],_0x39270a['id'])});}})[_0x4178('0x4c')](function(_0x50f7cc){logger['error'](_0x4178('0x3f'),JSON[_0x4178('0x4d')](_0x50f7cc));});};exports[_0x4178('0x4e')]=function(_0x330f90,_0x37e166,_0x40bc39,_0x5242cf,_0x574144,_0x34a5b3,_0x16643f){var _0x3b09dd,_0x5a72a2;_0x34a5b3[_0x4178('0x19')]=intUtil['stripTrailingSlash'](_0x34a5b3[_0x4178('0x19')]);_0x34a5b3[_0x4178('0x3d')]=intUtil['stripTrailingSlash'](_0x34a5b3[_0x4178('0x3d')]);if(_0x16643f&&_0x16643f[_0x4178('0x4f')]&&_0x16643f[_0x4178('0x4f')]!==_0x4178('0x50')){logger['info'](_0x4178('0x51'),_0x4178('0x40'));_0x37e166[_0x4178('0x41')]=util[_0x4178('0x14')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x34a5b3[_0x4178('0x3d')],_0x37e166[_0x4178('0x43')],md5(_0x37e166[_0x4178('0x43')]));}headers[_0x4178('0x44')]=getAuth(_0x34a5b3);return getUser(_0x34a5b3,_0x5242cf[_0x4178('0x52')])[_0x4178('0x1d')](function(_0xc99f3a){_0x3b09dd=_0xc99f3a;logger[_0x4178('0xa')](_0x4178('0x53'),_0x3b09dd['id']);return getEndUser(_0x34a5b3,_0x37e166[_0x4178('0x54')],_0x37e166[_0x4178('0x55')]);})['then'](function(_0x54854a){_0x5a72a2=_0x54854a;logger[_0x4178('0xa')](_0x4178('0x46'),_0x5a72a2['id']);return getTicket(_0x34a5b3,_0x3b09dd,_0x5a72a2,_0x40bc39,_0x37e166);})[_0x4178('0x1d')](function(_0x586ea4){if(_0x586ea4&&_0x586ea4['id']){logger[_0x4178('0xa')](_0x4178('0x16'));logger[_0x4178('0xa')]('The\x20Ticket\x20ID\x20is:',_0x586ea4['id']);logger['info'](_0x4178('0x51'),_0x4178('0x48'));emit(util[_0x4178('0x14')](_0x4178('0x49'),_0x5242cf[_0x4178('0x10')]),_0x4178('0x4a'),{'uri':util[_0x4178('0x14')]('%s/helpdesk/tickets/%d',_0x34a5b3[_0x4178('0x19')],_0x586ea4['id'])});}})['catch'](function(_0x5430ec){logger['error'](_0x4178('0x51'),JSON[_0x4178('0x4d')](_0x5430ec));});};exports[_0x4178('0x56')]=function(_0x5333dd,_0xd90325,_0x5b5009,_0x1c05e9,_0xd43cc2,_0x1870b5){var _0x2dcce7,_0x21b545;_0x1870b5[_0x4178('0x19')]=intUtil[_0x4178('0x3c')](_0x1870b5[_0x4178('0x19')]);_0x1870b5[_0x4178('0x3d')]=intUtil[_0x4178('0x3c')](_0x1870b5['serverUrl']);if(_0xd43cc2&&_0xd43cc2[_0x4178('0x3e')]){logger[_0x4178('0xa')]('['+_0xd90325['lastevent']['toUpperCase']()+']','Recording\x20is\x20enabled!');_0xd90325['recordingURL']=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1870b5[_0x4178('0x3d')],_0xd90325['uniqueid'],md5(_0xd90325[_0x4178('0x43')]));}else{_0xd90325[_0x4178('0x41')]='';}headers[_0x4178('0x44')]=getAuth(_0x1870b5);return getUser(_0x1870b5,'')[_0x4178('0x1d')](function(_0x5af1ab){_0x2dcce7=_0x5af1ab;logger['info'](_0x4178('0x53'),_0x2dcce7['id']);return getEndUser(_0x1870b5,_0xd90325[_0x4178('0x45')],_0xd90325[_0x4178('0xc')]);})['then'](function(_0x44408f){_0x21b545=_0x44408f;logger[_0x4178('0xa')](_0x4178('0x46'),_0x21b545['id']);return getTicket(_0x1870b5,_0x2dcce7,_0x21b545,_0x5b5009,_0xd90325);})[_0x4178('0x1d')](function(_0x13c7f6){if(_0x13c7f6){logger[_0x4178('0xa')]('Ticket\x20created!');logger[_0x4178('0xa')]('The\x20Ticket\x20ID\x20is:',_0x13c7f6['id']);}})[_0x4178('0x4c')](function(_0x533e56){logger[_0x4178('0x57')]('['+_0xd90325['lastevent'][_0x4178('0x58')]()+']',JSON[_0x4178('0x4d')](_0x533e56));});};