8c3151b45a43eb4f6d0e5b051e4f838a9f9990c1
[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 _0xb596=['request-promise','util','ioredis','./util','../../../../config/environment','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','info','merge','calleridname','calleridnum','getString','Descriptions','<br>','Tags','name','custom_fields','mapValues','format','%s/api/v2/tickets','remoteUri','POST','%s/api/v2/agents','then','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','toString','debug','[HTTP]','stringify','GET','forEach','string','nameField','customField','toLowerCase','type','idField','push','content','variable','variableName','customVariable','Variable','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','Ticket\x20created!','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/helpdesk/tickets/%d','catch','outbound','recordingFormat','[OUTBOUND]','recordingURL','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','trigger:browser:url','error','unmanaged','toUpperCase','lastevent','lodash'];(function(_0x3299d1,_0x545733){var _0x44356e=function(_0x52fd77){while(--_0x52fd77){_0x3299d1['push'](_0x3299d1['shift']());}};_0x44356e(++_0x545733);}(_0xb596,0x10a));var _0x6b59=function(_0x30ebc5,_0x376252){_0x30ebc5=_0x30ebc5-0x0;var _0x36c661=_0xb596[_0x30ebc5];return _0x36c661;};'use strict';var _=require(_0x6b59('0x0'));var rp=require(_0x6b59('0x1'));var md5=require('md5');var util=require(_0x6b59('0x2'));var Redis=require(_0x6b59('0x3'));var intUtil=require(_0x6b59('0x4'));var config=require(_0x6b59('0x5'));var logger=require('../../../../config/logger')(_0x6b59('0x6'));config[_0x6b59('0x7')]=_[_0x6b59('0x8')](config[_0x6b59('0x7')],{'host':_0x6b59('0x9'),'port':0x18eb});var io=require(_0x6b59('0xa'))(new Redis(config[_0x6b59('0x7')]));var headers={'Content-Type':_0x6b59('0xb'),'Accept':_0x6b59('0xb')};function emit(_0x2b5f70,_0xb26c5e,_0x159ed0){io['to'](_0x2b5f70)['emit'](_0xb26c5e,_0x159ed0);}function getTicket(_0x26488a,_0x29c76b,_0xb5f1a0,_0xf552c3,_0x557154){logger[_0x6b59('0xc')]('Creating\x20new\x20ticket...');var _0x187705=_[_0x6b59('0xd')]({'responder_id':_0x29c76b['id'],'requester_id':_0xb5f1a0['id'],'name':util['format']('Caller\x20-\x20%s',_0x557154[_0x6b59('0xe')]),'phone':_0x557154[_0x6b59('0xf')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x6b59('0x10')](_0xf552c3['Subjects'],_0x557154,'\x20'),'description':intUtil[_0x6b59('0x10')](_0xf552c3[_0x6b59('0x11')],_0x557154,_0x6b59('0x12')),'tags':getTags(_0xf552c3[_0x6b59('0x13')],_0x6b59('0x14'))},getCustomFields(_0xf552c3['Fields'],_0x557154));_0x187705[_0x6b59('0x15')]=_[_0x6b59('0x16')](_['keyBy'](_0x187705['custom_fields'],'id'),'value');return request({'uri':util[_0x6b59('0x17')](_0x6b59('0x18'),_0x26488a[_0x6b59('0x19')]),'method':_0x6b59('0x1a'),'body':_0x187705})['then'](function(_0x3b2fdb){logger[_0x6b59('0xc')]('Ticket\x20created!');return _0x3b2fdb;});}function getUser(_0x2d30d9,_0x16f789){if(intUtil['validateEmail'](_0x16f789)){return request({'uri':util['format'](_0x6b59('0x1b'),_0x2d30d9[_0x6b59('0x19')]),'qs':{'email':_0x16f789}})[_0x6b59('0x1c')](function(_0x4958cf){if(_0x4958cf[_0x6b59('0x1d')]){logger[_0x6b59('0xc')](_0x6b59('0x1e'));return _[_0x6b59('0x1f')](_0x4958cf,function(_0x196339){return _0x196339[_0x6b59('0x20')][_0x6b59('0x21')]===_0x16f789;});}else{logger[_0x6b59('0xc')](_0x6b59('0x22'));return request({'uri':util[_0x6b59('0x17')](_0x6b59('0x23'),_0x2d30d9[_0x6b59('0x19')])})['then'](function(_0xb2c869){logger[_0x6b59('0xc')](_0x6b59('0x24'));return _0xb2c869;});}});}else{logger[_0x6b59('0xc')](_0x6b59('0x25'));return request({'uri':util[_0x6b59('0x17')](_0x6b59('0x23'),_0x2d30d9['remoteUri'])})[_0x6b59('0x1c')](function(_0x12f368){logger['info'](_0x6b59('0x24'));return _0x12f368;});}}function getEndUser(_0x3a357c,_0x27c732,_0x45b23d){logger['info']('Searching\x20enduser\x20with\x20phone',_0x45b23d);return request({'uri':util[_0x6b59('0x17')](_0x6b59('0x26'),_0x3a357c[_0x6b59('0x19')]),'qs':{'phone':_0x45b23d}})[_0x6b59('0x1c')](function(_0x4f9814){if(_0x4f9814[_0x6b59('0x1d')]){logger[_0x6b59('0xc')](_0x6b59('0x27'));return _[_0x6b59('0x1f')](_0x4f9814,{'phone':_0x45b23d});}else{logger[_0x6b59('0xc')](_0x6b59('0x28'));return request({'uri':util[_0x6b59('0x17')](_0x6b59('0x26'),_0x3a357c['remoteUri']),'method':'POST','body':{'name':_0x27c732,'phone':_0x45b23d}})['then'](function(_0x3796d3){logger[_0x6b59('0xc')](_0x6b59('0x29'));return _0x3796d3;});}});}function getAuth(_0x377e8c){return util[_0x6b59('0x17')](_0x6b59('0x2a'),new Buffer(_0x377e8c[_0x6b59('0x2b')]+':X')[_0x6b59('0x2c')]('base64'));}function request(_0x348d33){logger[_0x6b59('0x2d')](_0x6b59('0x2e'),JSON[_0x6b59('0x2f')](_0x348d33));return rp(_[_0x6b59('0x8')](_0x348d33,{'method':_0x6b59('0x30'),'headers':headers,'json':!![]}));}function getTags(_0x19db7b,_0x4cc57b){var _0xf4d9ce=[];if(_0x19db7b&&_0x19db7b[_0x6b59('0x1d')]>0x0){_0xf4d9ce=_['map'](_0x19db7b,_0x4cc57b);}return _0xf4d9ce;}function getCustomFields(_0x2ccfbd,_0x3c1fb1){var _0xa5b7e9=[];var _0x44d54b={'custom_fields':[]};if(_0x2ccfbd[_0x6b59('0x1d')]>0x0){_[_0x6b59('0x31')](_0x2ccfbd,function(_0x2b1c78){if(_0x2b1c78['type']===_0x6b59('0x32')&&_0x2b1c78[_0x6b59('0x33')]&&!_0x2b1c78[_0x6b59('0x34')]){_0x44d54b[_0x2b1c78[_0x6b59('0x33')][_0x6b59('0x35')]()]=_0x2b1c78['content'][_0x6b59('0x2c')]();}else if(_0x2b1c78[_0x6b59('0x36')]===_0x6b59('0x32')&&_0x2b1c78[_0x6b59('0x37')]&&_0x2b1c78[_0x6b59('0x34')]){_0x44d54b[_0x6b59('0x15')][_0x6b59('0x38')]({'id':_0x2b1c78[_0x6b59('0x37')],'value':_0x2b1c78[_0x6b59('0x39')]['toString']()});}else if(_0x2b1c78['type']===_0x6b59('0x3a')&&_0x2b1c78['variableName']&&_0x2b1c78[_0x6b59('0x37')]&&_0x2b1c78['customField']){_0x3c1fb1[_0x2b1c78[_0x6b59('0x3b')]]&&_0x44d54b[_0x6b59('0x15')][_0x6b59('0x38')]({'id':_0x2b1c78['idField'],'value':_0x3c1fb1[_0x2b1c78[_0x6b59('0x3b')]]['toString']()});}else if(_0x2b1c78[_0x6b59('0x36')]===_0x6b59('0x3c')&&_0x2b1c78[_0x6b59('0x3d')]&&_0x2b1c78[_0x6b59('0x3d')]['name']&&_0x2b1c78[_0x6b59('0x37')]&&_0x2b1c78[_0x6b59('0x34')]){_0x3c1fb1[_0x2b1c78[_0x6b59('0x3d')]['name']['toLowerCase']()]&&_0x44d54b[_0x6b59('0x15')][_0x6b59('0x38')]({'id':_0x2b1c78['idField'],'value':_0x3c1fb1[_0x2b1c78[_0x6b59('0x3d')][_0x6b59('0x14')][_0x6b59('0x35')]()][_0x6b59('0x2c')]()});}});}return _0x44d54b;}exports['queue']=function(_0x2c0216,_0x5ab84c,_0x4d5732,_0x131614,_0x25efe0,_0x276d91){var _0x159dc3,_0x283079;_0x276d91[_0x6b59('0x19')]=intUtil[_0x6b59('0x3e')](_0x276d91[_0x6b59('0x19')]);_0x276d91[_0x6b59('0x3f')]=intUtil['stripTrailingSlash'](_0x276d91['serverUrl']);if(_0x25efe0&&_0x25efe0[_0x6b59('0x40')]){logger['info'](_0x6b59('0x41'),_0x6b59('0x42'));_0x5ab84c['recordingURL']=util[_0x6b59('0x17')](_0x6b59('0x43'),_0x276d91[_0x6b59('0x3f')],_0x5ab84c[_0x6b59('0x44')],md5(_0x5ab84c[_0x6b59('0x44')]));}else{_0x5ab84c['recordingURL']='';}headers[_0x6b59('0x45')]=getAuth(_0x276d91);return getUser(_0x276d91,_0x131614[_0x6b59('0x21')])[_0x6b59('0x1c')](function(_0x3636a7){_0x159dc3=_0x3636a7;logger[_0x6b59('0xc')](_0x6b59('0x46'),_0x159dc3['id']);return getEndUser(_0x276d91,_0x5ab84c[_0x6b59('0xe')],_0x5ab84c[_0x6b59('0xf')]);})[_0x6b59('0x1c')](function(_0x40e978){_0x283079=_0x40e978;logger[_0x6b59('0xc')]('The\x20Enduser\x20ID\x20is:',_0x283079['id']);return getTicket(_0x276d91,_0x159dc3,_0x283079,_0x4d5732,_0x5ab84c);})['then'](function(_0x85dd02){if(_0x85dd02&&_0x85dd02['id']){logger[_0x6b59('0xc')](_0x6b59('0x47'));logger[_0x6b59('0xc')]('The\x20Ticket\x20ID\x20is:',_0x85dd02['id']);logger[_0x6b59('0xc')](_0x6b59('0x41'),_0x6b59('0x48'));emit(util['format'](_0x6b59('0x49'),_0x131614[_0x6b59('0x14')]),'trigger:browser:url',{'uri':util['format'](_0x6b59('0x4a'),_0x276d91[_0x6b59('0x19')],_0x85dd02['id'])});}})[_0x6b59('0x4b')](function(_0x478c){logger['error'](_0x6b59('0x41'),JSON[_0x6b59('0x2f')](_0x478c));});};exports[_0x6b59('0x4c')]=function(_0x182aaf,_0x17e59b,_0x159d0a,_0xdb63b8,_0x46a5e5,_0x579d86,_0x53eea4){var _0x358744,_0x390207;_0x579d86[_0x6b59('0x19')]=intUtil[_0x6b59('0x3e')](_0x579d86[_0x6b59('0x19')]);_0x579d86[_0x6b59('0x3f')]=intUtil[_0x6b59('0x3e')](_0x579d86['serverUrl']);if(_0x53eea4&&_0x53eea4[_0x6b59('0x4d')]&&_0x53eea4[_0x6b59('0x4d')]!=='none'){logger[_0x6b59('0xc')](_0x6b59('0x4e'),_0x6b59('0x42'));_0x17e59b[_0x6b59('0x4f')]=util[_0x6b59('0x17')](_0x6b59('0x43'),_0x579d86['serverUrl'],_0x17e59b[_0x6b59('0x44')],md5(_0x17e59b[_0x6b59('0x44')]));}headers[_0x6b59('0x45')]=getAuth(_0x579d86);return getUser(_0x579d86,_0xdb63b8[_0x6b59('0x21')])[_0x6b59('0x1c')](function(_0x41c849){_0x358744=_0x41c849;logger[_0x6b59('0xc')](_0x6b59('0x46'),_0x358744['id']);return getEndUser(_0x579d86,_0x17e59b[_0x6b59('0x50')],_0x17e59b[_0x6b59('0x51')]);})['then'](function(_0x54cf5e){_0x390207=_0x54cf5e;logger['info'](_0x6b59('0x52'),_0x390207['id']);return getTicket(_0x579d86,_0x358744,_0x390207,_0x159d0a,_0x17e59b);})[_0x6b59('0x1c')](function(_0x79429e){if(_0x79429e&&_0x79429e['id']){logger[_0x6b59('0xc')](_0x6b59('0x47'));logger[_0x6b59('0xc')](_0x6b59('0x53'),_0x79429e['id']);logger['info'](_0x6b59('0x4e'),_0x6b59('0x48'));emit(util[_0x6b59('0x17')](_0x6b59('0x49'),_0xdb63b8['name']),_0x6b59('0x54'),{'uri':util[_0x6b59('0x17')](_0x6b59('0x4a'),_0x579d86[_0x6b59('0x19')],_0x79429e['id'])});}})[_0x6b59('0x4b')](function(_0x11fc7d){logger[_0x6b59('0x55')](_0x6b59('0x4e'),JSON[_0x6b59('0x2f')](_0x11fc7d));});};exports[_0x6b59('0x56')]=function(_0x2a249b,_0x2a0c4d,_0x5ac890,_0x15b687,_0x12b31b,_0x111006){var _0x411b30,_0x7749bb;_0x111006[_0x6b59('0x19')]=intUtil['stripTrailingSlash'](_0x111006[_0x6b59('0x19')]);_0x111006[_0x6b59('0x3f')]=intUtil[_0x6b59('0x3e')](_0x111006[_0x6b59('0x3f')]);if(_0x12b31b&&_0x12b31b[_0x6b59('0x40')]){logger[_0x6b59('0xc')]('['+_0x2a0c4d['lastevent'][_0x6b59('0x57')]()+']','Recording\x20is\x20enabled!');_0x2a0c4d['recordingURL']=util[_0x6b59('0x17')](_0x6b59('0x43'),_0x111006[_0x6b59('0x3f')],_0x2a0c4d['uniqueid'],md5(_0x2a0c4d['uniqueid']));}else{_0x2a0c4d[_0x6b59('0x4f')]='';}headers[_0x6b59('0x45')]=getAuth(_0x111006);return getUser(_0x111006,'')[_0x6b59('0x1c')](function(_0x28304a){_0x411b30=_0x28304a;logger['info'](_0x6b59('0x46'),_0x411b30['id']);return getEndUser(_0x111006,_0x2a0c4d[_0x6b59('0xe')],_0x2a0c4d['calleridnum']);})[_0x6b59('0x1c')](function(_0x2c6a23){_0x7749bb=_0x2c6a23;logger[_0x6b59('0xc')]('The\x20Enduser\x20ID\x20is:',_0x7749bb['id']);return getTicket(_0x111006,_0x411b30,_0x7749bb,_0x5ac890,_0x2a0c4d);})[_0x6b59('0x1c')](function(_0x210260){if(_0x210260){logger['info'](_0x6b59('0x47'));logger[_0x6b59('0xc')](_0x6b59('0x53'),_0x210260['id']);}})[_0x6b59('0x4b')](function(_0x1ed73b){logger[_0x6b59('0x55')]('['+_0x2a0c4d[_0x6b59('0x58')]['toUpperCase']()+']',JSON[_0x6b59('0x2f')](_0x1ed73b));});};