a2b0eeb2a715da618c489f5f2e3a4c7993497248
[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 _0x5e78=['recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','outbound','stripTrailingSlash','recordingFormat','none','[OUTBOUND]','destcalleridnum','The\x20Ticket\x20ID\x20is:','lastevent','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridnum','getString','Subjects','Descriptions','Fields','custom_fields','mapValues','keyBy','value','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','find','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','[HTTP]','GET','forEach','type','string','nameField','customField','toLowerCase','content','idField','variable','variableName','push','Variable','name','queue','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!'];(function(_0x180858,_0x109cad){var _0x4b7584=function(_0x29474e){while(--_0x29474e){_0x180858['push'](_0x180858['shift']());}};_0x4b7584(++_0x109cad);}(_0x5e78,0xca));var _0x85e7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5e78[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x85e7('0x0'));var rp=require(_0x85e7('0x1'));var md5=require(_0x85e7('0x2'));var util=require(_0x85e7('0x3'));var Redis=require(_0x85e7('0x4'));var intUtil=require(_0x85e7('0x5'));var config=require(_0x85e7('0x6'));var logger=require(_0x85e7('0x7'))(_0x85e7('0x8'));config[_0x85e7('0x9')]=_[_0x85e7('0xa')](config[_0x85e7('0x9')],{'host':_0x85e7('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var headers={'Content-Type':_0x85e7('0xc'),'Accept':_0x85e7('0xc')};function emit(_0x24623d,_0x5214d4,_0x4ea347){io['to'](_0x24623d)[_0x85e7('0xd')](_0x5214d4,_0x4ea347);}function getTicket(_0x2e8cc0,_0x2b6b4d,_0x4349ad,_0x5af0ed,_0x5ddc8f){logger[_0x85e7('0xe')](_0x85e7('0xf'));var _0x55d127=_[_0x85e7('0x10')]({'responder_id':_0x2b6b4d['id'],'requester_id':_0x4349ad['id'],'name':util[_0x85e7('0x11')](_0x85e7('0x12'),_0x5ddc8f['calleridname']),'phone':_0x5ddc8f[_0x85e7('0x13')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x85e7('0x14')](_0x5af0ed[_0x85e7('0x15')],_0x5ddc8f,'\x20'),'description':intUtil[_0x85e7('0x14')](_0x5af0ed[_0x85e7('0x16')],_0x5ddc8f,'<br>'),'tags':getTags(_0x5af0ed['Tags'],'name')},getCustomFields(_0x5af0ed[_0x85e7('0x17')],_0x5ddc8f));_0x55d127[_0x85e7('0x18')]=_[_0x85e7('0x19')](_[_0x85e7('0x1a')](_0x55d127[_0x85e7('0x18')],'id'),_0x85e7('0x1b'));return request({'uri':util[_0x85e7('0x11')](_0x85e7('0x1c'),_0x2e8cc0[_0x85e7('0x1d')]),'method':_0x85e7('0x1e'),'body':_0x55d127})[_0x85e7('0x1f')](function(_0x3b4e76){logger[_0x85e7('0xe')](_0x85e7('0x20'));return _0x3b4e76;});}function getUser(_0x409f63,_0x236085){if(intUtil[_0x85e7('0x21')](_0x236085)){return request({'uri':util[_0x85e7('0x11')](_0x85e7('0x22'),_0x409f63[_0x85e7('0x1d')]),'qs':{'email':_0x236085}})[_0x85e7('0x1f')](function(_0x3fa28a){if(_0x3fa28a[_0x85e7('0x23')]){logger[_0x85e7('0xe')]('Agent\x20found!');return _[_0x85e7('0x24')](_0x3fa28a,function(_0xb501c2){return _0xb501c2['contact']['email']===_0x236085;});}else{logger[_0x85e7('0xe')](_0x85e7('0x25'));return request({'uri':util['format']('%s/api/v2/agents/me',_0x409f63[_0x85e7('0x1d')])})['then'](function(_0x3888f8){logger[_0x85e7('0xe')]('Admin\x20account\x20selected.');return _0x3888f8;});}});}else{logger[_0x85e7('0xe')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x85e7('0x11')]('%s/api/v2/agents/me',_0x409f63[_0x85e7('0x1d')])})[_0x85e7('0x1f')](function(_0x3284a8){logger[_0x85e7('0xe')](_0x85e7('0x26'));return _0x3284a8;});}}function getEndUser(_0x82c8a,_0x2072d0,_0x11fb1c){logger[_0x85e7('0xe')](_0x85e7('0x27'),_0x11fb1c);return request({'uri':util['format']('%s/api/v2/contacts',_0x82c8a['remoteUri']),'qs':{'phone':_0x11fb1c}})[_0x85e7('0x1f')](function(_0x42f391){if(_0x42f391[_0x85e7('0x23')]){logger['info'](_0x85e7('0x28'));return _[_0x85e7('0x24')](_0x42f391,{'phone':_0x11fb1c});}else{logger[_0x85e7('0xe')](_0x85e7('0x29'));return request({'uri':util[_0x85e7('0x11')]('%s/api/v2/contacts',_0x82c8a[_0x85e7('0x1d')]),'method':_0x85e7('0x1e'),'body':{'name':_0x2072d0,'phone':_0x11fb1c}})[_0x85e7('0x1f')](function(_0x33c770){logger['info'](_0x85e7('0x2a'));return _0x33c770;});}});}function getAuth(_0x2b7568){return util[_0x85e7('0x11')](_0x85e7('0x2b'),new Buffer(_0x2b7568[_0x85e7('0x2c')]+':X')[_0x85e7('0x2d')](_0x85e7('0x2e')));}function request(_0x50849d){logger[_0x85e7('0x2f')](_0x85e7('0x30'),JSON['stringify'](_0x50849d));return rp(_[_0x85e7('0xa')](_0x50849d,{'method':_0x85e7('0x31'),'headers':headers,'json':!![]}));}function getTags(_0x29c1c7,_0x3cbc0d){var _0x22c719=[];if(_0x29c1c7&&_0x29c1c7[_0x85e7('0x23')]>0x0){_0x22c719=_['map'](_0x29c1c7,_0x3cbc0d);}return _0x22c719;}function getCustomFields(_0x36369a,_0x30417b){var _0x110622=[];var _0x49a82e={'custom_fields':[]};if(_0x36369a['length']>0x0){_[_0x85e7('0x32')](_0x36369a,function(_0x4bee26){if(_0x4bee26[_0x85e7('0x33')]===_0x85e7('0x34')&&_0x4bee26[_0x85e7('0x35')]&&!_0x4bee26[_0x85e7('0x36')]){_0x49a82e[_0x4bee26[_0x85e7('0x35')][_0x85e7('0x37')]()]=_0x4bee26[_0x85e7('0x38')][_0x85e7('0x2d')]();}else if(_0x4bee26[_0x85e7('0x33')]==='string'&&_0x4bee26[_0x85e7('0x39')]&&_0x4bee26[_0x85e7('0x36')]){_0x49a82e['custom_fields']['push']({'id':_0x4bee26[_0x85e7('0x39')],'value':_0x4bee26[_0x85e7('0x38')][_0x85e7('0x2d')]()});}else if(_0x4bee26[_0x85e7('0x33')]===_0x85e7('0x3a')&&_0x4bee26[_0x85e7('0x3b')]&&_0x4bee26[_0x85e7('0x39')]&&_0x4bee26[_0x85e7('0x36')]){_0x30417b[_0x4bee26[_0x85e7('0x3b')]]&&_0x49a82e[_0x85e7('0x18')][_0x85e7('0x3c')]({'id':_0x4bee26[_0x85e7('0x39')],'value':_0x30417b[_0x4bee26[_0x85e7('0x3b')]][_0x85e7('0x2d')]()});}else if(_0x4bee26[_0x85e7('0x33')]==='customVariable'&&_0x4bee26[_0x85e7('0x3d')]&&_0x4bee26['Variable']['name']&&_0x4bee26[_0x85e7('0x39')]&&_0x4bee26['customField']){_0x30417b[_0x4bee26['Variable'][_0x85e7('0x3e')]['toLowerCase']()]&&_0x49a82e[_0x85e7('0x18')][_0x85e7('0x3c')]({'id':_0x4bee26[_0x85e7('0x39')],'value':_0x30417b[_0x4bee26['Variable'][_0x85e7('0x3e')][_0x85e7('0x37')]()][_0x85e7('0x2d')]()});}});}return _0x49a82e;}exports[_0x85e7('0x3f')]=function(_0x354ac0,_0x1aeaa4,_0x17c1be,_0x18c48d,_0x505221,_0x450ec7){var _0x5e89ee,_0x454d8b;_0x450ec7[_0x85e7('0x1d')]=intUtil['stripTrailingSlash'](_0x450ec7[_0x85e7('0x1d')]);_0x450ec7['serverUrl']=intUtil['stripTrailingSlash'](_0x450ec7[_0x85e7('0x40')]);if(_0x505221&&_0x505221[_0x85e7('0x41')]){logger['info'](_0x85e7('0x42'),_0x85e7('0x43'));_0x1aeaa4[_0x85e7('0x44')]=util[_0x85e7('0x11')](_0x85e7('0x45'),_0x450ec7[_0x85e7('0x40')],_0x1aeaa4[_0x85e7('0x46')],md5(_0x1aeaa4[_0x85e7('0x46')]));}else{_0x1aeaa4[_0x85e7('0x44')]='';}headers[_0x85e7('0x47')]=getAuth(_0x450ec7);return getUser(_0x450ec7,_0x18c48d[_0x85e7('0x48')])[_0x85e7('0x1f')](function(_0x44a80c){_0x5e89ee=_0x44a80c;logger[_0x85e7('0xe')](_0x85e7('0x49'),_0x5e89ee['id']);return getEndUser(_0x450ec7,_0x1aeaa4[_0x85e7('0x4a')],_0x1aeaa4[_0x85e7('0x13')]);})['then'](function(_0x318d19){_0x454d8b=_0x318d19;logger[_0x85e7('0xe')](_0x85e7('0x4b'),_0x454d8b['id']);return getTicket(_0x450ec7,_0x5e89ee,_0x454d8b,_0x17c1be,_0x1aeaa4);})['then'](function(_0x4f5e53){if(_0x4f5e53&&_0x4f5e53['id']){logger['info'](_0x85e7('0x20'));logger[_0x85e7('0xe')]('The\x20Ticket\x20ID\x20is:',_0x4f5e53['id']);logger[_0x85e7('0xe')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x85e7('0x11')](_0x85e7('0x4c'),_0x18c48d[_0x85e7('0x3e')]),_0x85e7('0x4d'),{'uri':util['format'](_0x85e7('0x4e'),_0x450ec7[_0x85e7('0x1d')],_0x4f5e53['id'])});}})[_0x85e7('0x4f')](function(_0x3531d8){logger[_0x85e7('0x50')]('[QUEUE]',JSON['stringify'](_0x3531d8));});};exports[_0x85e7('0x51')]=function(_0x2d9f2f,_0x478721,_0x5074f7,_0x33a14a,_0x26198e,_0x324745,_0x1919cb){var _0x55bae2,_0x12b48b;_0x324745[_0x85e7('0x1d')]=intUtil['stripTrailingSlash'](_0x324745['remoteUri']);_0x324745[_0x85e7('0x40')]=intUtil[_0x85e7('0x52')](_0x324745['serverUrl']);if(_0x1919cb&&_0x1919cb[_0x85e7('0x53')]&&_0x1919cb[_0x85e7('0x53')]!==_0x85e7('0x54')){logger[_0x85e7('0xe')](_0x85e7('0x55'),_0x85e7('0x43'));_0x478721[_0x85e7('0x44')]=util[_0x85e7('0x11')](_0x85e7('0x45'),_0x324745['serverUrl'],_0x478721[_0x85e7('0x46')],md5(_0x478721['uniqueid']));}headers['Authorization']=getAuth(_0x324745);return getUser(_0x324745,_0x33a14a['email'])[_0x85e7('0x1f')](function(_0x36c67a){_0x55bae2=_0x36c67a;logger[_0x85e7('0xe')](_0x85e7('0x49'),_0x55bae2['id']);return getEndUser(_0x324745,_0x478721['destcalleridname'],_0x478721[_0x85e7('0x56')]);})[_0x85e7('0x1f')](function(_0x2bd14d){_0x12b48b=_0x2bd14d;logger[_0x85e7('0xe')](_0x85e7('0x4b'),_0x12b48b['id']);return getTicket(_0x324745,_0x55bae2,_0x12b48b,_0x5074f7,_0x478721);})[_0x85e7('0x1f')](function(_0x530655){if(_0x530655&&_0x530655['id']){logger[_0x85e7('0xe')]('Ticket\x20created!');logger['info'](_0x85e7('0x57'),_0x530655['id']);logger[_0x85e7('0xe')](_0x85e7('0x55'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x85e7('0x11')](_0x85e7('0x4c'),_0x33a14a[_0x85e7('0x3e')]),_0x85e7('0x4d'),{'uri':util['format'](_0x85e7('0x4e'),_0x324745['remoteUri'],_0x530655['id'])});}})[_0x85e7('0x4f')](function(_0x42fc88){logger[_0x85e7('0x50')](_0x85e7('0x55'),JSON['stringify'](_0x42fc88));});};exports['unmanaged']=function(_0x2f955,_0x5ea973,_0x19bacb,_0x1a599c,_0x3283ac,_0x261a2b){var _0x31ded6,_0x1dba01;_0x261a2b[_0x85e7('0x1d')]=intUtil[_0x85e7('0x52')](_0x261a2b[_0x85e7('0x1d')]);_0x261a2b[_0x85e7('0x40')]=intUtil['stripTrailingSlash'](_0x261a2b[_0x85e7('0x40')]);if(_0x3283ac&&_0x3283ac[_0x85e7('0x41')]){logger['info']('['+_0x5ea973[_0x85e7('0x58')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x5ea973[_0x85e7('0x44')]=util[_0x85e7('0x11')](_0x85e7('0x45'),_0x261a2b[_0x85e7('0x40')],_0x5ea973[_0x85e7('0x46')],md5(_0x5ea973['uniqueid']));}else{_0x5ea973[_0x85e7('0x44')]='';}headers['Authorization']=getAuth(_0x261a2b);return getUser(_0x261a2b,'')[_0x85e7('0x1f')](function(_0x3c7f79){_0x31ded6=_0x3c7f79;logger[_0x85e7('0xe')](_0x85e7('0x49'),_0x31ded6['id']);return getEndUser(_0x261a2b,_0x5ea973[_0x85e7('0x4a')],_0x5ea973[_0x85e7('0x13')]);})[_0x85e7('0x1f')](function(_0x2cb007){_0x1dba01=_0x2cb007;logger[_0x85e7('0xe')](_0x85e7('0x4b'),_0x1dba01['id']);return getTicket(_0x261a2b,_0x31ded6,_0x1dba01,_0x19bacb,_0x5ea973);})['then'](function(_0x248540){if(_0x248540){logger[_0x85e7('0xe')](_0x85e7('0x20'));logger['info'](_0x85e7('0x57'),_0x248540['id']);}})[_0x85e7('0x4f')](function(_0x3f0744){logger[_0x85e7('0x50')]('['+_0x5ea973[_0x85e7('0x58')][_0x85e7('0x59')]()+']',JSON['stringify'](_0x3f0744));});};