2f3d3109f1c8e6122b6fb2017d63b94790e6c1ff
[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 _0x7e75=['custom_fields','keyBy','%s/api/v2/tickets','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','remoteUri','length','Agent\x20found!','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','find','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','stringify','map','forEach','string','picklist','type','customField','nameField','toLowerCase','content','toString','includes','idField','push','variable','variableName','Variable','name','queue','stripTrailingSlash','serverUrl','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','[OUTBOUND]','Authorization','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','user:%s','trigger:browser:url','monitor_format','lastevent','toUpperCase','request-promise','md5','util','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','Tags','Fields'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x7e75,0x14f));var _0x57e7=function(_0x451918,_0x528158){_0x451918=_0x451918-0x0;var _0xc9c86=_0x7e75[_0x451918];return _0xc9c86;};'use strict';var _=require('lodash');var rp=require(_0x57e7('0x0'));var md5=require(_0x57e7('0x1'));var util=require(_0x57e7('0x2'));var Redis=require('ioredis');var intUtil=require(_0x57e7('0x3'));var config=require(_0x57e7('0x4'));var logger=require(_0x57e7('0x5'))(_0x57e7('0x6'));config[_0x57e7('0x7')]=_[_0x57e7('0x8')](config[_0x57e7('0x7')],{'host':_0x57e7('0x9'),'port':0x18eb});var io=require(_0x57e7('0xa'))(new Redis(config[_0x57e7('0x7')]));var headers={'Content-Type':_0x57e7('0xb'),'Accept':'application/json'};function emit(_0x1ad686,_0x449a1a,_0x5a2214){io['to'](_0x1ad686)['emit'](_0x449a1a,_0x5a2214);}function getTicket(_0x29b5c5,_0x53a9a6,_0x96e1c5,_0x4b5e90,_0x3f45ef){logger[_0x57e7('0xc')](_0x57e7('0xd'));var _0x197bcb=_[_0x57e7('0xe')]({'responder_id':_0x53a9a6['id'],'requester_id':_0x96e1c5['id'],'name':util[_0x57e7('0xf')](_0x57e7('0x10'),_0x3f45ef[_0x57e7('0x11')]),'phone':_0x3f45ef[_0x57e7('0x12')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x57e7('0x13')](_0x4b5e90[_0x57e7('0x14')],_0x3f45ef,'\x20'),'description':intUtil[_0x57e7('0x13')](_0x4b5e90[_0x57e7('0x15')],_0x3f45ef,_0x57e7('0x16')),'tags':getTags(_0x4b5e90[_0x57e7('0x17')],'name')},getCustomFields(_0x4b5e90[_0x57e7('0x18')],_0x3f45ef));_0x197bcb[_0x57e7('0x19')]=_['mapValues'](_[_0x57e7('0x1a')](_0x197bcb[_0x57e7('0x19')],'id'),'value');return request({'uri':util[_0x57e7('0xf')](_0x57e7('0x1b'),_0x29b5c5['remoteUri']),'method':_0x57e7('0x1c'),'body':_0x197bcb})[_0x57e7('0x1d')](function(_0x546a48){logger[_0x57e7('0xc')](_0x57e7('0x1e'));return _0x546a48;});}function getUser(_0x4ffc64,_0x18c3da){if(intUtil[_0x57e7('0x1f')](_0x18c3da)){return request({'uri':util[_0x57e7('0xf')](_0x57e7('0x20'),_0x4ffc64[_0x57e7('0x21')]),'qs':{'email':_0x18c3da}})[_0x57e7('0x1d')](function(_0x435cd3){if(_0x435cd3[_0x57e7('0x22')]){logger['info'](_0x57e7('0x23'));return _['find'](_0x435cd3,function(_0x19d009){return _0x19d009[_0x57e7('0x24')][_0x57e7('0x25')]===_0x18c3da;});}else{logger['info'](_0x57e7('0x26'));return request({'uri':util[_0x57e7('0xf')](_0x57e7('0x27'),_0x4ffc64[_0x57e7('0x21')])})[_0x57e7('0x1d')](function(_0x137a89){logger[_0x57e7('0xc')](_0x57e7('0x28'));return _0x137a89;});}});}else{logger[_0x57e7('0xc')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x57e7('0xf')](_0x57e7('0x27'),_0x4ffc64[_0x57e7('0x21')])})[_0x57e7('0x1d')](function(_0x19f807){logger[_0x57e7('0xc')](_0x57e7('0x28'));return _0x19f807;});}}function getEndUser(_0x25c58f,_0x391c52,_0x260b24){logger[_0x57e7('0xc')](_0x57e7('0x29'),_0x260b24);return request({'uri':util[_0x57e7('0xf')](_0x57e7('0x2a'),_0x25c58f[_0x57e7('0x21')]),'qs':{'phone':_0x260b24}})[_0x57e7('0x1d')](function(_0x8a7061){if(_0x8a7061[_0x57e7('0x22')]){logger[_0x57e7('0xc')]('Enduser\x20found!');return _[_0x57e7('0x2b')](_0x8a7061,{'phone':_0x260b24});}else{logger[_0x57e7('0xc')](_0x57e7('0x2c'));return request({'uri':util['format'](_0x57e7('0x2a'),_0x25c58f[_0x57e7('0x21')]),'method':_0x57e7('0x1c'),'body':{'name':_0x391c52,'phone':_0x260b24}})['then'](function(_0xa0750){logger['info'](_0x57e7('0x2d'));return _0xa0750;});}});}function getAuth(_0x25560c){return util[_0x57e7('0xf')](_0x57e7('0x2e'),new Buffer(_0x25560c['apiKey']+':X')['toString']('base64'));}function request(_0x249bcd){logger['debug']('[HTTP]',JSON[_0x57e7('0x2f')](_0x249bcd));return rp(_[_0x57e7('0x8')](_0x249bcd,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x18531f,_0x1efa5c){var _0x17aba4=[];if(_0x18531f&&_0x18531f[_0x57e7('0x22')]>0x0){_0x17aba4=_[_0x57e7('0x30')](_0x18531f,_0x1efa5c);}return _0x17aba4;}function getCustomFields(_0x152fe3,_0x114f10){var _0x167a08=[];var _0x2704f8={'custom_fields':[]};if(_0x152fe3[_0x57e7('0x22')]>0x0){_[_0x57e7('0x31')](_0x152fe3,function(_0x59e5a3){if(_['includes']([_0x57e7('0x32'),_0x57e7('0x33')],_0x59e5a3[_0x57e7('0x34')])&&_0x59e5a3['nameField']&&!_0x59e5a3[_0x57e7('0x35')]){_0x2704f8[_0x59e5a3[_0x57e7('0x36')][_0x57e7('0x37')]()]=_0x59e5a3[_0x57e7('0x38')][_0x57e7('0x39')]();}else if(_[_0x57e7('0x3a')]([_0x57e7('0x32'),'picklist'],_0x59e5a3['type'])&&_0x59e5a3[_0x57e7('0x3b')]&&_0x59e5a3[_0x57e7('0x35')]){_0x2704f8[_0x57e7('0x19')][_0x57e7('0x3c')]({'id':_0x59e5a3[_0x57e7('0x3b')],'value':_0x59e5a3[_0x57e7('0x38')][_0x57e7('0x39')]()});}else if(_0x59e5a3['type']===_0x57e7('0x3d')&&_0x59e5a3['variableName']&&_0x59e5a3[_0x57e7('0x3b')]&&_0x59e5a3['customField']){_0x114f10[_0x59e5a3[_0x57e7('0x3e')]]&&_0x2704f8['custom_fields'][_0x57e7('0x3c')]({'id':_0x59e5a3[_0x57e7('0x3b')],'value':_0x114f10[_0x59e5a3[_0x57e7('0x3e')]][_0x57e7('0x39')]()});}else if(_0x59e5a3[_0x57e7('0x34')]==='customVariable'&&_0x59e5a3[_0x57e7('0x3f')]&&_0x59e5a3['Variable']['name']&&_0x59e5a3[_0x57e7('0x3b')]&&_0x59e5a3[_0x57e7('0x35')]){_0x114f10[_0x59e5a3['Variable'][_0x57e7('0x40')][_0x57e7('0x37')]()]&&_0x2704f8[_0x57e7('0x19')][_0x57e7('0x3c')]({'id':_0x59e5a3['idField'],'value':_0x114f10[_0x59e5a3[_0x57e7('0x3f')][_0x57e7('0x40')][_0x57e7('0x37')]()][_0x57e7('0x39')]()});}});}return _0x2704f8;}exports[_0x57e7('0x41')]=function(_0x55f610,_0x38b80b,_0x2f4bc6,_0x86f266,_0x131e86,_0x4ce77e){var _0x54d0d1,_0x1ea2f5;_0x4ce77e[_0x57e7('0x21')]=intUtil[_0x57e7('0x42')](_0x4ce77e[_0x57e7('0x21')]);_0x4ce77e[_0x57e7('0x43')]=intUtil[_0x57e7('0x42')](_0x4ce77e[_0x57e7('0x43')]);if(_0x131e86&&_0x131e86['monitor_format']){logger[_0x57e7('0xc')]('[QUEUE]',_0x57e7('0x44'));_0x38b80b[_0x57e7('0x45')]=util[_0x57e7('0xf')](_0x57e7('0x46'),_0x4ce77e['serverUrl'],_0x38b80b[_0x57e7('0x47')],md5(_0x38b80b['uniqueid']));}else{_0x38b80b[_0x57e7('0x45')]='';}headers['Authorization']=getAuth(_0x4ce77e);return getUser(_0x4ce77e,_0x86f266[_0x57e7('0x25')])['then'](function(_0x10656c){_0x54d0d1=_0x10656c;logger['info']('The\x20User\x20ID\x20is:',_0x54d0d1['id']);return getEndUser(_0x4ce77e,_0x38b80b[_0x57e7('0x11')],_0x38b80b[_0x57e7('0x12')]);})[_0x57e7('0x1d')](function(_0x36a1a6){_0x1ea2f5=_0x36a1a6;logger[_0x57e7('0xc')]('The\x20Enduser\x20ID\x20is:',_0x1ea2f5['id']);return getTicket(_0x4ce77e,_0x54d0d1,_0x1ea2f5,_0x2f4bc6,_0x38b80b);})[_0x57e7('0x1d')](function(_0x205781){if(_0x205781&&_0x205781['id']){logger[_0x57e7('0xc')](_0x57e7('0x1e'));logger[_0x57e7('0xc')]('The\x20Ticket\x20ID\x20is:',_0x205781['id']);logger[_0x57e7('0xc')](_0x57e7('0x48'),_0x57e7('0x49'));emit(util[_0x57e7('0xf')]('user:%s',_0x86f266[_0x57e7('0x40')]),'trigger:browser:url',{'uri':util[_0x57e7('0xf')](_0x57e7('0x4a'),_0x4ce77e[_0x57e7('0x21')],_0x205781['id'])});}})[_0x57e7('0x4b')](function(_0x4677b8){logger[_0x57e7('0x4c')](_0x57e7('0x48'),JSON[_0x57e7('0x2f')](_0x4677b8));});};exports[_0x57e7('0x4d')]=function(_0x1102c2,_0x206fbf,_0x22ee79,_0x104079,_0x108ed9,_0x1b4383,_0x18231e){var _0x58086e,_0x3e3c2c;_0x1b4383['remoteUri']=intUtil[_0x57e7('0x42')](_0x1b4383[_0x57e7('0x21')]);_0x1b4383[_0x57e7('0x43')]=intUtil[_0x57e7('0x42')](_0x1b4383[_0x57e7('0x43')]);if(_0x18231e&&_0x18231e[_0x57e7('0x4e')]&&_0x18231e[_0x57e7('0x4e')]!=='none'){logger[_0x57e7('0xc')](_0x57e7('0x4f'),'Recording\x20is\x20enabled!');_0x206fbf[_0x57e7('0x45')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1b4383['serverUrl'],_0x206fbf[_0x57e7('0x47')],md5(_0x206fbf[_0x57e7('0x47')]));}headers[_0x57e7('0x50')]=getAuth(_0x1b4383);return getUser(_0x1b4383,_0x104079[_0x57e7('0x25')])[_0x57e7('0x1d')](function(_0x37dce2){_0x58086e=_0x37dce2;logger['info']('The\x20User\x20ID\x20is:',_0x58086e['id']);return getEndUser(_0x1b4383,_0x206fbf[_0x57e7('0x51')],_0x206fbf[_0x57e7('0x52')]);})[_0x57e7('0x1d')](function(_0xf7354){_0x3e3c2c=_0xf7354;logger[_0x57e7('0xc')](_0x57e7('0x53'),_0x3e3c2c['id']);return getTicket(_0x1b4383,_0x58086e,_0x3e3c2c,_0x22ee79,_0x206fbf);})[_0x57e7('0x1d')](function(_0x78a801){if(_0x78a801&&_0x78a801['id']){logger[_0x57e7('0xc')](_0x57e7('0x1e'));logger[_0x57e7('0xc')](_0x57e7('0x54'),_0x78a801['id']);logger['info'](_0x57e7('0x4f'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0x57e7('0x55'),_0x104079[_0x57e7('0x40')]),_0x57e7('0x56'),{'uri':util['format'](_0x57e7('0x4a'),_0x1b4383[_0x57e7('0x21')],_0x78a801['id'])});}})[_0x57e7('0x4b')](function(_0x2dfe5e){logger[_0x57e7('0x4c')](_0x57e7('0x4f'),JSON[_0x57e7('0x2f')](_0x2dfe5e));});};exports['unmanaged']=function(_0x3e8ca5,_0xbbd521,_0x28f565,_0x1824e2,_0x2b54ae,_0xb4c14a){var _0x10894f,_0x4283da;_0xb4c14a['remoteUri']=intUtil[_0x57e7('0x42')](_0xb4c14a[_0x57e7('0x21')]);_0xb4c14a['serverUrl']=intUtil['stripTrailingSlash'](_0xb4c14a[_0x57e7('0x43')]);if(_0x2b54ae&&_0x2b54ae[_0x57e7('0x57')]){logger[_0x57e7('0xc')]('['+_0xbbd521[_0x57e7('0x58')]['toUpperCase']()+']',_0x57e7('0x44'));_0xbbd521[_0x57e7('0x45')]=util['format'](_0x57e7('0x46'),_0xb4c14a['serverUrl'],_0xbbd521[_0x57e7('0x47')],md5(_0xbbd521[_0x57e7('0x47')]));}else{_0xbbd521['recordingURL']='';}headers[_0x57e7('0x50')]=getAuth(_0xb4c14a);return getUser(_0xb4c14a,'')['then'](function(_0x1d9f79){_0x10894f=_0x1d9f79;logger[_0x57e7('0xc')]('The\x20User\x20ID\x20is:',_0x10894f['id']);return getEndUser(_0xb4c14a,_0xbbd521['calleridname'],_0xbbd521[_0x57e7('0x12')]);})[_0x57e7('0x1d')](function(_0x38d00b){_0x4283da=_0x38d00b;logger[_0x57e7('0xc')]('The\x20Enduser\x20ID\x20is:',_0x4283da['id']);return getTicket(_0xb4c14a,_0x10894f,_0x4283da,_0x28f565,_0xbbd521);})[_0x57e7('0x1d')](function(_0x3eb8e6){if(_0x3eb8e6){logger[_0x57e7('0xc')](_0x57e7('0x1e'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x3eb8e6['id']);}})[_0x57e7('0x4b')](function(_0x57a80d){logger[_0x57e7('0x4c')]('['+_0xbbd521[_0x57e7('0x58')][_0x57e7('0x59')]()+']',JSON[_0x57e7('0x2f')](_0x57a80d));});};