Built motion from commit ab870f9e.|2.5.44
[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 _0x7c82=['find','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','toString','base64','debug','[HTTP]','stringify','defaults','GET','forEach','includes','string','picklist','type','nameField','content','idField','customField','push','variable','variableName','Variable','toLowerCase','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','The\x20User\x20ID\x20is:','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','recordingFormat','none','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridnum','The\x20Enduser\x20ID\x20is:','unmanaged','lastevent','toUpperCase','calleridname','The\x20Ticket\x20ID\x20is:','request-promise','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','localhost','socket.io-emitter','redis','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridnum','getString','Descriptions','Tags','name','mapValues','keyBy','custom_fields','value','%s/api/v2/tickets','remoteUri','POST','Ticket\x20created!','validateEmail','%s/api/v2/agents','then','length','Agent\x20found!'];(function(_0x1e5b5c,_0x5a6068){var _0x507787=function(_0x11d917){while(--_0x11d917){_0x1e5b5c['push'](_0x1e5b5c['shift']());}};_0x507787(++_0x5a6068);}(_0x7c82,0x1f4));var _0x27c8=function(_0x1879f7,_0x231de9){_0x1879f7=_0x1879f7-0x0;var _0x510026=_0x7c82[_0x1879f7];return _0x510026;};'use strict';var _=require('lodash');var rp=require(_0x27c8('0x0'));var md5=require('md5');var util=require('util');var Redis=require(_0x27c8('0x1'));var intUtil=require(_0x27c8('0x2'));var config=require(_0x27c8('0x3'));var logger=require(_0x27c8('0x4'))(_0x27c8('0x5'));config['redis']=_['defaults'](config['redis'],{'host':_0x27c8('0x6'),'port':0x18eb});var io=require(_0x27c8('0x7'))(new Redis(config[_0x27c8('0x8')]));var headers={'Content-Type':_0x27c8('0x9'),'Accept':'application/json'};function emit(_0x577086,_0x3738d8,_0x5b99d0){io['to'](_0x577086)[_0x27c8('0xa')](_0x3738d8,_0x5b99d0);}function getTicket(_0x4995a7,_0x5c574b,_0x59dcb1,_0x2d227a,_0x3a21a9){logger[_0x27c8('0xb')](_0x27c8('0xc'));var _0x194662=_[_0x27c8('0xd')]({'responder_id':_0x5c574b['id'],'requester_id':_0x59dcb1['id'],'name':util[_0x27c8('0xe')](_0x27c8('0xf'),_0x3a21a9['calleridname']),'phone':_0x3a21a9[_0x27c8('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x27c8('0x11')](_0x2d227a['Subjects'],_0x3a21a9,'\x20'),'description':intUtil[_0x27c8('0x11')](_0x2d227a[_0x27c8('0x12')],_0x3a21a9,'<br>'),'tags':getTags(_0x2d227a[_0x27c8('0x13')],_0x27c8('0x14'))},getCustomFields(_0x2d227a['Fields'],_0x3a21a9));_0x194662['custom_fields']=_[_0x27c8('0x15')](_[_0x27c8('0x16')](_0x194662[_0x27c8('0x17')],'id'),_0x27c8('0x18'));return request({'uri':util['format'](_0x27c8('0x19'),_0x4995a7[_0x27c8('0x1a')]),'method':_0x27c8('0x1b'),'body':_0x194662})['then'](function(_0x5e8d88){logger[_0x27c8('0xb')](_0x27c8('0x1c'));return _0x5e8d88;});}function getUser(_0x39cfa1,_0x44dd8e){if(intUtil[_0x27c8('0x1d')](_0x44dd8e)){return request({'uri':util['format'](_0x27c8('0x1e'),_0x39cfa1[_0x27c8('0x1a')]),'qs':{'email':_0x44dd8e}})[_0x27c8('0x1f')](function(_0x22be1d){if(_0x22be1d[_0x27c8('0x20')]){logger[_0x27c8('0xb')](_0x27c8('0x21'));return _[_0x27c8('0x22')](_0x22be1d,function(_0x25e0f7){return _0x25e0f7['contact'][_0x27c8('0x23')]===_0x44dd8e;});}else{logger[_0x27c8('0xb')](_0x27c8('0x24'));return request({'uri':util[_0x27c8('0xe')](_0x27c8('0x25'),_0x39cfa1[_0x27c8('0x1a')])})[_0x27c8('0x1f')](function(_0x46af0b){logger['info'](_0x27c8('0x26'));return _0x46af0b;});}});}else{logger[_0x27c8('0xb')](_0x27c8('0x27'));return request({'uri':util[_0x27c8('0xe')]('%s/api/v2/agents/me',_0x39cfa1[_0x27c8('0x1a')])})[_0x27c8('0x1f')](function(_0x31e0ec){logger[_0x27c8('0xb')]('Admin\x20account\x20selected.');return _0x31e0ec;});}}function getEndUser(_0x110ab6,_0x502c82,_0xdf0308){logger[_0x27c8('0xb')]('Searching\x20enduser\x20with\x20phone',_0xdf0308);return request({'uri':util[_0x27c8('0xe')]('%s/api/v2/contacts',_0x110ab6[_0x27c8('0x1a')]),'qs':{'phone':_0xdf0308}})[_0x27c8('0x1f')](function(_0x3e5eab){if(_0x3e5eab[_0x27c8('0x20')]){logger[_0x27c8('0xb')](_0x27c8('0x28'));return _[_0x27c8('0x22')](_0x3e5eab,{'phone':_0xdf0308});}else{logger[_0x27c8('0xb')](_0x27c8('0x29'));return request({'uri':util[_0x27c8('0xe')]('%s/api/v2/contacts',_0x110ab6[_0x27c8('0x1a')]),'method':'POST','body':{'name':_0x502c82,'phone':_0xdf0308}})[_0x27c8('0x1f')](function(_0x3ce25c){logger[_0x27c8('0xb')](_0x27c8('0x2a'));return _0x3ce25c;});}});}function getAuth(_0x2b0b1f){return util[_0x27c8('0xe')](_0x27c8('0x2b'),new Buffer(_0x2b0b1f['apiKey']+':X')[_0x27c8('0x2c')](_0x27c8('0x2d')));}function request(_0x2de544){logger[_0x27c8('0x2e')](_0x27c8('0x2f'),JSON[_0x27c8('0x30')](_0x2de544));return rp(_[_0x27c8('0x31')](_0x2de544,{'method':_0x27c8('0x32'),'headers':headers,'json':!![]}));}function getTags(_0x39a8d1,_0x43f915){var _0x16d3d2=[];if(_0x39a8d1&&_0x39a8d1[_0x27c8('0x20')]>0x0){_0x16d3d2=_['map'](_0x39a8d1,_0x43f915);}return _0x16d3d2;}function getCustomFields(_0x356d7c,_0x419da0){var _0x4ffe22=[];var _0x52f2af={'custom_fields':[]};if(_0x356d7c['length']>0x0){_[_0x27c8('0x33')](_0x356d7c,function(_0x10aded){if(_[_0x27c8('0x34')]([_0x27c8('0x35'),_0x27c8('0x36')],_0x10aded[_0x27c8('0x37')])&&_0x10aded[_0x27c8('0x38')]&&!_0x10aded['customField']){_0x52f2af[_0x10aded['nameField']['toLowerCase']()]=_0x10aded[_0x27c8('0x39')][_0x27c8('0x2c')]();}else if(_[_0x27c8('0x34')]([_0x27c8('0x35'),_0x27c8('0x36')],_0x10aded[_0x27c8('0x37')])&&_0x10aded[_0x27c8('0x3a')]&&_0x10aded[_0x27c8('0x3b')]){_0x52f2af[_0x27c8('0x17')][_0x27c8('0x3c')]({'id':_0x10aded[_0x27c8('0x3a')],'value':_0x10aded['content'][_0x27c8('0x2c')]()});}else if(_0x10aded['type']===_0x27c8('0x3d')&&_0x10aded['variableName']&&_0x10aded[_0x27c8('0x3a')]&&_0x10aded[_0x27c8('0x3b')]){_0x419da0[_0x10aded[_0x27c8('0x3e')]]&&_0x52f2af['custom_fields'][_0x27c8('0x3c')]({'id':_0x10aded['idField'],'value':_0x419da0[_0x10aded[_0x27c8('0x3e')]][_0x27c8('0x2c')]()});}else if(_0x10aded[_0x27c8('0x37')]==='customVariable'&&_0x10aded[_0x27c8('0x3f')]&&_0x10aded[_0x27c8('0x3f')][_0x27c8('0x14')]&&_0x10aded[_0x27c8('0x3a')]&&_0x10aded['customField']){_0x419da0[_0x10aded['Variable'][_0x27c8('0x14')][_0x27c8('0x40')]()]&&_0x52f2af[_0x27c8('0x17')][_0x27c8('0x3c')]({'id':_0x10aded[_0x27c8('0x3a')],'value':_0x419da0[_0x10aded[_0x27c8('0x3f')][_0x27c8('0x14')]['toLowerCase']()]['toString']()});}});}return _0x52f2af;}exports['queue']=function(_0x34a109,_0x3bda83,_0x168b1c,_0x254e6f,_0x50fa15,_0x4e96c1){var _0x4478af,_0xebbf94;_0x4e96c1[_0x27c8('0x1a')]=intUtil[_0x27c8('0x41')](_0x4e96c1[_0x27c8('0x1a')]);_0x4e96c1['serverUrl']=intUtil[_0x27c8('0x41')](_0x4e96c1[_0x27c8('0x42')]);if(_0x50fa15&&_0x50fa15[_0x27c8('0x43')]){logger[_0x27c8('0xb')](_0x27c8('0x44'),_0x27c8('0x45'));_0x3bda83[_0x27c8('0x46')]=util[_0x27c8('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4e96c1[_0x27c8('0x42')],_0x3bda83[_0x27c8('0x47')],md5(_0x3bda83['uniqueid']));}else{_0x3bda83[_0x27c8('0x46')]='';}headers[_0x27c8('0x48')]=getAuth(_0x4e96c1);return getUser(_0x4e96c1,_0x254e6f[_0x27c8('0x23')])[_0x27c8('0x1f')](function(_0x45a184){_0x4478af=_0x45a184;logger['info'](_0x27c8('0x49'),_0x4478af['id']);return getEndUser(_0x4e96c1,_0x3bda83['calleridname'],_0x3bda83['calleridnum']);})[_0x27c8('0x1f')](function(_0x29d6d4){_0xebbf94=_0x29d6d4;logger['info']('The\x20Enduser\x20ID\x20is:',_0xebbf94['id']);return getTicket(_0x4e96c1,_0x4478af,_0xebbf94,_0x168b1c,_0x3bda83);})[_0x27c8('0x1f')](function(_0x4bd846){if(_0x4bd846&&_0x4bd846['id']){logger[_0x27c8('0xb')](_0x27c8('0x1c'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x4bd846['id']);logger[_0x27c8('0xb')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x27c8('0xe')](_0x27c8('0x4a'),_0x254e6f['name']),_0x27c8('0x4b'),{'uri':util[_0x27c8('0xe')](_0x27c8('0x4c'),_0x4e96c1[_0x27c8('0x1a')],_0x4bd846['id'])});}})[_0x27c8('0x4d')](function(_0x45209f){logger[_0x27c8('0x4e')]('[QUEUE]',JSON[_0x27c8('0x30')](_0x45209f));});};exports['outbound']=function(_0x2207af,_0x17bb12,_0x1a2f9f,_0x2f4aa4,_0x39336e,_0x432486,_0x1f4205){var _0x359654,_0x1388cb;_0x432486[_0x27c8('0x1a')]=intUtil[_0x27c8('0x41')](_0x432486[_0x27c8('0x1a')]);_0x432486[_0x27c8('0x42')]=intUtil[_0x27c8('0x41')](_0x432486[_0x27c8('0x42')]);if(_0x1f4205&&_0x1f4205[_0x27c8('0x4f')]&&_0x1f4205['recordingFormat']!==_0x27c8('0x50')){logger['info']('[OUTBOUND]',_0x27c8('0x45'));_0x17bb12[_0x27c8('0x46')]=util[_0x27c8('0xe')](_0x27c8('0x51'),_0x432486[_0x27c8('0x42')],_0x17bb12[_0x27c8('0x47')],md5(_0x17bb12['uniqueid']));}headers[_0x27c8('0x48')]=getAuth(_0x432486);return getUser(_0x432486,_0x2f4aa4['email'])[_0x27c8('0x1f')](function(_0x23f9ab){_0x359654=_0x23f9ab;logger[_0x27c8('0xb')]('The\x20User\x20ID\x20is:',_0x359654['id']);return getEndUser(_0x432486,_0x17bb12['destcalleridname'],_0x17bb12[_0x27c8('0x52')]);})[_0x27c8('0x1f')](function(_0xc48120){_0x1388cb=_0xc48120;logger['info'](_0x27c8('0x53'),_0x1388cb['id']);return getTicket(_0x432486,_0x359654,_0x1388cb,_0x1a2f9f,_0x17bb12);})[_0x27c8('0x1f')](function(_0x5cbca3){if(_0x5cbca3&&_0x5cbca3['id']){logger['info'](_0x27c8('0x1c'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x5cbca3['id']);logger[_0x27c8('0xb')]('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x27c8('0xe')](_0x27c8('0x4a'),_0x2f4aa4['name']),_0x27c8('0x4b'),{'uri':util[_0x27c8('0xe')](_0x27c8('0x4c'),_0x432486[_0x27c8('0x1a')],_0x5cbca3['id'])});}})[_0x27c8('0x4d')](function(_0x12c392){logger[_0x27c8('0x4e')]('[OUTBOUND]',JSON[_0x27c8('0x30')](_0x12c392));});};exports[_0x27c8('0x54')]=function(_0x10d133,_0x41ba5f,_0x56af1c,_0x5e074c,_0x3789e3,_0x109899){var _0x9f7315,_0x17ef33;_0x109899[_0x27c8('0x1a')]=intUtil[_0x27c8('0x41')](_0x109899[_0x27c8('0x1a')]);_0x109899['serverUrl']=intUtil[_0x27c8('0x41')](_0x109899[_0x27c8('0x42')]);if(_0x3789e3&&_0x3789e3[_0x27c8('0x43')]){logger[_0x27c8('0xb')]('['+_0x41ba5f[_0x27c8('0x55')][_0x27c8('0x56')]()+']',_0x27c8('0x45'));_0x41ba5f[_0x27c8('0x46')]=util[_0x27c8('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x109899[_0x27c8('0x42')],_0x41ba5f['uniqueid'],md5(_0x41ba5f[_0x27c8('0x47')]));}else{_0x41ba5f[_0x27c8('0x46')]='';}headers[_0x27c8('0x48')]=getAuth(_0x109899);return getUser(_0x109899,'')[_0x27c8('0x1f')](function(_0x1df882){_0x9f7315=_0x1df882;logger['info'](_0x27c8('0x49'),_0x9f7315['id']);return getEndUser(_0x109899,_0x41ba5f[_0x27c8('0x57')],_0x41ba5f[_0x27c8('0x10')]);})[_0x27c8('0x1f')](function(_0x4b7f1e){_0x17ef33=_0x4b7f1e;logger[_0x27c8('0xb')](_0x27c8('0x53'),_0x17ef33['id']);return getTicket(_0x109899,_0x9f7315,_0x17ef33,_0x56af1c,_0x41ba5f);})[_0x27c8('0x1f')](function(_0x1f0314){if(_0x1f0314){logger['info'](_0x27c8('0x1c'));logger[_0x27c8('0xb')](_0x27c8('0x58'),_0x1f0314['id']);}})[_0x27c8('0x4d')](function(_0x1e6e96){logger[_0x27c8('0x4e')]('['+_0x41ba5f['lastevent'][_0x27c8('0x56')]()+']',JSON[_0x27c8('0x30')](_0x1e6e96));});};