Built motion from commit (unavailable).|2.4.21
[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 _0x788e=['lastevent','lodash','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','<br>','Tags','Fields','custom_fields','value','remoteUri','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','Agent\x20found!','find','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','POST','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','defaults','GET','map','forEach','type','string','nameField','customField','toLowerCase','idField','content','variable','variableName','push','customVariable','Variable','name','queue','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','uniqueid','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','[QUEUE]','user:%s','catch','error','stringify','outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/helpdesk/tickets/%d','toUpperCase','Authorization'];(function(_0x5c7013,_0x205876){var _0x46077a=function(_0x4ca91d){while(--_0x4ca91d){_0x5c7013['push'](_0x5c7013['shift']());}};_0x46077a(++_0x205876);}(_0x788e,0x16d));var _0xe788=function(_0x4a9c56,_0x30e0c6){_0x4a9c56=_0x4a9c56-0x0;var _0x2cb11e=_0x788e[_0x4a9c56];return _0x2cb11e;};'use strict';var _=require(_0xe788('0x0'));var rp=require('request-promise');var md5=require(_0xe788('0x1'));var util=require(_0xe788('0x2'));var Redis=require(_0xe788('0x3'));var intUtil=require(_0xe788('0x4'));var config=require(_0xe788('0x5'));var logger=require(_0xe788('0x6'))(_0xe788('0x7'));config[_0xe788('0x8')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xe788('0x9'))(new Redis(config['redis']));var headers={'Content-Type':_0xe788('0xa'),'Accept':_0xe788('0xa')};function emit(_0x1d5fef,_0x364495,_0x262e7a){io['to'](_0x1d5fef)[_0xe788('0xb')](_0x364495,_0x262e7a);}function getTicket(_0x3686fc,_0x2ef842,_0x11c9f5,_0x36a884,_0x1fd525){logger[_0xe788('0xc')](_0xe788('0xd'));var _0x513513=_[_0xe788('0xe')]({'responder_id':_0x2ef842['id'],'requester_id':_0x11c9f5['id'],'name':util[_0xe788('0xf')](_0xe788('0x10'),_0x1fd525[_0xe788('0x11')]),'phone':_0x1fd525[_0xe788('0x12')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xe788('0x13')](_0x36a884[_0xe788('0x14')],_0x1fd525,'\x20'),'description':intUtil[_0xe788('0x13')](_0x36a884['Descriptions'],_0x1fd525,_0xe788('0x15')),'tags':getTags(_0x36a884[_0xe788('0x16')],'name')},getCustomFields(_0x36a884[_0xe788('0x17')],_0x1fd525));_0x513513[_0xe788('0x18')]=_['mapValues'](_['keyBy'](_0x513513[_0xe788('0x18')],'id'),_0xe788('0x19'));return request({'uri':util[_0xe788('0xf')]('%s/api/v2/tickets',_0x3686fc[_0xe788('0x1a')]),'method':'POST','body':_0x513513})[_0xe788('0x1b')](function(_0x3c48ae){logger['info'](_0xe788('0x1c'));return _0x3c48ae;});}function getUser(_0x583636,_0x145d1b){if(intUtil[_0xe788('0x1d')](_0x145d1b)){return request({'uri':util[_0xe788('0xf')](_0xe788('0x1e'),_0x583636['remoteUri']),'qs':{'email':_0x145d1b}})['then'](function(_0x132c0d){if(_0x132c0d[_0xe788('0x1f')]){logger[_0xe788('0xc')](_0xe788('0x20'));return _[_0xe788('0x21')](_0x132c0d,function(_0x3e4f18){return _0x3e4f18['contact'][_0xe788('0x22')]===_0x145d1b;});}else{logger[_0xe788('0xc')](_0xe788('0x23'));return request({'uri':util['format'](_0xe788('0x24'),_0x583636['remoteUri'])})[_0xe788('0x1b')](function(_0x1b7908){logger['info'](_0xe788('0x25'));return _0x1b7908;});}});}else{logger['info'](_0xe788('0x26'));return request({'uri':util[_0xe788('0xf')](_0xe788('0x24'),_0x583636[_0xe788('0x1a')])})[_0xe788('0x1b')](function(_0x374eff){logger[_0xe788('0xc')]('Admin\x20account\x20selected.');return _0x374eff;});}}function getEndUser(_0xbba2e1,_0x5b6948,_0x2f07bc){logger[_0xe788('0xc')]('Searching\x20enduser\x20with\x20phone',_0x2f07bc);return request({'uri':util['format'](_0xe788('0x27'),_0xbba2e1[_0xe788('0x1a')]),'qs':{'phone':_0x2f07bc}})[_0xe788('0x1b')](function(_0x471861){if(_0x471861[_0xe788('0x1f')]){logger[_0xe788('0xc')]('Enduser\x20found!');return _['find'](_0x471861,{'phone':_0x2f07bc});}else{logger[_0xe788('0xc')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xe788('0xf')](_0xe788('0x27'),_0xbba2e1['remoteUri']),'method':_0xe788('0x28'),'body':{'name':_0x5b6948,'phone':_0x2f07bc}})['then'](function(_0x2604b2){logger[_0xe788('0xc')](_0xe788('0x29'));return _0x2604b2;});}});}function getAuth(_0x3fca7f){return util['format'](_0xe788('0x2a'),new Buffer(_0x3fca7f[_0xe788('0x2b')]+':X')[_0xe788('0x2c')](_0xe788('0x2d')));}function request(_0x55bd91){logger['debug']('[HTTP]',JSON['stringify'](_0x55bd91));return rp(_[_0xe788('0x2e')](_0x55bd91,{'method':_0xe788('0x2f'),'headers':headers,'json':!![]}));}function getTags(_0x105434,_0x5444b0){var _0x3a1158=[];if(_0x105434&&_0x105434[_0xe788('0x1f')]>0x0){_0x3a1158=_[_0xe788('0x30')](_0x105434,_0x5444b0);}return _0x3a1158;}function getCustomFields(_0x32227d,_0x1882de){var _0x191765=[];var _0x52628f={'custom_fields':[]};if(_0x32227d[_0xe788('0x1f')]>0x0){_[_0xe788('0x31')](_0x32227d,function(_0x1456ea){if(_0x1456ea[_0xe788('0x32')]===_0xe788('0x33')&&_0x1456ea[_0xe788('0x34')]&&!_0x1456ea[_0xe788('0x35')]){_0x52628f[_0x1456ea[_0xe788('0x34')][_0xe788('0x36')]()]=_0x1456ea['content'][_0xe788('0x2c')]();}else if(_0x1456ea[_0xe788('0x32')]===_0xe788('0x33')&&_0x1456ea[_0xe788('0x37')]&&_0x1456ea[_0xe788('0x35')]){_0x52628f[_0xe788('0x18')]['push']({'id':_0x1456ea[_0xe788('0x37')],'value':_0x1456ea[_0xe788('0x38')][_0xe788('0x2c')]()});}else if(_0x1456ea[_0xe788('0x32')]===_0xe788('0x39')&&_0x1456ea[_0xe788('0x3a')]&&_0x1456ea[_0xe788('0x37')]&&_0x1456ea['customField']){_0x1882de[_0x1456ea['variableName']]&&_0x52628f['custom_fields'][_0xe788('0x3b')]({'id':_0x1456ea['idField'],'value':_0x1882de[_0x1456ea['variableName']]['toString']()});}else if(_0x1456ea['type']===_0xe788('0x3c')&&_0x1456ea['Variable']&&_0x1456ea[_0xe788('0x3d')][_0xe788('0x3e')]&&_0x1456ea['idField']&&_0x1456ea[_0xe788('0x35')]){_0x1882de[_0x1456ea[_0xe788('0x3d')][_0xe788('0x3e')][_0xe788('0x36')]()]&&_0x52628f['custom_fields'][_0xe788('0x3b')]({'id':_0x1456ea[_0xe788('0x37')],'value':_0x1882de[_0x1456ea[_0xe788('0x3d')][_0xe788('0x3e')][_0xe788('0x36')]()]['toString']()});}});}return _0x52628f;}exports[_0xe788('0x3f')]=function(_0x496d12,_0x284dd7,_0x2e929f,_0x5a4981,_0x9c36e6,_0x73769a){var _0x8243df,_0x4dbdc3;_0x73769a['remoteUri']=intUtil[_0xe788('0x40')](_0x73769a['remoteUri']);_0x73769a[_0xe788('0x41')]=intUtil['stripTrailingSlash'](_0x73769a['serverUrl']);if(_0x9c36e6&&_0x9c36e6[_0xe788('0x42')]){logger['info']('[QUEUE]',_0xe788('0x43'));_0x284dd7[_0xe788('0x44')]=util[_0xe788('0xf')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x73769a[_0xe788('0x41')],_0x284dd7[_0xe788('0x45')],md5(_0x284dd7[_0xe788('0x45')]));}else{_0x284dd7[_0xe788('0x44')]='';}headers['Authorization']=getAuth(_0x73769a);return getUser(_0x73769a,_0x5a4981[_0xe788('0x22')])[_0xe788('0x1b')](function(_0x5f59f7){_0x8243df=_0x5f59f7;logger[_0xe788('0xc')](_0xe788('0x46'),_0x8243df['id']);return getEndUser(_0x73769a,_0x284dd7['calleridname'],_0x284dd7['calleridnum']);})['then'](function(_0x51a67a){_0x4dbdc3=_0x51a67a;logger[_0xe788('0xc')](_0xe788('0x47'),_0x4dbdc3['id']);return getTicket(_0x73769a,_0x8243df,_0x4dbdc3,_0x2e929f,_0x284dd7);})[_0xe788('0x1b')](function(_0x316693){if(_0x316693&&_0x316693['id']){logger[_0xe788('0xc')](_0xe788('0x1c'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x316693['id']);logger['info'](_0xe788('0x48'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0xe788('0x49'),_0x5a4981[_0xe788('0x3e')]),'trigger:browser:url',{'uri':util[_0xe788('0xf')]('%s/helpdesk/tickets/%d',_0x73769a[_0xe788('0x1a')],_0x316693['id'])});}})[_0xe788('0x4a')](function(_0x367c8f){logger[_0xe788('0x4b')]('[QUEUE]',JSON[_0xe788('0x4c')](_0x367c8f));});};exports[_0xe788('0x4d')]=function(_0x4daaa7,_0x3c375a,_0xe97551,_0x29ccbe,_0x1b687c,_0x2ad634,_0x482cb3){var _0x5763eb,_0x116a04;_0x2ad634['remoteUri']=intUtil[_0xe788('0x40')](_0x2ad634[_0xe788('0x1a')]);_0x2ad634[_0xe788('0x41')]=intUtil[_0xe788('0x40')](_0x2ad634[_0xe788('0x41')]);if(_0x482cb3&&_0x482cb3[_0xe788('0x4e')]&&_0x482cb3[_0xe788('0x4e')]!==_0xe788('0x4f')){logger['info'](_0xe788('0x50'),'Recording\x20is\x20enabled!');_0x3c375a['recordingURL']=util[_0xe788('0xf')](_0xe788('0x51'),_0x2ad634['serverUrl'],_0x3c375a[_0xe788('0x45')],md5(_0x3c375a[_0xe788('0x45')]));}headers['Authorization']=getAuth(_0x2ad634);return getUser(_0x2ad634,_0x29ccbe[_0xe788('0x22')])[_0xe788('0x1b')](function(_0xd49dab){_0x5763eb=_0xd49dab;logger[_0xe788('0xc')](_0xe788('0x46'),_0x5763eb['id']);return getEndUser(_0x2ad634,_0x3c375a[_0xe788('0x52')],_0x3c375a[_0xe788('0x53')]);})['then'](function(_0x1fc85e){_0x116a04=_0x1fc85e;logger[_0xe788('0xc')](_0xe788('0x47'),_0x116a04['id']);return getTicket(_0x2ad634,_0x5763eb,_0x116a04,_0xe97551,_0x3c375a);})['then'](function(_0x51f02c){if(_0x51f02c&&_0x51f02c['id']){logger[_0xe788('0xc')](_0xe788('0x1c'));logger[_0xe788('0xc')](_0xe788('0x54'),_0x51f02c['id']);logger[_0xe788('0xc')]('[OUTBOUND]',_0xe788('0x55'));emit(util[_0xe788('0xf')]('user:%s',_0x29ccbe[_0xe788('0x3e')]),_0xe788('0x56'),{'uri':util[_0xe788('0xf')](_0xe788('0x57'),_0x2ad634[_0xe788('0x1a')],_0x51f02c['id'])});}})['catch'](function(_0x496ac4){logger['error'](_0xe788('0x50'),JSON['stringify'](_0x496ac4));});};exports['unmanaged']=function(_0x13e858,_0x3dea04,_0x240e4d,_0x49bfad,_0xa897f9,_0x476c13){var _0x46a3a4,_0x2965a6;_0x476c13[_0xe788('0x1a')]=intUtil[_0xe788('0x40')](_0x476c13[_0xe788('0x1a')]);_0x476c13[_0xe788('0x41')]=intUtil[_0xe788('0x40')](_0x476c13['serverUrl']);if(_0xa897f9&&_0xa897f9[_0xe788('0x42')]){logger[_0xe788('0xc')]('['+_0x3dea04['lastevent'][_0xe788('0x58')]()+']',_0xe788('0x43'));_0x3dea04['recordingURL']=util[_0xe788('0xf')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x476c13[_0xe788('0x41')],_0x3dea04[_0xe788('0x45')],md5(_0x3dea04['uniqueid']));}else{_0x3dea04[_0xe788('0x44')]='';}headers[_0xe788('0x59')]=getAuth(_0x476c13);return getUser(_0x476c13,'')[_0xe788('0x1b')](function(_0x424751){_0x46a3a4=_0x424751;logger[_0xe788('0xc')]('The\x20User\x20ID\x20is:',_0x46a3a4['id']);return getEndUser(_0x476c13,_0x3dea04['calleridname'],_0x3dea04[_0xe788('0x12')]);})['then'](function(_0x325437){_0x2965a6=_0x325437;logger[_0xe788('0xc')](_0xe788('0x47'),_0x2965a6['id']);return getTicket(_0x476c13,_0x46a3a4,_0x2965a6,_0x240e4d,_0x3dea04);})[_0xe788('0x1b')](function(_0x183564){if(_0x183564){logger[_0xe788('0xc')]('Ticket\x20created!');logger[_0xe788('0xc')]('The\x20Ticket\x20ID\x20is:',_0x183564['id']);}})[_0xe788('0x4a')](function(_0x2e2e8a){logger[_0xe788('0x4b')]('['+_0x3dea04[_0xe788('0x5a')]['toUpperCase']()+']',JSON[_0xe788('0x4c')](_0x2e2e8a));});};