Built motion from commit (unavailable).|2.5.11
[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 _0x5c9e=['Variable','toLowerCase','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','error','outbound','recordingFormat','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','catch','lastevent','toUpperCase','util','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','Tags','name','Fields','custom_fields','mapValues','keyBy','value','%s/api/v2/tickets','then','Ticket\x20created!','validateEmail','remoteUri','length','Agent\x20found!','find','contact','%s/api/v2/agents/me','Admin\x20account\x20selected.','Enduser\x20found!','%s/api/v2/contacts','POST','Enduser\x20created.','apiKey','toString','debug','stringify','GET','map','forEach','string','customField','content','type','idField','push','variable','variableName'];(function(_0x8f6927,_0x4c623c){var _0x233281=function(_0x36d311){while(--_0x36d311){_0x8f6927['push'](_0x8f6927['shift']());}};_0x233281(++_0x4c623c);}(_0x5c9e,0x1cf));var _0xe5c9=function(_0x2a4e92,_0x2c4a4a){_0x2a4e92=_0x2a4e92-0x0;var _0x1dee75=_0x5c9e[_0x2a4e92];return _0x1dee75;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require('md5');var util=require(_0xe5c9('0x0'));var Redis=require('ioredis');var intUtil=require(_0xe5c9('0x1'));var config=require(_0xe5c9('0x2'));var logger=require(_0xe5c9('0x3'))(_0xe5c9('0x4'));config[_0xe5c9('0x5')]=_[_0xe5c9('0x6')](config['redis'],{'host':_0xe5c9('0x7'),'port':0x18eb});var io=require(_0xe5c9('0x8'))(new Redis(config[_0xe5c9('0x5')]));var headers={'Content-Type':'application/json','Accept':_0xe5c9('0x9')};function emit(_0x306f40,_0x1bf441,_0x335fb0){io['to'](_0x306f40)[_0xe5c9('0xa')](_0x1bf441,_0x335fb0);}function getTicket(_0x4f7cd5,_0x540da6,_0x3aca59,_0x11662e,_0x2477ea){logger[_0xe5c9('0xb')](_0xe5c9('0xc'));var _0x536e7f=_[_0xe5c9('0xd')]({'responder_id':_0x540da6['id'],'requester_id':_0x3aca59['id'],'name':util[_0xe5c9('0xe')](_0xe5c9('0xf'),_0x2477ea[_0xe5c9('0x10')]),'phone':_0x2477ea[_0xe5c9('0x11')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xe5c9('0x12')](_0x11662e[_0xe5c9('0x13')],_0x2477ea,'\x20'),'description':intUtil[_0xe5c9('0x12')](_0x11662e[_0xe5c9('0x14')],_0x2477ea,_0xe5c9('0x15')),'tags':getTags(_0x11662e[_0xe5c9('0x16')],_0xe5c9('0x17'))},getCustomFields(_0x11662e[_0xe5c9('0x18')],_0x2477ea));_0x536e7f[_0xe5c9('0x19')]=_[_0xe5c9('0x1a')](_[_0xe5c9('0x1b')](_0x536e7f[_0xe5c9('0x19')],'id'),_0xe5c9('0x1c'));return request({'uri':util['format'](_0xe5c9('0x1d'),_0x4f7cd5['remoteUri']),'method':'POST','body':_0x536e7f})[_0xe5c9('0x1e')](function(_0x10bdc2){logger['info'](_0xe5c9('0x1f'));return _0x10bdc2;});}function getUser(_0x46303a,_0x2478ec){if(intUtil[_0xe5c9('0x20')](_0x2478ec)){return request({'uri':util[_0xe5c9('0xe')]('%s/api/v2/agents',_0x46303a[_0xe5c9('0x21')]),'qs':{'email':_0x2478ec}})[_0xe5c9('0x1e')](function(_0x3362fb){if(_0x3362fb[_0xe5c9('0x22')]){logger[_0xe5c9('0xb')](_0xe5c9('0x23'));return _[_0xe5c9('0x24')](_0x3362fb,function(_0x2d46f0){return _0x2d46f0[_0xe5c9('0x25')]['email']===_0x2478ec;});}else{logger[_0xe5c9('0xb')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0xe5c9('0x26'),_0x46303a[_0xe5c9('0x21')])})['then'](function(_0x22f0ee){logger[_0xe5c9('0xb')]('Admin\x20account\x20selected.');return _0x22f0ee;});}});}else{logger[_0xe5c9('0xb')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xe5c9('0xe')](_0xe5c9('0x26'),_0x46303a[_0xe5c9('0x21')])})[_0xe5c9('0x1e')](function(_0x1225ee){logger[_0xe5c9('0xb')](_0xe5c9('0x27'));return _0x1225ee;});}}function getEndUser(_0x2d44ff,_0x29ebbd,_0x1f8aac){logger[_0xe5c9('0xb')]('Searching\x20enduser\x20with\x20phone',_0x1f8aac);return request({'uri':util[_0xe5c9('0xe')]('%s/api/v2/contacts',_0x2d44ff[_0xe5c9('0x21')]),'qs':{'phone':_0x1f8aac}})[_0xe5c9('0x1e')](function(_0x15e319){if(_0x15e319[_0xe5c9('0x22')]){logger[_0xe5c9('0xb')](_0xe5c9('0x28'));return _['find'](_0x15e319,{'phone':_0x1f8aac});}else{logger[_0xe5c9('0xb')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xe5c9('0xe')](_0xe5c9('0x29'),_0x2d44ff['remoteUri']),'method':_0xe5c9('0x2a'),'body':{'name':_0x29ebbd,'phone':_0x1f8aac}})[_0xe5c9('0x1e')](function(_0x388353){logger[_0xe5c9('0xb')](_0xe5c9('0x2b'));return _0x388353;});}});}function getAuth(_0x1b0231){return util[_0xe5c9('0xe')]('Basic\x20%s',new Buffer(_0x1b0231[_0xe5c9('0x2c')]+':X')[_0xe5c9('0x2d')]('base64'));}function request(_0x29e07a){logger[_0xe5c9('0x2e')]('[HTTP]',JSON[_0xe5c9('0x2f')](_0x29e07a));return rp(_[_0xe5c9('0x6')](_0x29e07a,{'method':_0xe5c9('0x30'),'headers':headers,'json':!![]}));}function getTags(_0x5294a2,_0x357984){var _0x5f01dc=[];if(_0x5294a2&&_0x5294a2[_0xe5c9('0x22')]>0x0){_0x5f01dc=_[_0xe5c9('0x31')](_0x5294a2,_0x357984);}return _0x5f01dc;}function getCustomFields(_0x17b974,_0x430a21){var _0x5d92b3=[];var _0x401d5f={'custom_fields':[]};if(_0x17b974[_0xe5c9('0x22')]>0x0){_[_0xe5c9('0x32')](_0x17b974,function(_0x1c48b5){if(_0x1c48b5['type']===_0xe5c9('0x33')&&_0x1c48b5['nameField']&&!_0x1c48b5[_0xe5c9('0x34')]){_0x401d5f[_0x1c48b5['nameField']['toLowerCase']()]=_0x1c48b5[_0xe5c9('0x35')]['toString']();}else if(_0x1c48b5[_0xe5c9('0x36')]===_0xe5c9('0x33')&&_0x1c48b5[_0xe5c9('0x37')]&&_0x1c48b5['customField']){_0x401d5f[_0xe5c9('0x19')][_0xe5c9('0x38')]({'id':_0x1c48b5[_0xe5c9('0x37')],'value':_0x1c48b5[_0xe5c9('0x35')][_0xe5c9('0x2d')]()});}else if(_0x1c48b5[_0xe5c9('0x36')]===_0xe5c9('0x39')&&_0x1c48b5['variableName']&&_0x1c48b5[_0xe5c9('0x37')]&&_0x1c48b5[_0xe5c9('0x34')]){_0x430a21[_0x1c48b5[_0xe5c9('0x3a')]]&&_0x401d5f['custom_fields'][_0xe5c9('0x38')]({'id':_0x1c48b5[_0xe5c9('0x37')],'value':_0x430a21[_0x1c48b5[_0xe5c9('0x3a')]][_0xe5c9('0x2d')]()});}else if(_0x1c48b5[_0xe5c9('0x36')]==='customVariable'&&_0x1c48b5[_0xe5c9('0x3b')]&&_0x1c48b5['Variable'][_0xe5c9('0x17')]&&_0x1c48b5[_0xe5c9('0x37')]&&_0x1c48b5[_0xe5c9('0x34')]){_0x430a21[_0x1c48b5['Variable'][_0xe5c9('0x17')][_0xe5c9('0x3c')]()]&&_0x401d5f['custom_fields'][_0xe5c9('0x38')]({'id':_0x1c48b5['idField'],'value':_0x430a21[_0x1c48b5[_0xe5c9('0x3b')][_0xe5c9('0x17')][_0xe5c9('0x3c')]()][_0xe5c9('0x2d')]()});}});}return _0x401d5f;}exports['queue']=function(_0x52fc22,_0x2e709c,_0x527cdc,_0x4b33a3,_0xba4a51,_0x6aec14){var _0x285bf8,_0x255d5d;_0x6aec14[_0xe5c9('0x21')]=intUtil['stripTrailingSlash'](_0x6aec14[_0xe5c9('0x21')]);_0x6aec14[_0xe5c9('0x3d')]=intUtil[_0xe5c9('0x3e')](_0x6aec14[_0xe5c9('0x3d')]);if(_0xba4a51&&_0xba4a51[_0xe5c9('0x3f')]){logger[_0xe5c9('0xb')](_0xe5c9('0x40'),_0xe5c9('0x41'));_0x2e709c[_0xe5c9('0x42')]=util[_0xe5c9('0xe')](_0xe5c9('0x43'),_0x6aec14[_0xe5c9('0x3d')],_0x2e709c[_0xe5c9('0x44')],md5(_0x2e709c['uniqueid']));}else{_0x2e709c[_0xe5c9('0x42')]='';}headers[_0xe5c9('0x45')]=getAuth(_0x6aec14);return getUser(_0x6aec14,_0x4b33a3[_0xe5c9('0x46')])[_0xe5c9('0x1e')](function(_0x38ab5e){_0x285bf8=_0x38ab5e;logger[_0xe5c9('0xb')]('The\x20User\x20ID\x20is:',_0x285bf8['id']);return getEndUser(_0x6aec14,_0x2e709c[_0xe5c9('0x10')],_0x2e709c[_0xe5c9('0x11')]);})[_0xe5c9('0x1e')](function(_0x2013a1){_0x255d5d=_0x2013a1;logger[_0xe5c9('0xb')](_0xe5c9('0x47'),_0x255d5d['id']);return getTicket(_0x6aec14,_0x285bf8,_0x255d5d,_0x527cdc,_0x2e709c);})['then'](function(_0x5357ba){if(_0x5357ba&&_0x5357ba['id']){logger[_0xe5c9('0xb')](_0xe5c9('0x1f'));logger[_0xe5c9('0xb')](_0xe5c9('0x48'),_0x5357ba['id']);logger[_0xe5c9('0xb')](_0xe5c9('0x40'),_0xe5c9('0x49'));emit(util['format'](_0xe5c9('0x4a'),_0x4b33a3['name']),_0xe5c9('0x4b'),{'uri':util[_0xe5c9('0xe')](_0xe5c9('0x4c'),_0x6aec14['remoteUri'],_0x5357ba['id'])});}})['catch'](function(_0x2a5b67){logger[_0xe5c9('0x4d')](_0xe5c9('0x40'),JSON[_0xe5c9('0x2f')](_0x2a5b67));});};exports[_0xe5c9('0x4e')]=function(_0x294f11,_0x47c7c5,_0x592851,_0x1a1cc9,_0x22755b,_0x4215e7,_0x115e9c){var _0x176297,_0x22c639;_0x4215e7[_0xe5c9('0x21')]=intUtil[_0xe5c9('0x3e')](_0x4215e7[_0xe5c9('0x21')]);_0x4215e7['serverUrl']=intUtil[_0xe5c9('0x3e')](_0x4215e7[_0xe5c9('0x3d')]);if(_0x115e9c&&_0x115e9c[_0xe5c9('0x4f')]&&_0x115e9c[_0xe5c9('0x4f')]!=='none'){logger['info'](_0xe5c9('0x50'),_0xe5c9('0x41'));_0x47c7c5[_0xe5c9('0x42')]=util[_0xe5c9('0xe')](_0xe5c9('0x43'),_0x4215e7[_0xe5c9('0x3d')],_0x47c7c5[_0xe5c9('0x44')],md5(_0x47c7c5[_0xe5c9('0x44')]));}headers['Authorization']=getAuth(_0x4215e7);return getUser(_0x4215e7,_0x1a1cc9['email'])[_0xe5c9('0x1e')](function(_0x3db557){_0x176297=_0x3db557;logger[_0xe5c9('0xb')](_0xe5c9('0x51'),_0x176297['id']);return getEndUser(_0x4215e7,_0x47c7c5[_0xe5c9('0x52')],_0x47c7c5[_0xe5c9('0x53')]);})[_0xe5c9('0x1e')](function(_0x208fb3){_0x22c639=_0x208fb3;logger['info'](_0xe5c9('0x47'),_0x22c639['id']);return getTicket(_0x4215e7,_0x176297,_0x22c639,_0x592851,_0x47c7c5);})['then'](function(_0x4680f4){if(_0x4680f4&&_0x4680f4['id']){logger[_0xe5c9('0xb')](_0xe5c9('0x1f'));logger['info'](_0xe5c9('0x48'),_0x4680f4['id']);logger[_0xe5c9('0xb')](_0xe5c9('0x50'),_0xe5c9('0x49'));emit(util[_0xe5c9('0xe')]('user:%s',_0x1a1cc9['name']),_0xe5c9('0x4b'),{'uri':util[_0xe5c9('0xe')]('%s/helpdesk/tickets/%d',_0x4215e7[_0xe5c9('0x21')],_0x4680f4['id'])});}})[_0xe5c9('0x54')](function(_0x3ed16d){logger['error']('[OUTBOUND]',JSON['stringify'](_0x3ed16d));});};exports['unmanaged']=function(_0x223ab5,_0xdad5e5,_0xa4f402,_0x939162,_0x279694,_0x25117f){var _0x4962bb,_0x42ae68;_0x25117f[_0xe5c9('0x21')]=intUtil[_0xe5c9('0x3e')](_0x25117f[_0xe5c9('0x21')]);_0x25117f['serverUrl']=intUtil['stripTrailingSlash'](_0x25117f[_0xe5c9('0x3d')]);if(_0x279694&&_0x279694[_0xe5c9('0x3f')]){logger[_0xe5c9('0xb')]('['+_0xdad5e5['lastevent']['toUpperCase']()+']',_0xe5c9('0x41'));_0xdad5e5[_0xe5c9('0x42')]=util[_0xe5c9('0xe')](_0xe5c9('0x43'),_0x25117f[_0xe5c9('0x3d')],_0xdad5e5[_0xe5c9('0x44')],md5(_0xdad5e5[_0xe5c9('0x44')]));}else{_0xdad5e5[_0xe5c9('0x42')]='';}headers[_0xe5c9('0x45')]=getAuth(_0x25117f);return getUser(_0x25117f,'')[_0xe5c9('0x1e')](function(_0x25c8a2){_0x4962bb=_0x25c8a2;logger['info'](_0xe5c9('0x51'),_0x4962bb['id']);return getEndUser(_0x25117f,_0xdad5e5[_0xe5c9('0x10')],_0xdad5e5[_0xe5c9('0x11')]);})['then'](function(_0x5ca753){_0x42ae68=_0x5ca753;logger[_0xe5c9('0xb')](_0xe5c9('0x47'),_0x42ae68['id']);return getTicket(_0x25117f,_0x4962bb,_0x42ae68,_0xa4f402,_0xdad5e5);})['then'](function(_0x973e47){if(_0x973e47){logger['info'](_0xe5c9('0x1f'));logger[_0xe5c9('0xb')](_0xe5c9('0x48'),_0x973e47['id']);}})[_0xe5c9('0x54')](function(_0x23c52e){logger[_0xe5c9('0x4d')]('['+_0xdad5e5[_0xe5c9('0x55')][_0xe5c9('0x56')]()+']',JSON[_0xe5c9('0x2f')](_0x23c52e));});};