Built motion from commit (unavailable).|2.5.28
[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 _0x641b=['Authorization','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/helpdesk/tickets/%d','recordingFormat','none','[OUTBOUND]','trigger:browser:url','catch','error','unmanaged','toUpperCase','lodash','md5','util','ioredis','./util','../../../../config/logger','freshdesk','redis','localhost','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','Caller\x20-\x20%s','calleridname','getString','Descriptions','Fields','custom_fields','mapValues','keyBy','%s/api/v2/tickets','POST','then','validateEmail','format','remoteUri','Agent\x20found!','find','contact','email','%s/api/v2/agents/me','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','length','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','base64','debug','[HTTP]','stringify','defaults','map','forEach','string','picklist','type','nameField','customField','toLowerCase','content','toString','includes','idField','push','variable','variableName','customVariable','Variable','name','queue','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid'];(function(_0x5cb6b3,_0x4d8ada){var _0x2bed40=function(_0x560c87){while(--_0x560c87){_0x5cb6b3['push'](_0x5cb6b3['shift']());}};_0x2bed40(++_0x4d8ada);}(_0x641b,0xca));var _0xb641=function(_0x12110d,_0x5a6f83){_0x12110d=_0x12110d-0x0;var _0xebda5=_0x641b[_0x12110d];return _0xebda5;};'use strict';var _=require(_0xb641('0x0'));var rp=require('request-promise');var md5=require(_0xb641('0x1'));var util=require(_0xb641('0x2'));var Redis=require(_0xb641('0x3'));var intUtil=require(_0xb641('0x4'));var config=require('../../../../config/environment');var logger=require(_0xb641('0x5'))(_0xb641('0x6'));config['redis']=_['defaults'](config[_0xb641('0x7')],{'host':_0xb641('0x8'),'port':0x18eb});var io=require(_0xb641('0x9'))(new Redis(config[_0xb641('0x7')]));var headers={'Content-Type':_0xb641('0xa'),'Accept':_0xb641('0xa')};function emit(_0x1b21f5,_0x185790,_0x5ea0f2){io['to'](_0x1b21f5)[_0xb641('0xb')](_0x185790,_0x5ea0f2);}function getTicket(_0x2dbdba,_0x3f3c32,_0x4e7ee4,_0x3f1597,_0x30d931){logger[_0xb641('0xc')](_0xb641('0xd'));var _0x1302ce=_['merge']({'responder_id':_0x3f3c32['id'],'requester_id':_0x4e7ee4['id'],'name':util['format'](_0xb641('0xe'),_0x30d931[_0xb641('0xf')]),'phone':_0x30d931['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xb641('0x10')](_0x3f1597['Subjects'],_0x30d931,'\x20'),'description':intUtil[_0xb641('0x10')](_0x3f1597[_0xb641('0x11')],_0x30d931,'<br>'),'tags':getTags(_0x3f1597['Tags'],'name')},getCustomFields(_0x3f1597[_0xb641('0x12')],_0x30d931));_0x1302ce[_0xb641('0x13')]=_[_0xb641('0x14')](_[_0xb641('0x15')](_0x1302ce[_0xb641('0x13')],'id'),'value');return request({'uri':util['format'](_0xb641('0x16'),_0x2dbdba['remoteUri']),'method':_0xb641('0x17'),'body':_0x1302ce})[_0xb641('0x18')](function(_0x39886c){logger[_0xb641('0xc')]('Ticket\x20created!');return _0x39886c;});}function getUser(_0x538a8e,_0x329a55){if(intUtil[_0xb641('0x19')](_0x329a55)){return request({'uri':util[_0xb641('0x1a')]('%s/api/v2/agents',_0x538a8e[_0xb641('0x1b')]),'qs':{'email':_0x329a55}})['then'](function(_0x4d520c){if(_0x4d520c['length']){logger[_0xb641('0xc')](_0xb641('0x1c'));return _[_0xb641('0x1d')](_0x4d520c,function(_0x5e1c7d){return _0x5e1c7d[_0xb641('0x1e')][_0xb641('0x1f')]===_0x329a55;});}else{logger[_0xb641('0xc')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xb641('0x1a')](_0xb641('0x20'),_0x538a8e[_0xb641('0x1b')])})['then'](function(_0xd99d27){logger['info']('Admin\x20account\x20selected.');return _0xd99d27;});}});}else{logger[_0xb641('0xc')](_0xb641('0x21'));return request({'uri':util[_0xb641('0x1a')](_0xb641('0x20'),_0x538a8e[_0xb641('0x1b')])})['then'](function(_0x540b63){logger[_0xb641('0xc')](_0xb641('0x22'));return _0x540b63;});}}function getEndUser(_0xaf6deb,_0x3e3f46,_0x378169){logger[_0xb641('0xc')](_0xb641('0x23'),_0x378169);return request({'uri':util[_0xb641('0x1a')](_0xb641('0x24'),_0xaf6deb[_0xb641('0x1b')]),'qs':{'phone':_0x378169}})[_0xb641('0x18')](function(_0x360185){if(_0x360185[_0xb641('0x25')]){logger['info'](_0xb641('0x26'));return _[_0xb641('0x1d')](_0x360185,{'phone':_0x378169});}else{logger[_0xb641('0xc')](_0xb641('0x27'));return request({'uri':util[_0xb641('0x1a')](_0xb641('0x24'),_0xaf6deb['remoteUri']),'method':_0xb641('0x17'),'body':{'name':_0x3e3f46,'phone':_0x378169}})[_0xb641('0x18')](function(_0x1e1b21){logger[_0xb641('0xc')](_0xb641('0x28'));return _0x1e1b21;});}});}function getAuth(_0x186176){return util[_0xb641('0x1a')](_0xb641('0x29'),new Buffer(_0x186176[_0xb641('0x2a')]+':X')['toString'](_0xb641('0x2b')));}function request(_0x5bba80){logger[_0xb641('0x2c')](_0xb641('0x2d'),JSON[_0xb641('0x2e')](_0x5bba80));return rp(_[_0xb641('0x2f')](_0x5bba80,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x3a9f7a,_0x517bbe){var _0x2ffde4=[];if(_0x3a9f7a&&_0x3a9f7a[_0xb641('0x25')]>0x0){_0x2ffde4=_[_0xb641('0x30')](_0x3a9f7a,_0x517bbe);}return _0x2ffde4;}function getCustomFields(_0x3512f7,_0x3d5112){var _0x5dbdc1=[];var _0x2f32b4={'custom_fields':[]};if(_0x3512f7[_0xb641('0x25')]>0x0){_[_0xb641('0x31')](_0x3512f7,function(_0x243818){if(_['includes']([_0xb641('0x32'),_0xb641('0x33')],_0x243818[_0xb641('0x34')])&&_0x243818[_0xb641('0x35')]&&!_0x243818[_0xb641('0x36')]){_0x2f32b4[_0x243818[_0xb641('0x35')][_0xb641('0x37')]()]=_0x243818[_0xb641('0x38')][_0xb641('0x39')]();}else if(_[_0xb641('0x3a')]([_0xb641('0x32'),'picklist'],_0x243818[_0xb641('0x34')])&&_0x243818[_0xb641('0x3b')]&&_0x243818[_0xb641('0x36')]){_0x2f32b4['custom_fields'][_0xb641('0x3c')]({'id':_0x243818[_0xb641('0x3b')],'value':_0x243818[_0xb641('0x38')][_0xb641('0x39')]()});}else if(_0x243818[_0xb641('0x34')]===_0xb641('0x3d')&&_0x243818[_0xb641('0x3e')]&&_0x243818['idField']&&_0x243818[_0xb641('0x36')]){_0x3d5112[_0x243818[_0xb641('0x3e')]]&&_0x2f32b4[_0xb641('0x13')]['push']({'id':_0x243818[_0xb641('0x3b')],'value':_0x3d5112[_0x243818['variableName']]['toString']()});}else if(_0x243818[_0xb641('0x34')]===_0xb641('0x3f')&&_0x243818[_0xb641('0x40')]&&_0x243818[_0xb641('0x40')]['name']&&_0x243818[_0xb641('0x3b')]&&_0x243818[_0xb641('0x36')]){_0x3d5112[_0x243818[_0xb641('0x40')][_0xb641('0x41')][_0xb641('0x37')]()]&&_0x2f32b4[_0xb641('0x13')]['push']({'id':_0x243818[_0xb641('0x3b')],'value':_0x3d5112[_0x243818[_0xb641('0x40')]['name'][_0xb641('0x37')]()]['toString']()});}});}return _0x2f32b4;}exports[_0xb641('0x42')]=function(_0x36bbb7,_0x5a41cf,_0x570b98,_0x12f87f,_0x5b1d73,_0x3423c4){var _0x262ffa,_0x299d2a;_0x3423c4[_0xb641('0x1b')]=intUtil[_0xb641('0x43')](_0x3423c4['remoteUri']);_0x3423c4[_0xb641('0x44')]=intUtil[_0xb641('0x43')](_0x3423c4[_0xb641('0x44')]);if(_0x5b1d73&&_0x5b1d73[_0xb641('0x45')]){logger[_0xb641('0xc')]('[QUEUE]',_0xb641('0x46'));_0x5a41cf[_0xb641('0x47')]=util[_0xb641('0x1a')](_0xb641('0x48'),_0x3423c4[_0xb641('0x44')],_0x5a41cf[_0xb641('0x49')],md5(_0x5a41cf[_0xb641('0x49')]));}else{_0x5a41cf[_0xb641('0x47')]='';}headers[_0xb641('0x4a')]=getAuth(_0x3423c4);return getUser(_0x3423c4,_0x12f87f['email'])['then'](function(_0x12682b){_0x262ffa=_0x12682b;logger[_0xb641('0xc')](_0xb641('0x4b'),_0x262ffa['id']);return getEndUser(_0x3423c4,_0x5a41cf['calleridname'],_0x5a41cf[_0xb641('0x4c')]);})[_0xb641('0x18')](function(_0x4aafba){_0x299d2a=_0x4aafba;logger['info'](_0xb641('0x4d'),_0x299d2a['id']);return getTicket(_0x3423c4,_0x262ffa,_0x299d2a,_0x570b98,_0x5a41cf);})['then'](function(_0x23c30e){if(_0x23c30e&&_0x23c30e['id']){logger[_0xb641('0xc')](_0xb641('0x4e'));logger[_0xb641('0xc')](_0xb641('0x4f'),_0x23c30e['id']);logger[_0xb641('0xc')](_0xb641('0x50'),_0xb641('0x51'));emit(util[_0xb641('0x1a')](_0xb641('0x52'),_0x12f87f['name']),'trigger:browser:url',{'uri':util[_0xb641('0x1a')](_0xb641('0x53'),_0x3423c4[_0xb641('0x1b')],_0x23c30e['id'])});}})['catch'](function(_0x3eb4fb){logger['error'](_0xb641('0x50'),JSON[_0xb641('0x2e')](_0x3eb4fb));});};exports['outbound']=function(_0x161b7b,_0x37069b,_0x196243,_0x284d61,_0x4558df,_0x21e094,_0x192a35){var _0x232256,_0x48949b;_0x21e094[_0xb641('0x1b')]=intUtil[_0xb641('0x43')](_0x21e094[_0xb641('0x1b')]);_0x21e094[_0xb641('0x44')]=intUtil[_0xb641('0x43')](_0x21e094[_0xb641('0x44')]);if(_0x192a35&&_0x192a35[_0xb641('0x54')]&&_0x192a35[_0xb641('0x54')]!==_0xb641('0x55')){logger[_0xb641('0xc')](_0xb641('0x56'),_0xb641('0x46'));_0x37069b[_0xb641('0x47')]=util[_0xb641('0x1a')](_0xb641('0x48'),_0x21e094[_0xb641('0x44')],_0x37069b['uniqueid'],md5(_0x37069b[_0xb641('0x49')]));}headers[_0xb641('0x4a')]=getAuth(_0x21e094);return getUser(_0x21e094,_0x284d61['email'])[_0xb641('0x18')](function(_0xb3e49e){_0x232256=_0xb3e49e;logger[_0xb641('0xc')](_0xb641('0x4b'),_0x232256['id']);return getEndUser(_0x21e094,_0x37069b['destcalleridname'],_0x37069b['destcalleridnum']);})[_0xb641('0x18')](function(_0x43d150){_0x48949b=_0x43d150;logger[_0xb641('0xc')](_0xb641('0x4d'),_0x48949b['id']);return getTicket(_0x21e094,_0x232256,_0x48949b,_0x196243,_0x37069b);})[_0xb641('0x18')](function(_0x27ce49){if(_0x27ce49&&_0x27ce49['id']){logger[_0xb641('0xc')](_0xb641('0x4e'));logger[_0xb641('0xc')](_0xb641('0x4f'),_0x27ce49['id']);logger[_0xb641('0xc')](_0xb641('0x56'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xb641('0x1a')](_0xb641('0x52'),_0x284d61[_0xb641('0x41')]),_0xb641('0x57'),{'uri':util[_0xb641('0x1a')]('%s/helpdesk/tickets/%d',_0x21e094[_0xb641('0x1b')],_0x27ce49['id'])});}})[_0xb641('0x58')](function(_0x1df0fe){logger[_0xb641('0x59')](_0xb641('0x56'),JSON[_0xb641('0x2e')](_0x1df0fe));});};exports[_0xb641('0x5a')]=function(_0x2c6779,_0x1b7487,_0x512c89,_0x5af3f5,_0x4ca2f0,_0x3fa0f1){var _0x26ff03,_0x432366;_0x3fa0f1['remoteUri']=intUtil[_0xb641('0x43')](_0x3fa0f1[_0xb641('0x1b')]);_0x3fa0f1[_0xb641('0x44')]=intUtil[_0xb641('0x43')](_0x3fa0f1[_0xb641('0x44')]);if(_0x4ca2f0&&_0x4ca2f0[_0xb641('0x45')]){logger['info']('['+_0x1b7487['lastevent'][_0xb641('0x5b')]()+']',_0xb641('0x46'));_0x1b7487[_0xb641('0x47')]=util[_0xb641('0x1a')](_0xb641('0x48'),_0x3fa0f1[_0xb641('0x44')],_0x1b7487[_0xb641('0x49')],md5(_0x1b7487[_0xb641('0x49')]));}else{_0x1b7487[_0xb641('0x47')]='';}headers['Authorization']=getAuth(_0x3fa0f1);return getUser(_0x3fa0f1,'')[_0xb641('0x18')](function(_0x531f45){_0x26ff03=_0x531f45;logger[_0xb641('0xc')](_0xb641('0x4b'),_0x26ff03['id']);return getEndUser(_0x3fa0f1,_0x1b7487[_0xb641('0xf')],_0x1b7487[_0xb641('0x4c')]);})[_0xb641('0x18')](function(_0x3f62e6){_0x432366=_0x3f62e6;logger[_0xb641('0xc')](_0xb641('0x4d'),_0x432366['id']);return getTicket(_0x3fa0f1,_0x26ff03,_0x432366,_0x512c89,_0x1b7487);})[_0xb641('0x18')](function(_0x5bb1a8){if(_0x5bb1a8){logger[_0xb641('0xc')](_0xb641('0x4e'));logger[_0xb641('0xc')]('The\x20Ticket\x20ID\x20is:',_0x5bb1a8['id']);}})[_0xb641('0x58')](function(_0x322b6b){logger[_0xb641('0x59')]('['+_0x1b7487['lastevent']['toUpperCase']()+']',JSON['stringify'](_0x322b6b));});};