7bcdfac71021ee2b0807b4b6a81b0e1102ed9494
[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 _0x4276=['remoteUri','POST','validateEmail','then','length','find','contact','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','toString','debug','[HTTP]','stringify','defaults','forEach','includes','string','picklist','type','nameField','toLowerCase','content','variableName','idField','customField','push','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','catch','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','error','unmanaged','lastevent','toUpperCase','lodash','util','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','localhost','socket.io-emitter','application/json','emit','info','merge','format','Caller\x20-\x20%s','getString','Subjects','Tags','name','custom_fields','keyBy','%s/api/v2/tickets'];(function(_0x19787d,_0x365c7b){var _0xd6f47f=function(_0x16f907){while(--_0x16f907){_0x19787d['push'](_0x19787d['shift']());}};_0xd6f47f(++_0x365c7b);}(_0x4276,0x1a6));var _0x6427=function(_0x303ea7,_0x1fd43d){_0x303ea7=_0x303ea7-0x0;var _0x165caa=_0x4276[_0x303ea7];return _0x165caa;};'use strict';var _=require(_0x6427('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0x6427('0x1'));var Redis=require(_0x6427('0x2'));var intUtil=require(_0x6427('0x3'));var config=require(_0x6427('0x4'));var logger=require(_0x6427('0x5'))(_0x6427('0x6'));config['redis']=_['defaults'](config[_0x6427('0x7')],{'host':_0x6427('0x8'),'port':0x18eb});var io=require(_0x6427('0x9'))(new Redis(config[_0x6427('0x7')]));var headers={'Content-Type':_0x6427('0xa'),'Accept':_0x6427('0xa')};function emit(_0x4abd2c,_0x4dd67e,_0x10f3b1){io['to'](_0x4abd2c)[_0x6427('0xb')](_0x4dd67e,_0x10f3b1);}function getTicket(_0x3ddd19,_0x147038,_0x2099ac,_0xd325c,_0x4f4e51){logger[_0x6427('0xc')]('Creating\x20new\x20ticket...');var _0x18fc5e=_[_0x6427('0xd')]({'responder_id':_0x147038['id'],'requester_id':_0x2099ac['id'],'name':util[_0x6427('0xe')](_0x6427('0xf'),_0x4f4e51['calleridname']),'phone':_0x4f4e51['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x6427('0x10')](_0xd325c[_0x6427('0x11')],_0x4f4e51,'\x20'),'description':intUtil['getString'](_0xd325c['Descriptions'],_0x4f4e51,'<br>'),'tags':getTags(_0xd325c[_0x6427('0x12')],_0x6427('0x13'))},getCustomFields(_0xd325c['Fields'],_0x4f4e51));_0x18fc5e[_0x6427('0x14')]=_['mapValues'](_[_0x6427('0x15')](_0x18fc5e[_0x6427('0x14')],'id'),'value');return request({'uri':util[_0x6427('0xe')](_0x6427('0x16'),_0x3ddd19[_0x6427('0x17')]),'method':_0x6427('0x18'),'body':_0x18fc5e})['then'](function(_0x1c6bd0){logger[_0x6427('0xc')]('Ticket\x20created!');return _0x1c6bd0;});}function getUser(_0x19ff0a,_0x4d2f4c){if(intUtil[_0x6427('0x19')](_0x4d2f4c)){return request({'uri':util[_0x6427('0xe')]('%s/api/v2/agents',_0x19ff0a[_0x6427('0x17')]),'qs':{'email':_0x4d2f4c}})[_0x6427('0x1a')](function(_0x448909){if(_0x448909[_0x6427('0x1b')]){logger[_0x6427('0xc')]('Agent\x20found!');return _[_0x6427('0x1c')](_0x448909,function(_0x33409b){return _0x33409b[_0x6427('0x1d')]['email']===_0x4d2f4c;});}else{logger[_0x6427('0xc')](_0x6427('0x1e'));return request({'uri':util[_0x6427('0xe')]('%s/api/v2/agents/me',_0x19ff0a[_0x6427('0x17')])})[_0x6427('0x1a')](function(_0x5be912){logger[_0x6427('0xc')](_0x6427('0x1f'));return _0x5be912;});}});}else{logger['info'](_0x6427('0x20'));return request({'uri':util[_0x6427('0xe')]('%s/api/v2/agents/me',_0x19ff0a[_0x6427('0x17')])})[_0x6427('0x1a')](function(_0x2ab8e7){logger[_0x6427('0xc')](_0x6427('0x1f'));return _0x2ab8e7;});}}function getEndUser(_0x7e336c,_0x397313,_0x417b34){logger[_0x6427('0xc')](_0x6427('0x21'),_0x417b34);return request({'uri':util['format'](_0x6427('0x22'),_0x7e336c['remoteUri']),'qs':{'phone':_0x417b34}})[_0x6427('0x1a')](function(_0x34e23a){if(_0x34e23a[_0x6427('0x1b')]){logger[_0x6427('0xc')](_0x6427('0x23'));return _[_0x6427('0x1c')](_0x34e23a,{'phone':_0x417b34});}else{logger['info'](_0x6427('0x24'));return request({'uri':util[_0x6427('0xe')]('%s/api/v2/contacts',_0x7e336c[_0x6427('0x17')]),'method':_0x6427('0x18'),'body':{'name':_0x397313,'phone':_0x417b34}})[_0x6427('0x1a')](function(_0x16b2ec){logger[_0x6427('0xc')](_0x6427('0x25'));return _0x16b2ec;});}});}function getAuth(_0x191b0f){return util[_0x6427('0xe')](_0x6427('0x26'),new Buffer(_0x191b0f[_0x6427('0x27')]+':X')[_0x6427('0x28')]('base64'));}function request(_0xc15764){logger[_0x6427('0x29')](_0x6427('0x2a'),JSON[_0x6427('0x2b')](_0xc15764));return rp(_[_0x6427('0x2c')](_0xc15764,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x6d659b,_0x39137b){var _0x2bba12=[];if(_0x6d659b&&_0x6d659b[_0x6427('0x1b')]>0x0){_0x2bba12=_['map'](_0x6d659b,_0x39137b);}return _0x2bba12;}function getCustomFields(_0x157d06,_0x5e31fc){var _0xcbee8c=[];var _0xd2b14d={'custom_fields':[]};if(_0x157d06[_0x6427('0x1b')]>0x0){_[_0x6427('0x2d')](_0x157d06,function(_0x166c41){if(_[_0x6427('0x2e')]([_0x6427('0x2f'),_0x6427('0x30')],_0x166c41[_0x6427('0x31')])&&_0x166c41[_0x6427('0x32')]&&!_0x166c41['customField']){_0xd2b14d[_0x166c41['nameField'][_0x6427('0x33')]()]=_0x166c41[_0x6427('0x34')][_0x6427('0x28')]();}else if(_[_0x6427('0x2e')]([_0x6427('0x2f'),_0x6427('0x30')],_0x166c41['type'])&&_0x166c41['idField']&&_0x166c41['customField']){_0xd2b14d[_0x6427('0x14')]['push']({'id':_0x166c41['idField'],'value':_0x166c41[_0x6427('0x34')][_0x6427('0x28')]()});}else if(_0x166c41[_0x6427('0x31')]==='variable'&&_0x166c41[_0x6427('0x35')]&&_0x166c41[_0x6427('0x36')]&&_0x166c41[_0x6427('0x37')]){_0x5e31fc[_0x166c41[_0x6427('0x35')]]&&_0xd2b14d['custom_fields'][_0x6427('0x38')]({'id':_0x166c41[_0x6427('0x36')],'value':_0x5e31fc[_0x166c41[_0x6427('0x35')]][_0x6427('0x28')]()});}else if(_0x166c41[_0x6427('0x31')]===_0x6427('0x39')&&_0x166c41[_0x6427('0x3a')]&&_0x166c41[_0x6427('0x3a')][_0x6427('0x13')]&&_0x166c41[_0x6427('0x36')]&&_0x166c41['customField']){_0x5e31fc[_0x166c41[_0x6427('0x3a')][_0x6427('0x13')][_0x6427('0x33')]()]&&_0xd2b14d[_0x6427('0x14')][_0x6427('0x38')]({'id':_0x166c41[_0x6427('0x36')],'value':_0x5e31fc[_0x166c41[_0x6427('0x3a')][_0x6427('0x13')]['toLowerCase']()][_0x6427('0x28')]()});}});}return _0xd2b14d;}exports[_0x6427('0x3b')]=function(_0x2fb4cf,_0x5b2be4,_0x3a3f5c,_0x5b4af9,_0x32b709,_0x21e366){var _0x477308,_0x1872e6;_0x21e366[_0x6427('0x17')]=intUtil[_0x6427('0x3c')](_0x21e366['remoteUri']);_0x21e366[_0x6427('0x3d')]=intUtil[_0x6427('0x3c')](_0x21e366[_0x6427('0x3d')]);if(_0x32b709&&_0x32b709[_0x6427('0x3e')]){logger[_0x6427('0xc')]('[QUEUE]',_0x6427('0x3f'));_0x5b2be4['recordingURL']=util[_0x6427('0xe')](_0x6427('0x40'),_0x21e366[_0x6427('0x3d')],_0x5b2be4[_0x6427('0x41')],md5(_0x5b2be4[_0x6427('0x41')]));}else{_0x5b2be4[_0x6427('0x42')]='';}headers[_0x6427('0x43')]=getAuth(_0x21e366);return getUser(_0x21e366,_0x5b4af9['email'])[_0x6427('0x1a')](function(_0x40e9bc){_0x477308=_0x40e9bc;logger[_0x6427('0xc')](_0x6427('0x44'),_0x477308['id']);return getEndUser(_0x21e366,_0x5b2be4[_0x6427('0x45')],_0x5b2be4[_0x6427('0x46')]);})[_0x6427('0x1a')](function(_0x52c6ab){_0x1872e6=_0x52c6ab;logger['info'](_0x6427('0x47'),_0x1872e6['id']);return getTicket(_0x21e366,_0x477308,_0x1872e6,_0x3a3f5c,_0x5b2be4);})['then'](function(_0x3c2d5e){if(_0x3c2d5e&&_0x3c2d5e['id']){logger[_0x6427('0xc')](_0x6427('0x48'));logger[_0x6427('0xc')](_0x6427('0x49'),_0x3c2d5e['id']);logger[_0x6427('0xc')](_0x6427('0x4a'),_0x6427('0x4b'));emit(util[_0x6427('0xe')](_0x6427('0x4c'),_0x5b4af9[_0x6427('0x13')]),_0x6427('0x4d'),{'uri':util[_0x6427('0xe')]('%s/helpdesk/tickets/%d',_0x21e366[_0x6427('0x17')],_0x3c2d5e['id'])});}})[_0x6427('0x4e')](function(_0x3cdaf8){logger['error'](_0x6427('0x4a'),JSON['stringify'](_0x3cdaf8));});};exports[_0x6427('0x4f')]=function(_0x3d46d8,_0x1882b9,_0x2d9ede,_0x2ff667,_0x4984b1,_0x18cafb,_0x3af068){var _0x53e25e,_0x979e3d;_0x18cafb[_0x6427('0x17')]=intUtil[_0x6427('0x3c')](_0x18cafb[_0x6427('0x17')]);_0x18cafb[_0x6427('0x3d')]=intUtil[_0x6427('0x3c')](_0x18cafb[_0x6427('0x3d')]);if(_0x3af068&&_0x3af068[_0x6427('0x50')]&&_0x3af068['recordingFormat']!==_0x6427('0x51')){logger[_0x6427('0xc')](_0x6427('0x52'),_0x6427('0x3f'));_0x1882b9[_0x6427('0x42')]=util[_0x6427('0xe')](_0x6427('0x40'),_0x18cafb[_0x6427('0x3d')],_0x1882b9[_0x6427('0x41')],md5(_0x1882b9[_0x6427('0x41')]));}headers[_0x6427('0x43')]=getAuth(_0x18cafb);return getUser(_0x18cafb,_0x2ff667['email'])['then'](function(_0x5d1092){_0x53e25e=_0x5d1092;logger[_0x6427('0xc')](_0x6427('0x44'),_0x53e25e['id']);return getEndUser(_0x18cafb,_0x1882b9[_0x6427('0x53')],_0x1882b9[_0x6427('0x54')]);})['then'](function(_0x5d0efc){_0x979e3d=_0x5d0efc;logger[_0x6427('0xc')](_0x6427('0x47'),_0x979e3d['id']);return getTicket(_0x18cafb,_0x53e25e,_0x979e3d,_0x2d9ede,_0x1882b9);})[_0x6427('0x1a')](function(_0xff2fbf){if(_0xff2fbf&&_0xff2fbf['id']){logger[_0x6427('0xc')](_0x6427('0x48'));logger['info']('The\x20Ticket\x20ID\x20is:',_0xff2fbf['id']);logger[_0x6427('0xc')](_0x6427('0x52'),_0x6427('0x4b'));emit(util[_0x6427('0xe')](_0x6427('0x4c'),_0x2ff667[_0x6427('0x13')]),_0x6427('0x4d'),{'uri':util[_0x6427('0xe')]('%s/helpdesk/tickets/%d',_0x18cafb['remoteUri'],_0xff2fbf['id'])});}})['catch'](function(_0x54d18e){logger[_0x6427('0x55')](_0x6427('0x52'),JSON[_0x6427('0x2b')](_0x54d18e));});};exports[_0x6427('0x56')]=function(_0x245c36,_0x500d6e,_0x83f93a,_0x3713b8,_0x127e4e,_0x97ab74){var _0x713005,_0x18936c;_0x97ab74[_0x6427('0x17')]=intUtil[_0x6427('0x3c')](_0x97ab74[_0x6427('0x17')]);_0x97ab74['serverUrl']=intUtil[_0x6427('0x3c')](_0x97ab74[_0x6427('0x3d')]);if(_0x127e4e&&_0x127e4e[_0x6427('0x3e')]){logger[_0x6427('0xc')]('['+_0x500d6e[_0x6427('0x57')][_0x6427('0x58')]()+']',_0x6427('0x3f'));_0x500d6e[_0x6427('0x42')]=util[_0x6427('0xe')](_0x6427('0x40'),_0x97ab74[_0x6427('0x3d')],_0x500d6e[_0x6427('0x41')],md5(_0x500d6e[_0x6427('0x41')]));}else{_0x500d6e[_0x6427('0x42')]='';}headers[_0x6427('0x43')]=getAuth(_0x97ab74);return getUser(_0x97ab74,'')[_0x6427('0x1a')](function(_0xe34fa8){_0x713005=_0xe34fa8;logger[_0x6427('0xc')](_0x6427('0x44'),_0x713005['id']);return getEndUser(_0x97ab74,_0x500d6e[_0x6427('0x45')],_0x500d6e[_0x6427('0x46')]);})[_0x6427('0x1a')](function(_0x1121a4){_0x18936c=_0x1121a4;logger[_0x6427('0xc')](_0x6427('0x47'),_0x18936c['id']);return getTicket(_0x97ab74,_0x713005,_0x18936c,_0x83f93a,_0x500d6e);})[_0x6427('0x1a')](function(_0x1830f3){if(_0x1830f3){logger['info'](_0x6427('0x48'));logger[_0x6427('0xc')]('The\x20Ticket\x20ID\x20is:',_0x1830f3['id']);}})[_0x6427('0x4e')](function(_0x3c405f){logger[_0x6427('0x55')]('['+_0x500d6e[_0x6427('0x57')][_0x6427('0x58')]()+']',JSON['stringify'](_0x3c405f));});};