Built motion from commit (unavailable).|2.5.8
[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 _0x92c8=['Recording\x20is\x20enabled!','uniqueid','recordingURL','Authorization','The\x20User\x20ID\x20is:','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','recordingFormat','none','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridnum','[OUTBOUND]','catch','unmanaged','lastevent','toUpperCase','lodash','md5','util','./util','../../../../config/logger','freshdesk','redis','localhost','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','Subjects','getString','Descriptions','<br>','Tags','name','Fields','custom_fields','mapValues','keyBy','value','%s/api/v2/tickets','POST','Ticket\x20created!','validateEmail','%s/api/v2/agents','then','length','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','remoteUri','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','%s/api/v2/contacts','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','base64','debug','[HTTP]','stringify','defaults','forEach','type','string','customField','toLowerCase','content','toString','idField','variable','variableName','push','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]'];(function(_0x3b31b0,_0x350e26){var _0x395005=function(_0x217d64){while(--_0x217d64){_0x3b31b0['push'](_0x3b31b0['shift']());}};_0x395005(++_0x350e26);}(_0x92c8,0x1e6));var _0x892c=function(_0x511e9a,_0x5e355b){_0x511e9a=_0x511e9a-0x0;var _0x23ad78=_0x92c8[_0x511e9a];return _0x23ad78;};'use strict';var _=require(_0x892c('0x0'));var rp=require('request-promise');var md5=require(_0x892c('0x1'));var util=require(_0x892c('0x2'));var Redis=require('ioredis');var intUtil=require(_0x892c('0x3'));var config=require('../../../../config/environment');var logger=require(_0x892c('0x4'))(_0x892c('0x5'));config[_0x892c('0x6')]=_['defaults'](config[_0x892c('0x6')],{'host':_0x892c('0x7'),'port':0x18eb});var io=require(_0x892c('0x8'))(new Redis(config[_0x892c('0x6')]));var headers={'Content-Type':_0x892c('0x9'),'Accept':_0x892c('0x9')};function emit(_0x434fd9,_0x1645ff,_0x4248a8){io['to'](_0x434fd9)[_0x892c('0xa')](_0x1645ff,_0x4248a8);}function getTicket(_0x5720a7,_0x20ab9f,_0x1072e7,_0x5236dd,_0x58e99f){logger[_0x892c('0xb')](_0x892c('0xc'));var _0x427067=_[_0x892c('0xd')]({'responder_id':_0x20ab9f['id'],'requester_id':_0x1072e7['id'],'name':util[_0x892c('0xe')](_0x892c('0xf'),_0x58e99f[_0x892c('0x10')]),'phone':_0x58e99f[_0x892c('0x11')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x5236dd[_0x892c('0x12')],_0x58e99f,'\x20'),'description':intUtil[_0x892c('0x13')](_0x5236dd[_0x892c('0x14')],_0x58e99f,_0x892c('0x15')),'tags':getTags(_0x5236dd[_0x892c('0x16')],_0x892c('0x17'))},getCustomFields(_0x5236dd[_0x892c('0x18')],_0x58e99f));_0x427067[_0x892c('0x19')]=_[_0x892c('0x1a')](_[_0x892c('0x1b')](_0x427067[_0x892c('0x19')],'id'),_0x892c('0x1c'));return request({'uri':util['format'](_0x892c('0x1d'),_0x5720a7['remoteUri']),'method':_0x892c('0x1e'),'body':_0x427067})['then'](function(_0x49a30a){logger['info'](_0x892c('0x1f'));return _0x49a30a;});}function getUser(_0x188f9f,_0x35db91){if(intUtil[_0x892c('0x20')](_0x35db91)){return request({'uri':util['format'](_0x892c('0x21'),_0x188f9f['remoteUri']),'qs':{'email':_0x35db91}})[_0x892c('0x22')](function(_0x678e7a){if(_0x678e7a[_0x892c('0x23')]){logger[_0x892c('0xb')]('Agent\x20found!');return _[_0x892c('0x24')](_0x678e7a,function(_0x312847){return _0x312847[_0x892c('0x25')][_0x892c('0x26')]===_0x35db91;});}else{logger[_0x892c('0xb')](_0x892c('0x27'));return request({'uri':util[_0x892c('0xe')]('%s/api/v2/agents/me',_0x188f9f[_0x892c('0x28')])})['then'](function(_0x159218){logger[_0x892c('0xb')](_0x892c('0x29'));return _0x159218;});}});}else{logger[_0x892c('0xb')](_0x892c('0x2a'));return request({'uri':util['format'](_0x892c('0x2b'),_0x188f9f[_0x892c('0x28')])})['then'](function(_0x110665){logger[_0x892c('0xb')]('Admin\x20account\x20selected.');return _0x110665;});}}function getEndUser(_0x2c84f6,_0xe04c8e,_0x357e3f){logger[_0x892c('0xb')]('Searching\x20enduser\x20with\x20phone',_0x357e3f);return request({'uri':util['format'](_0x892c('0x2c'),_0x2c84f6[_0x892c('0x28')]),'qs':{'phone':_0x357e3f}})[_0x892c('0x22')](function(_0x122032){if(_0x122032[_0x892c('0x23')]){logger[_0x892c('0xb')]('Enduser\x20found!');return _[_0x892c('0x24')](_0x122032,{'phone':_0x357e3f});}else{logger[_0x892c('0xb')](_0x892c('0x2d'));return request({'uri':util[_0x892c('0xe')]('%s/api/v2/contacts',_0x2c84f6[_0x892c('0x28')]),'method':_0x892c('0x1e'),'body':{'name':_0xe04c8e,'phone':_0x357e3f}})[_0x892c('0x22')](function(_0xd1fd85){logger[_0x892c('0xb')](_0x892c('0x2e'));return _0xd1fd85;});}});}function getAuth(_0x4dce90){return util[_0x892c('0xe')](_0x892c('0x2f'),new Buffer(_0x4dce90[_0x892c('0x30')]+':X')['toString'](_0x892c('0x31')));}function request(_0x22f084){logger[_0x892c('0x32')](_0x892c('0x33'),JSON[_0x892c('0x34')](_0x22f084));return rp(_[_0x892c('0x35')](_0x22f084,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x2dd620,_0x2336eb){var _0x40e16f=[];if(_0x2dd620&&_0x2dd620[_0x892c('0x23')]>0x0){_0x40e16f=_['map'](_0x2dd620,_0x2336eb);}return _0x40e16f;}function getCustomFields(_0x1f3742,_0xf76b26){var _0x4de7e3=[];var _0x3477ad={'custom_fields':[]};if(_0x1f3742[_0x892c('0x23')]>0x0){_[_0x892c('0x36')](_0x1f3742,function(_0x4b4717){if(_0x4b4717[_0x892c('0x37')]===_0x892c('0x38')&&_0x4b4717['nameField']&&!_0x4b4717[_0x892c('0x39')]){_0x3477ad[_0x4b4717['nameField'][_0x892c('0x3a')]()]=_0x4b4717[_0x892c('0x3b')][_0x892c('0x3c')]();}else if(_0x4b4717[_0x892c('0x37')]===_0x892c('0x38')&&_0x4b4717[_0x892c('0x3d')]&&_0x4b4717[_0x892c('0x39')]){_0x3477ad[_0x892c('0x19')]['push']({'id':_0x4b4717['idField'],'value':_0x4b4717[_0x892c('0x3b')][_0x892c('0x3c')]()});}else if(_0x4b4717['type']===_0x892c('0x3e')&&_0x4b4717[_0x892c('0x3f')]&&_0x4b4717[_0x892c('0x3d')]&&_0x4b4717['customField']){_0xf76b26[_0x4b4717['variableName']]&&_0x3477ad['custom_fields'][_0x892c('0x40')]({'id':_0x4b4717['idField'],'value':_0xf76b26[_0x4b4717[_0x892c('0x3f')]][_0x892c('0x3c')]()});}else if(_0x4b4717[_0x892c('0x37')]===_0x892c('0x41')&&_0x4b4717['Variable']&&_0x4b4717[_0x892c('0x42')]['name']&&_0x4b4717[_0x892c('0x3d')]&&_0x4b4717[_0x892c('0x39')]){_0xf76b26[_0x4b4717[_0x892c('0x42')][_0x892c('0x17')][_0x892c('0x3a')]()]&&_0x3477ad[_0x892c('0x19')][_0x892c('0x40')]({'id':_0x4b4717[_0x892c('0x3d')],'value':_0xf76b26[_0x4b4717[_0x892c('0x42')][_0x892c('0x17')]['toLowerCase']()][_0x892c('0x3c')]()});}});}return _0x3477ad;}exports[_0x892c('0x43')]=function(_0x3e50da,_0x28efd7,_0x3386b8,_0xc2178e,_0x5f48ba,_0x546774){var _0x596346,_0xbbff04;_0x546774[_0x892c('0x28')]=intUtil[_0x892c('0x44')](_0x546774[_0x892c('0x28')]);_0x546774[_0x892c('0x45')]=intUtil[_0x892c('0x44')](_0x546774[_0x892c('0x45')]);if(_0x5f48ba&&_0x5f48ba[_0x892c('0x46')]){logger[_0x892c('0xb')](_0x892c('0x47'),_0x892c('0x48'));_0x28efd7['recordingURL']=util[_0x892c('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x546774[_0x892c('0x45')],_0x28efd7[_0x892c('0x49')],md5(_0x28efd7[_0x892c('0x49')]));}else{_0x28efd7[_0x892c('0x4a')]='';}headers[_0x892c('0x4b')]=getAuth(_0x546774);return getUser(_0x546774,_0xc2178e[_0x892c('0x26')])[_0x892c('0x22')](function(_0x4bf3f6){_0x596346=_0x4bf3f6;logger[_0x892c('0xb')](_0x892c('0x4c'),_0x596346['id']);return getEndUser(_0x546774,_0x28efd7[_0x892c('0x10')],_0x28efd7[_0x892c('0x11')]);})[_0x892c('0x22')](function(_0xb9daf7){_0xbbff04=_0xb9daf7;logger[_0x892c('0xb')](_0x892c('0x4d'),_0xbbff04['id']);return getTicket(_0x546774,_0x596346,_0xbbff04,_0x3386b8,_0x28efd7);})[_0x892c('0x22')](function(_0x199646){if(_0x199646&&_0x199646['id']){logger[_0x892c('0xb')](_0x892c('0x1f'));logger[_0x892c('0xb')](_0x892c('0x4e'),_0x199646['id']);logger[_0x892c('0xb')](_0x892c('0x47'),_0x892c('0x4f'));emit(util[_0x892c('0xe')](_0x892c('0x50'),_0xc2178e[_0x892c('0x17')]),_0x892c('0x51'),{'uri':util[_0x892c('0xe')](_0x892c('0x52'),_0x546774[_0x892c('0x28')],_0x199646['id'])});}})['catch'](function(_0x3b1264){logger[_0x892c('0x53')]('[QUEUE]',JSON[_0x892c('0x34')](_0x3b1264));});};exports['outbound']=function(_0x4c64d0,_0x4c4316,_0x2d1143,_0x5c9085,_0x1841e5,_0x55e1a5,_0x60ba87){var _0x594814,_0x5ccc0d;_0x55e1a5[_0x892c('0x28')]=intUtil[_0x892c('0x44')](_0x55e1a5[_0x892c('0x28')]);_0x55e1a5[_0x892c('0x45')]=intUtil[_0x892c('0x44')](_0x55e1a5['serverUrl']);if(_0x60ba87&&_0x60ba87[_0x892c('0x54')]&&_0x60ba87[_0x892c('0x54')]!==_0x892c('0x55')){logger[_0x892c('0xb')]('[OUTBOUND]',_0x892c('0x48'));_0x4c4316[_0x892c('0x4a')]=util['format'](_0x892c('0x56'),_0x55e1a5[_0x892c('0x45')],_0x4c4316[_0x892c('0x49')],md5(_0x4c4316[_0x892c('0x49')]));}headers['Authorization']=getAuth(_0x55e1a5);return getUser(_0x55e1a5,_0x5c9085[_0x892c('0x26')])[_0x892c('0x22')](function(_0x3cd7ed){_0x594814=_0x3cd7ed;logger[_0x892c('0xb')]('The\x20User\x20ID\x20is:',_0x594814['id']);return getEndUser(_0x55e1a5,_0x4c4316['destcalleridname'],_0x4c4316[_0x892c('0x57')]);})['then'](function(_0x243224){_0x5ccc0d=_0x243224;logger['info']('The\x20Enduser\x20ID\x20is:',_0x5ccc0d['id']);return getTicket(_0x55e1a5,_0x594814,_0x5ccc0d,_0x2d1143,_0x4c4316);})[_0x892c('0x22')](function(_0x1e67ed){if(_0x1e67ed&&_0x1e67ed['id']){logger[_0x892c('0xb')](_0x892c('0x1f'));logger[_0x892c('0xb')]('The\x20Ticket\x20ID\x20is:',_0x1e67ed['id']);logger['info'](_0x892c('0x58'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0x892c('0x50'),_0x5c9085[_0x892c('0x17')]),_0x892c('0x51'),{'uri':util[_0x892c('0xe')](_0x892c('0x52'),_0x55e1a5[_0x892c('0x28')],_0x1e67ed['id'])});}})[_0x892c('0x59')](function(_0x12ef61){logger['error'](_0x892c('0x58'),JSON[_0x892c('0x34')](_0x12ef61));});};exports[_0x892c('0x5a')]=function(_0x25f837,_0x17f710,_0x4bbf3a,_0x2b04c1,_0x593d0d,_0x374167){var _0x4d20cc,_0x1ac11a;_0x374167['remoteUri']=intUtil[_0x892c('0x44')](_0x374167[_0x892c('0x28')]);_0x374167[_0x892c('0x45')]=intUtil['stripTrailingSlash'](_0x374167[_0x892c('0x45')]);if(_0x593d0d&&_0x593d0d[_0x892c('0x46')]){logger[_0x892c('0xb')]('['+_0x17f710[_0x892c('0x5b')][_0x892c('0x5c')]()+']',_0x892c('0x48'));_0x17f710[_0x892c('0x4a')]=util[_0x892c('0xe')](_0x892c('0x56'),_0x374167[_0x892c('0x45')],_0x17f710[_0x892c('0x49')],md5(_0x17f710[_0x892c('0x49')]));}else{_0x17f710[_0x892c('0x4a')]='';}headers[_0x892c('0x4b')]=getAuth(_0x374167);return getUser(_0x374167,'')['then'](function(_0x5c740d){_0x4d20cc=_0x5c740d;logger[_0x892c('0xb')](_0x892c('0x4c'),_0x4d20cc['id']);return getEndUser(_0x374167,_0x17f710[_0x892c('0x10')],_0x17f710[_0x892c('0x11')]);})[_0x892c('0x22')](function(_0x280ced){_0x1ac11a=_0x280ced;logger['info'](_0x892c('0x4d'),_0x1ac11a['id']);return getTicket(_0x374167,_0x4d20cc,_0x1ac11a,_0x4bbf3a,_0x17f710);})[_0x892c('0x22')](function(_0x36bfca){if(_0x36bfca){logger[_0x892c('0xb')](_0x892c('0x1f'));logger['info'](_0x892c('0x4e'),_0x36bfca['id']);}})[_0x892c('0x59')](function(_0xecca5){logger[_0x892c('0x53')]('['+_0x17f710[_0x892c('0x5b')][_0x892c('0x5c')]()+']',JSON['stringify'](_0xecca5));});};