8800d50ea6607522e77de151b14fd8eb2f3e799f
[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 _0xe561=['monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','catch','error','recordingFormat','none','[OUTBOUND]','recordingURL','destcalleridnum','The\x20Ticket\x20ID\x20is:','%s/helpdesk/tickets/%d','unmanaged','lastevent','toUpperCase','lodash','md5','util','./util','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','application/json','emit','info','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','<br>','Tags','Fields','custom_fields','mapValues','keyBy','%s/api/v2/tickets','POST','Ticket\x20created!','%s/api/v2/agents','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','remoteUri','then','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/contacts','length','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','[HTTP]','stringify','includes','picklist','type','nameField','toLowerCase','content','string','idField','customField','push','variable','variableName','Variable','name','queue','serverUrl','stripTrailingSlash'];(function(_0x2842ed,_0x23ba81){var _0x1625bd=function(_0x29acd1){while(--_0x29acd1){_0x2842ed['push'](_0x2842ed['shift']());}};_0x1625bd(++_0x23ba81);}(_0xe561,0x177));var _0x1e56=function(_0x27378b,_0x1a7162){_0x27378b=_0x27378b-0x0;var _0x4b637b=_0xe561[_0x27378b];return _0x4b637b;};'use strict';var _=require(_0x1e56('0x0'));var rp=require('request-promise');var md5=require(_0x1e56('0x1'));var util=require(_0x1e56('0x2'));var Redis=require('ioredis');var intUtil=require(_0x1e56('0x3'));var config=require('../../../../config/environment');var logger=require(_0x1e56('0x4'))('freshdesk');config[_0x1e56('0x5')]=_[_0x1e56('0x6')](config['redis'],{'host':_0x1e56('0x7'),'port':0x18eb});var io=require(_0x1e56('0x8'))(new Redis(config[_0x1e56('0x5')]));var headers={'Content-Type':_0x1e56('0x9'),'Accept':_0x1e56('0x9')};function emit(_0x17c9c5,_0x2af5f0,_0x581d69){io['to'](_0x17c9c5)[_0x1e56('0xa')](_0x2af5f0,_0x581d69);}function getTicket(_0x9d4266,_0x46d237,_0x18bde9,_0x129f34,_0x5ecb04){logger[_0x1e56('0xb')]('Creating\x20new\x20ticket...');var _0x5ea5eb=_['merge']({'responder_id':_0x46d237['id'],'requester_id':_0x18bde9['id'],'name':util[_0x1e56('0xc')](_0x1e56('0xd'),_0x5ecb04[_0x1e56('0xe')]),'phone':_0x5ecb04[_0x1e56('0xf')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x1e56('0x10')](_0x129f34[_0x1e56('0x11')],_0x5ecb04,'\x20'),'description':intUtil[_0x1e56('0x10')](_0x129f34['Descriptions'],_0x5ecb04,_0x1e56('0x12')),'tags':getTags(_0x129f34[_0x1e56('0x13')],'name')},getCustomFields(_0x129f34[_0x1e56('0x14')],_0x5ecb04));_0x5ea5eb[_0x1e56('0x15')]=_[_0x1e56('0x16')](_[_0x1e56('0x17')](_0x5ea5eb[_0x1e56('0x15')],'id'),'value');return request({'uri':util[_0x1e56('0xc')](_0x1e56('0x18'),_0x9d4266['remoteUri']),'method':_0x1e56('0x19'),'body':_0x5ea5eb})['then'](function(_0x2f6ce4){logger[_0x1e56('0xb')](_0x1e56('0x1a'));return _0x2f6ce4;});}function getUser(_0x2d3df9,_0x46791e){if(intUtil['validateEmail'](_0x46791e)){return request({'uri':util[_0x1e56('0xc')](_0x1e56('0x1b'),_0x2d3df9['remoteUri']),'qs':{'email':_0x46791e}})['then'](function(_0x374e16){if(_0x374e16['length']){logger[_0x1e56('0xb')](_0x1e56('0x1c'));return _[_0x1e56('0x1d')](_0x374e16,function(_0x3acc0e){return _0x3acc0e[_0x1e56('0x1e')][_0x1e56('0x1f')]===_0x46791e;});}else{logger['info'](_0x1e56('0x20'));return request({'uri':util['format'](_0x1e56('0x21'),_0x2d3df9[_0x1e56('0x22')])})[_0x1e56('0x23')](function(_0x51672d){logger[_0x1e56('0xb')](_0x1e56('0x24'));return _0x51672d;});}});}else{logger['info'](_0x1e56('0x25'));return request({'uri':util['format'](_0x1e56('0x21'),_0x2d3df9[_0x1e56('0x22')])})[_0x1e56('0x23')](function(_0x3ccaf4){logger[_0x1e56('0xb')](_0x1e56('0x24'));return _0x3ccaf4;});}}function getEndUser(_0x11a16d,_0x18a9d4,_0x37c77b){logger[_0x1e56('0xb')]('Searching\x20enduser\x20with\x20phone',_0x37c77b);return request({'uri':util[_0x1e56('0xc')](_0x1e56('0x26'),_0x11a16d[_0x1e56('0x22')]),'qs':{'phone':_0x37c77b}})[_0x1e56('0x23')](function(_0x535aeb){if(_0x535aeb[_0x1e56('0x27')]){logger['info']('Enduser\x20found!');return _[_0x1e56('0x1d')](_0x535aeb,{'phone':_0x37c77b});}else{logger[_0x1e56('0xb')](_0x1e56('0x28'));return request({'uri':util[_0x1e56('0xc')]('%s/api/v2/contacts',_0x11a16d[_0x1e56('0x22')]),'method':_0x1e56('0x19'),'body':{'name':_0x18a9d4,'phone':_0x37c77b}})[_0x1e56('0x23')](function(_0x1de3b0){logger[_0x1e56('0xb')](_0x1e56('0x29'));return _0x1de3b0;});}});}function getAuth(_0x138308){return util[_0x1e56('0xc')](_0x1e56('0x2a'),new Buffer(_0x138308[_0x1e56('0x2b')]+':X')[_0x1e56('0x2c')](_0x1e56('0x2d')));}function request(_0x3eea17){logger['debug'](_0x1e56('0x2e'),JSON[_0x1e56('0x2f')](_0x3eea17));return rp(_[_0x1e56('0x6')](_0x3eea17,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x3c507a,_0x32c20c){var _0x4d0402=[];if(_0x3c507a&&_0x3c507a[_0x1e56('0x27')]>0x0){_0x4d0402=_['map'](_0x3c507a,_0x32c20c);}return _0x4d0402;}function getCustomFields(_0x53e3a7,_0x1958fc){var _0x23e6c1=[];var _0x40bbf9={'custom_fields':[]};if(_0x53e3a7[_0x1e56('0x27')]>0x0){_['forEach'](_0x53e3a7,function(_0x794b7){if(_[_0x1e56('0x30')](['string',_0x1e56('0x31')],_0x794b7[_0x1e56('0x32')])&&_0x794b7[_0x1e56('0x33')]&&!_0x794b7['customField']){_0x40bbf9[_0x794b7['nameField'][_0x1e56('0x34')]()]=_0x794b7[_0x1e56('0x35')]['toString']();}else if(_[_0x1e56('0x30')]([_0x1e56('0x36'),_0x1e56('0x31')],_0x794b7['type'])&&_0x794b7[_0x1e56('0x37')]&&_0x794b7[_0x1e56('0x38')]){_0x40bbf9[_0x1e56('0x15')][_0x1e56('0x39')]({'id':_0x794b7[_0x1e56('0x37')],'value':_0x794b7[_0x1e56('0x35')][_0x1e56('0x2c')]()});}else if(_0x794b7['type']===_0x1e56('0x3a')&&_0x794b7[_0x1e56('0x3b')]&&_0x794b7[_0x1e56('0x37')]&&_0x794b7['customField']){_0x1958fc[_0x794b7[_0x1e56('0x3b')]]&&_0x40bbf9[_0x1e56('0x15')]['push']({'id':_0x794b7['idField'],'value':_0x1958fc[_0x794b7[_0x1e56('0x3b')]][_0x1e56('0x2c')]()});}else if(_0x794b7[_0x1e56('0x32')]==='customVariable'&&_0x794b7[_0x1e56('0x3c')]&&_0x794b7['Variable'][_0x1e56('0x3d')]&&_0x794b7[_0x1e56('0x37')]&&_0x794b7[_0x1e56('0x38')]){_0x1958fc[_0x794b7[_0x1e56('0x3c')][_0x1e56('0x3d')][_0x1e56('0x34')]()]&&_0x40bbf9[_0x1e56('0x15')]['push']({'id':_0x794b7[_0x1e56('0x37')],'value':_0x1958fc[_0x794b7['Variable'][_0x1e56('0x3d')][_0x1e56('0x34')]()][_0x1e56('0x2c')]()});}});}return _0x40bbf9;}exports[_0x1e56('0x3e')]=function(_0x8714a6,_0x535a2c,_0x105421,_0x40deba,_0x3d29cf,_0x20d61c){var _0x4a2894,_0x37c526;_0x20d61c[_0x1e56('0x22')]=intUtil['stripTrailingSlash'](_0x20d61c['remoteUri']);_0x20d61c[_0x1e56('0x3f')]=intUtil[_0x1e56('0x40')](_0x20d61c['serverUrl']);if(_0x3d29cf&&_0x3d29cf[_0x1e56('0x41')]){logger[_0x1e56('0xb')](_0x1e56('0x42'),_0x1e56('0x43'));_0x535a2c['recordingURL']=util['format'](_0x1e56('0x44'),_0x20d61c[_0x1e56('0x3f')],_0x535a2c[_0x1e56('0x45')],md5(_0x535a2c[_0x1e56('0x45')]));}else{_0x535a2c['recordingURL']='';}headers[_0x1e56('0x46')]=getAuth(_0x20d61c);return getUser(_0x20d61c,_0x40deba[_0x1e56('0x1f')])[_0x1e56('0x23')](function(_0x4d256f){_0x4a2894=_0x4d256f;logger[_0x1e56('0xb')](_0x1e56('0x47'),_0x4a2894['id']);return getEndUser(_0x20d61c,_0x535a2c[_0x1e56('0xe')],_0x535a2c[_0x1e56('0xf')]);})[_0x1e56('0x23')](function(_0x7d9405){_0x37c526=_0x7d9405;logger[_0x1e56('0xb')](_0x1e56('0x48'),_0x37c526['id']);return getTicket(_0x20d61c,_0x4a2894,_0x37c526,_0x105421,_0x535a2c);})[_0x1e56('0x23')](function(_0x473e8d){if(_0x473e8d&&_0x473e8d['id']){logger[_0x1e56('0xb')]('Ticket\x20created!');logger['info']('The\x20Ticket\x20ID\x20is:',_0x473e8d['id']);logger[_0x1e56('0xb')](_0x1e56('0x42'),_0x1e56('0x49'));emit(util[_0x1e56('0xc')](_0x1e56('0x4a'),_0x40deba['name']),_0x1e56('0x4b'),{'uri':util[_0x1e56('0xc')]('%s/helpdesk/tickets/%d',_0x20d61c[_0x1e56('0x22')],_0x473e8d['id'])});}})[_0x1e56('0x4c')](function(_0x5a24cc){logger[_0x1e56('0x4d')](_0x1e56('0x42'),JSON[_0x1e56('0x2f')](_0x5a24cc));});};exports['outbound']=function(_0x432d4a,_0x5db6d3,_0x47b168,_0x1d64d2,_0x120d4b,_0x612d82,_0x4f2f6c){var _0x357114,_0xc563dc;_0x612d82[_0x1e56('0x22')]=intUtil[_0x1e56('0x40')](_0x612d82[_0x1e56('0x22')]);_0x612d82[_0x1e56('0x3f')]=intUtil[_0x1e56('0x40')](_0x612d82['serverUrl']);if(_0x4f2f6c&&_0x4f2f6c[_0x1e56('0x4e')]&&_0x4f2f6c['recordingFormat']!==_0x1e56('0x4f')){logger[_0x1e56('0xb')](_0x1e56('0x50'),_0x1e56('0x43'));_0x5db6d3[_0x1e56('0x51')]=util[_0x1e56('0xc')](_0x1e56('0x44'),_0x612d82[_0x1e56('0x3f')],_0x5db6d3[_0x1e56('0x45')],md5(_0x5db6d3[_0x1e56('0x45')]));}headers[_0x1e56('0x46')]=getAuth(_0x612d82);return getUser(_0x612d82,_0x1d64d2[_0x1e56('0x1f')])[_0x1e56('0x23')](function(_0x358556){_0x357114=_0x358556;logger[_0x1e56('0xb')]('The\x20User\x20ID\x20is:',_0x357114['id']);return getEndUser(_0x612d82,_0x5db6d3['destcalleridname'],_0x5db6d3[_0x1e56('0x52')]);})[_0x1e56('0x23')](function(_0x256fc8){_0xc563dc=_0x256fc8;logger['info']('The\x20Enduser\x20ID\x20is:',_0xc563dc['id']);return getTicket(_0x612d82,_0x357114,_0xc563dc,_0x47b168,_0x5db6d3);})[_0x1e56('0x23')](function(_0x9d955b){if(_0x9d955b&&_0x9d955b['id']){logger[_0x1e56('0xb')](_0x1e56('0x1a'));logger[_0x1e56('0xb')](_0x1e56('0x53'),_0x9d955b['id']);logger[_0x1e56('0xb')]('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x1e56('0xc')](_0x1e56('0x4a'),_0x1d64d2['name']),'trigger:browser:url',{'uri':util[_0x1e56('0xc')](_0x1e56('0x54'),_0x612d82[_0x1e56('0x22')],_0x9d955b['id'])});}})[_0x1e56('0x4c')](function(_0x20cee2){logger['error'](_0x1e56('0x50'),JSON[_0x1e56('0x2f')](_0x20cee2));});};exports[_0x1e56('0x55')]=function(_0x19632b,_0x549951,_0x55bf49,_0x1c5b2d,_0x2d92a1,_0x14cc6b){var _0x58d671,_0x3a20bb;_0x14cc6b[_0x1e56('0x22')]=intUtil[_0x1e56('0x40')](_0x14cc6b['remoteUri']);_0x14cc6b['serverUrl']=intUtil[_0x1e56('0x40')](_0x14cc6b['serverUrl']);if(_0x2d92a1&&_0x2d92a1[_0x1e56('0x41')]){logger[_0x1e56('0xb')]('['+_0x549951[_0x1e56('0x56')][_0x1e56('0x57')]()+']',_0x1e56('0x43'));_0x549951[_0x1e56('0x51')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x14cc6b[_0x1e56('0x3f')],_0x549951[_0x1e56('0x45')],md5(_0x549951['uniqueid']));}else{_0x549951[_0x1e56('0x51')]='';}headers['Authorization']=getAuth(_0x14cc6b);return getUser(_0x14cc6b,'')[_0x1e56('0x23')](function(_0x26b193){_0x58d671=_0x26b193;logger['info']('The\x20User\x20ID\x20is:',_0x58d671['id']);return getEndUser(_0x14cc6b,_0x549951[_0x1e56('0xe')],_0x549951[_0x1e56('0xf')]);})['then'](function(_0x49ee33){_0x3a20bb=_0x49ee33;logger['info'](_0x1e56('0x48'),_0x3a20bb['id']);return getTicket(_0x14cc6b,_0x58d671,_0x3a20bb,_0x55bf49,_0x549951);})[_0x1e56('0x23')](function(_0x1910e1){if(_0x1910e1){logger['info'](_0x1e56('0x1a'));logger[_0x1e56('0xb')]('The\x20Ticket\x20ID\x20is:',_0x1910e1['id']);}})[_0x1e56('0x4c')](function(_0x8ba7cc){logger[_0x1e56('0x4d')]('['+_0x549951[_0x1e56('0x56')]['toUpperCase']()+']',JSON[_0x1e56('0x2f')](_0x8ba7cc));});};