Built motion from commit da617fac.|2.6.6
[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 _0x9c24=['toUpperCase','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','The\x20User\x20ID\x20is:','lodash','md5','util','./util','../../../../config/environment','../../../../config/logger','freshdesk','defaults','localhost','socket.io-emitter','redis','application/json','emit','info','Creating\x20new\x20ticket...','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','Tags','custom_fields','value','format','remoteUri','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','Agent\x20found!','contact','email','%s/api/v2/agents/me','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','[HTTP]','stringify','length','map','forEach','string','nameField','toLowerCase','content','includes','picklist','type','idField','customField','variableName','push','Variable','name','queue','serverUrl','monitor_format','[QUEUE]','recordingURL','uniqueid','Authorization','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','error','unmanaged','stripTrailingSlash','lastevent'];(function(_0x2a5a16,_0x1dc1e4){var _0x10ecaa=function(_0x4d7707){while(--_0x4d7707){_0x2a5a16['push'](_0x2a5a16['shift']());}};_0x10ecaa(++_0x1dc1e4);}(_0x9c24,0x1ca));var _0x49c2=function(_0x344a3f,_0x579a22){_0x344a3f=_0x344a3f-0x0;var _0x264712=_0x9c24[_0x344a3f];return _0x264712;};'use strict';var _=require(_0x49c2('0x0'));var rp=require('request-promise');var md5=require(_0x49c2('0x1'));var util=require(_0x49c2('0x2'));var Redis=require('ioredis');var intUtil=require(_0x49c2('0x3'));var config=require(_0x49c2('0x4'));var logger=require(_0x49c2('0x5'))(_0x49c2('0x6'));config['redis']=_[_0x49c2('0x7')](config['redis'],{'host':_0x49c2('0x8'),'port':0x18eb});var io=require(_0x49c2('0x9'))(new Redis(config[_0x49c2('0xa')]));var headers={'Content-Type':_0x49c2('0xb'),'Accept':_0x49c2('0xb')};function emit(_0x4e07ad,_0x2cec8d,_0x2b2894){io['to'](_0x4e07ad)[_0x49c2('0xc')](_0x2cec8d,_0x2b2894);}function getTicket(_0x2aa191,_0x6db5a8,_0x55bd32,_0x4e0c6b,_0x23e58f){logger[_0x49c2('0xd')](_0x49c2('0xe'));var _0xdd2ed6=_['merge']({'responder_id':_0x6db5a8['id'],'requester_id':_0x55bd32['id'],'name':util['format'](_0x49c2('0xf'),_0x23e58f[_0x49c2('0x10')]),'phone':_0x23e58f[_0x49c2('0x11')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x49c2('0x12')](_0x4e0c6b[_0x49c2('0x13')],_0x23e58f,'\x20'),'description':intUtil[_0x49c2('0x12')](_0x4e0c6b[_0x49c2('0x14')],_0x23e58f,_0x49c2('0x15')),'tags':getTags(_0x4e0c6b[_0x49c2('0x16')],'name')},getCustomFields(_0x4e0c6b['Fields'],_0x23e58f));_0xdd2ed6[_0x49c2('0x17')]=_['mapValues'](_['keyBy'](_0xdd2ed6[_0x49c2('0x17')],'id'),_0x49c2('0x18'));return request({'uri':util[_0x49c2('0x19')]('%s/api/v2/tickets',_0x2aa191[_0x49c2('0x1a')]),'method':_0x49c2('0x1b'),'body':_0xdd2ed6})[_0x49c2('0x1c')](function(_0x488377){logger['info'](_0x49c2('0x1d'));return _0x488377;});}function getUser(_0x50a044,_0x42fb88){if(intUtil[_0x49c2('0x1e')](_0x42fb88)){return request({'uri':util[_0x49c2('0x19')](_0x49c2('0x1f'),_0x50a044['remoteUri']),'qs':{'email':_0x42fb88}})['then'](function(_0x359b08){if(_0x359b08['length']){logger[_0x49c2('0xd')](_0x49c2('0x20'));return _['find'](_0x359b08,function(_0x3cead5){return _0x3cead5[_0x49c2('0x21')][_0x49c2('0x22')]===_0x42fb88;});}else{logger[_0x49c2('0xd')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x49c2('0x19')](_0x49c2('0x23'),_0x50a044[_0x49c2('0x1a')])})[_0x49c2('0x1c')](function(_0x553965){logger[_0x49c2('0xd')](_0x49c2('0x24'));return _0x553965;});}});}else{logger[_0x49c2('0xd')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0x49c2('0x23'),_0x50a044[_0x49c2('0x1a')])})[_0x49c2('0x1c')](function(_0x54ab75){logger[_0x49c2('0xd')](_0x49c2('0x24'));return _0x54ab75;});}}function getEndUser(_0x3d1c0f,_0x52abff,_0x4917b5){logger[_0x49c2('0xd')](_0x49c2('0x25'),_0x4917b5);return request({'uri':util['format'](_0x49c2('0x26'),_0x3d1c0f['remoteUri']),'qs':{'phone':_0x4917b5}})[_0x49c2('0x1c')](function(_0x3ad705){if(_0x3ad705['length']){logger[_0x49c2('0xd')]('Enduser\x20found!');return _['find'](_0x3ad705,{'phone':_0x4917b5});}else{logger[_0x49c2('0xd')](_0x49c2('0x27'));return request({'uri':util[_0x49c2('0x19')](_0x49c2('0x26'),_0x3d1c0f[_0x49c2('0x1a')]),'method':_0x49c2('0x1b'),'body':{'name':_0x52abff,'phone':_0x4917b5}})[_0x49c2('0x1c')](function(_0x2a856f){logger[_0x49c2('0xd')](_0x49c2('0x28'));return _0x2a856f;});}});}function getAuth(_0x1c2e46){return util[_0x49c2('0x19')](_0x49c2('0x29'),new Buffer(_0x1c2e46[_0x49c2('0x2a')]+':X')[_0x49c2('0x2b')](_0x49c2('0x2c')));}function request(_0x55cb2f){logger['debug'](_0x49c2('0x2d'),JSON[_0x49c2('0x2e')](_0x55cb2f));return rp(_[_0x49c2('0x7')](_0x55cb2f,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x41054a,_0x3fc77b){var _0x449a77=[];if(_0x41054a&&_0x41054a[_0x49c2('0x2f')]>0x0){_0x449a77=_[_0x49c2('0x30')](_0x41054a,_0x3fc77b);}return _0x449a77;}function getCustomFields(_0x426f9b,_0x34275b){var _0x57806b=[];var _0x337a83={'custom_fields':[]};if(_0x426f9b['length']>0x0){_[_0x49c2('0x31')](_0x426f9b,function(_0x1dee17){if(_['includes']([_0x49c2('0x32'),'picklist'],_0x1dee17['type'])&&_0x1dee17[_0x49c2('0x33')]&&!_0x1dee17['customField']){_0x337a83[_0x1dee17[_0x49c2('0x33')][_0x49c2('0x34')]()]=_0x1dee17[_0x49c2('0x35')]['toString']();}else if(_[_0x49c2('0x36')]([_0x49c2('0x32'),_0x49c2('0x37')],_0x1dee17[_0x49c2('0x38')])&&_0x1dee17[_0x49c2('0x39')]&&_0x1dee17[_0x49c2('0x3a')]){_0x337a83[_0x49c2('0x17')]['push']({'id':_0x1dee17[_0x49c2('0x39')],'value':_0x1dee17['content'][_0x49c2('0x2b')]()});}else if(_0x1dee17['type']==='variable'&&_0x1dee17[_0x49c2('0x3b')]&&_0x1dee17[_0x49c2('0x39')]&&_0x1dee17[_0x49c2('0x3a')]){_0x34275b[_0x1dee17[_0x49c2('0x3b')]]&&_0x337a83[_0x49c2('0x17')][_0x49c2('0x3c')]({'id':_0x1dee17[_0x49c2('0x39')],'value':_0x34275b[_0x1dee17[_0x49c2('0x3b')]][_0x49c2('0x2b')]()});}else if(_0x1dee17[_0x49c2('0x38')]==='customVariable'&&_0x1dee17[_0x49c2('0x3d')]&&_0x1dee17[_0x49c2('0x3d')][_0x49c2('0x3e')]&&_0x1dee17[_0x49c2('0x39')]&&_0x1dee17[_0x49c2('0x3a')]){_0x34275b[_0x1dee17[_0x49c2('0x3d')]['name'][_0x49c2('0x34')]()]&&_0x337a83['custom_fields'][_0x49c2('0x3c')]({'id':_0x1dee17[_0x49c2('0x39')],'value':_0x34275b[_0x1dee17[_0x49c2('0x3d')][_0x49c2('0x3e')][_0x49c2('0x34')]()][_0x49c2('0x2b')]()});}});}return _0x337a83;}exports[_0x49c2('0x3f')]=function(_0x1af7de,_0x34a644,_0x188f71,_0x2048d8,_0x328fbd,_0x1cc112){var _0x2697f6,_0x1ed67b;_0x1cc112[_0x49c2('0x1a')]=intUtil['stripTrailingSlash'](_0x1cc112['remoteUri']);_0x1cc112[_0x49c2('0x40')]=intUtil['stripTrailingSlash'](_0x1cc112[_0x49c2('0x40')]);if(_0x328fbd&&_0x328fbd[_0x49c2('0x41')]){logger[_0x49c2('0xd')](_0x49c2('0x42'),'Recording\x20is\x20enabled!');_0x34a644[_0x49c2('0x43')]=util[_0x49c2('0x19')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1cc112['serverUrl'],_0x34a644[_0x49c2('0x44')],md5(_0x34a644[_0x49c2('0x44')]));}else{_0x34a644[_0x49c2('0x43')]='';}headers[_0x49c2('0x45')]=getAuth(_0x1cc112);return getUser(_0x1cc112,_0x2048d8[_0x49c2('0x22')])[_0x49c2('0x1c')](function(_0x33a3c4){_0x2697f6=_0x33a3c4;logger[_0x49c2('0xd')]('The\x20User\x20ID\x20is:',_0x2697f6['id']);return getEndUser(_0x1cc112,_0x34a644[_0x49c2('0x10')],_0x34a644[_0x49c2('0x11')]);})['then'](function(_0x1c01e0){_0x1ed67b=_0x1c01e0;logger[_0x49c2('0xd')]('The\x20Enduser\x20ID\x20is:',_0x1ed67b['id']);return getTicket(_0x1cc112,_0x2697f6,_0x1ed67b,_0x188f71,_0x34a644);})['then'](function(_0x166288){if(_0x166288&&_0x166288['id']){logger[_0x49c2('0xd')](_0x49c2('0x1d'));logger['info'](_0x49c2('0x46'),_0x166288['id']);logger[_0x49c2('0xd')]('[QUEUE]',_0x49c2('0x47'));emit(util[_0x49c2('0x19')](_0x49c2('0x48'),_0x2048d8['name']),_0x49c2('0x49'),{'uri':util[_0x49c2('0x19')](_0x49c2('0x4a'),_0x1cc112[_0x49c2('0x1a')],_0x166288['id'])});}})[_0x49c2('0x4b')](function(_0x3de123){logger['error'](_0x49c2('0x42'),JSON[_0x49c2('0x2e')](_0x3de123));});};exports[_0x49c2('0x4c')]=function(_0x3d346e,_0x13a3a0,_0x279549,_0x4dfca4,_0x1840b6,_0x54564b,_0x496e3a){var _0x2e5e18,_0x1249cf;_0x54564b['remoteUri']=intUtil['stripTrailingSlash'](_0x54564b[_0x49c2('0x1a')]);_0x54564b[_0x49c2('0x40')]=intUtil['stripTrailingSlash'](_0x54564b['serverUrl']);if(_0x496e3a&&_0x496e3a[_0x49c2('0x4d')]&&_0x496e3a['recordingFormat']!==_0x49c2('0x4e')){logger[_0x49c2('0xd')](_0x49c2('0x4f'),_0x49c2('0x50'));_0x13a3a0[_0x49c2('0x43')]=util[_0x49c2('0x19')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x54564b['serverUrl'],_0x13a3a0['uniqueid'],md5(_0x13a3a0[_0x49c2('0x44')]));}headers['Authorization']=getAuth(_0x54564b);return getUser(_0x54564b,_0x4dfca4[_0x49c2('0x22')])['then'](function(_0x17cdb1){_0x2e5e18=_0x17cdb1;logger['info']('The\x20User\x20ID\x20is:',_0x2e5e18['id']);return getEndUser(_0x54564b,_0x13a3a0[_0x49c2('0x51')],_0x13a3a0[_0x49c2('0x52')]);})[_0x49c2('0x1c')](function(_0x9427b2){_0x1249cf=_0x9427b2;logger[_0x49c2('0xd')](_0x49c2('0x53'),_0x1249cf['id']);return getTicket(_0x54564b,_0x2e5e18,_0x1249cf,_0x279549,_0x13a3a0);})['then'](function(_0x35558a){if(_0x35558a&&_0x35558a['id']){logger[_0x49c2('0xd')](_0x49c2('0x1d'));logger[_0x49c2('0xd')]('The\x20Ticket\x20ID\x20is:',_0x35558a['id']);logger[_0x49c2('0xd')]('[OUTBOUND]',_0x49c2('0x47'));emit(util[_0x49c2('0x19')](_0x49c2('0x48'),_0x4dfca4[_0x49c2('0x3e')]),_0x49c2('0x49'),{'uri':util[_0x49c2('0x19')](_0x49c2('0x4a'),_0x54564b['remoteUri'],_0x35558a['id'])});}})['catch'](function(_0x2ec9e6){logger[_0x49c2('0x54')](_0x49c2('0x4f'),JSON[_0x49c2('0x2e')](_0x2ec9e6));});};exports[_0x49c2('0x55')]=function(_0x11dde7,_0xcdfac,_0x2b3a31,_0x2ab712,_0x26a356,_0x32e8c4){var _0x471f8c,_0x304ca4;_0x32e8c4[_0x49c2('0x1a')]=intUtil[_0x49c2('0x56')](_0x32e8c4[_0x49c2('0x1a')]);_0x32e8c4[_0x49c2('0x40')]=intUtil['stripTrailingSlash'](_0x32e8c4[_0x49c2('0x40')]);if(_0x26a356&&_0x26a356['monitor_format']){logger['info']('['+_0xcdfac[_0x49c2('0x57')][_0x49c2('0x58')]()+']','Recording\x20is\x20enabled!');_0xcdfac[_0x49c2('0x43')]=util[_0x49c2('0x19')](_0x49c2('0x59'),_0x32e8c4[_0x49c2('0x40')],_0xcdfac[_0x49c2('0x44')],md5(_0xcdfac[_0x49c2('0x44')]));}else{_0xcdfac[_0x49c2('0x43')]='';}headers['Authorization']=getAuth(_0x32e8c4);return getUser(_0x32e8c4,'')[_0x49c2('0x1c')](function(_0x1c1dd3){_0x471f8c=_0x1c1dd3;logger[_0x49c2('0xd')](_0x49c2('0x5a'),_0x471f8c['id']);return getEndUser(_0x32e8c4,_0xcdfac[_0x49c2('0x10')],_0xcdfac['calleridnum']);})[_0x49c2('0x1c')](function(_0x12a5bf){_0x304ca4=_0x12a5bf;logger[_0x49c2('0xd')]('The\x20Enduser\x20ID\x20is:',_0x304ca4['id']);return getTicket(_0x32e8c4,_0x471f8c,_0x304ca4,_0x2b3a31,_0xcdfac);})[_0x49c2('0x1c')](function(_0x239d1c){if(_0x239d1c){logger[_0x49c2('0xd')](_0x49c2('0x1d'));logger[_0x49c2('0xd')](_0x49c2('0x46'),_0x239d1c['id']);}})[_0x49c2('0x4b')](function(_0x97d45a){logger['error']('['+_0xcdfac[_0x49c2('0x57')][_0x49c2('0x58')]()+']',JSON['stringify'](_0x97d45a));});};