cf468c1f094b796141e649e8920cb8af04824741
[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 _0x730e=['stringify','GET','map','forEach','includes','picklist','nameField','toLowerCase','content','toString','string','type','idField','customField','push','variable','variableName','Variable','queue','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','catch','error','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','user:%s','%s/helpdesk/tickets/%d','unmanaged','monitor_format','lastevent','toUpperCase','md5','ioredis','./util','freshdesk','redis','defaults','localhost','socket.io-emitter','info','Creating\x20new\x20ticket...','merge','calleridname','getString','Descriptions','<br>','name','custom_fields','mapValues','keyBy','value','format','%s/api/v2/tickets','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','Agent\x20found!','find','contact','email','%s/api/v2/agents/me','remoteUri','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','[HTTP]'];(function(_0x2788bd,_0x12d2d9){var _0x50fcad=function(_0x106278){while(--_0x106278){_0x2788bd['push'](_0x2788bd['shift']());}};_0x50fcad(++_0x12d2d9);}(_0x730e,0x89));var _0xe730=function(_0x5658f5,_0x45ed1c){_0x5658f5=_0x5658f5-0x0;var _0x2c1d5b=_0x730e[_0x5658f5];return _0x2c1d5b;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require(_0xe730('0x0'));var util=require('util');var Redis=require(_0xe730('0x1'));var intUtil=require(_0xe730('0x2'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0xe730('0x3'));config[_0xe730('0x4')]=_[_0xe730('0x5')](config['redis'],{'host':_0xe730('0x6'),'port':0x18eb});var io=require(_0xe730('0x7'))(new Redis(config[_0xe730('0x4')]));var headers={'Content-Type':'application/json','Accept':'application/json'};function emit(_0x4e9121,_0x5d6d69,_0x5e70db){io['to'](_0x4e9121)['emit'](_0x5d6d69,_0x5e70db);}function getTicket(_0x2f8581,_0x353ba2,_0x3987b7,_0x353184,_0x542316){logger[_0xe730('0x8')](_0xe730('0x9'));var _0x4a0c97=_[_0xe730('0xa')]({'responder_id':_0x353ba2['id'],'requester_id':_0x3987b7['id'],'name':util['format']('Caller\x20-\x20%s',_0x542316[_0xe730('0xb')]),'phone':_0x542316['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xe730('0xc')](_0x353184['Subjects'],_0x542316,'\x20'),'description':intUtil[_0xe730('0xc')](_0x353184[_0xe730('0xd')],_0x542316,_0xe730('0xe')),'tags':getTags(_0x353184['Tags'],_0xe730('0xf'))},getCustomFields(_0x353184['Fields'],_0x542316));_0x4a0c97[_0xe730('0x10')]=_[_0xe730('0x11')](_[_0xe730('0x12')](_0x4a0c97['custom_fields'],'id'),_0xe730('0x13'));return request({'uri':util[_0xe730('0x14')](_0xe730('0x15'),_0x2f8581['remoteUri']),'method':_0xe730('0x16'),'body':_0x4a0c97})[_0xe730('0x17')](function(_0x21b904){logger['info'](_0xe730('0x18'));return _0x21b904;});}function getUser(_0x5f4da6,_0x30b779){if(intUtil[_0xe730('0x19')](_0x30b779)){return request({'uri':util['format'](_0xe730('0x1a'),_0x5f4da6['remoteUri']),'qs':{'email':_0x30b779}})['then'](function(_0x3b1aa7){if(_0x3b1aa7[_0xe730('0x1b')]){logger[_0xe730('0x8')](_0xe730('0x1c'));return _[_0xe730('0x1d')](_0x3b1aa7,function(_0x2916d0){return _0x2916d0[_0xe730('0x1e')][_0xe730('0x1f')]===_0x30b779;});}else{logger[_0xe730('0x8')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xe730('0x14')](_0xe730('0x20'),_0x5f4da6[_0xe730('0x21')])})[_0xe730('0x17')](function(_0x4424ee){logger[_0xe730('0x8')](_0xe730('0x22'));return _0x4424ee;});}});}else{logger['info']('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xe730('0x14')](_0xe730('0x20'),_0x5f4da6[_0xe730('0x21')])})[_0xe730('0x17')](function(_0x43993c){logger[_0xe730('0x8')](_0xe730('0x22'));return _0x43993c;});}}function getEndUser(_0x5eefe3,_0x21ee20,_0x3b29a8){logger[_0xe730('0x8')](_0xe730('0x23'),_0x3b29a8);return request({'uri':util[_0xe730('0x14')](_0xe730('0x24'),_0x5eefe3[_0xe730('0x21')]),'qs':{'phone':_0x3b29a8}})[_0xe730('0x17')](function(_0x2ec3b3){if(_0x2ec3b3['length']){logger['info'](_0xe730('0x25'));return _[_0xe730('0x1d')](_0x2ec3b3,{'phone':_0x3b29a8});}else{logger[_0xe730('0x8')](_0xe730('0x26'));return request({'uri':util[_0xe730('0x14')](_0xe730('0x24'),_0x5eefe3[_0xe730('0x21')]),'method':_0xe730('0x16'),'body':{'name':_0x21ee20,'phone':_0x3b29a8}})[_0xe730('0x17')](function(_0x4d8815){logger[_0xe730('0x8')](_0xe730('0x27'));return _0x4d8815;});}});}function getAuth(_0x49027d){return util['format'](_0xe730('0x28'),new Buffer(_0x49027d[_0xe730('0x29')]+':X')['toString']('base64'));}function request(_0x47c71c){logger['debug'](_0xe730('0x2a'),JSON[_0xe730('0x2b')](_0x47c71c));return rp(_[_0xe730('0x5')](_0x47c71c,{'method':_0xe730('0x2c'),'headers':headers,'json':!![]}));}function getTags(_0x192866,_0x354b83){var _0x51ead0=[];if(_0x192866&&_0x192866[_0xe730('0x1b')]>0x0){_0x51ead0=_[_0xe730('0x2d')](_0x192866,_0x354b83);}return _0x51ead0;}function getCustomFields(_0x4a4993,_0x428abf){var _0x513caa=[];var _0xdb45b8={'custom_fields':[]};if(_0x4a4993[_0xe730('0x1b')]>0x0){_[_0xe730('0x2e')](_0x4a4993,function(_0x52d794){if(_[_0xe730('0x2f')](['string',_0xe730('0x30')],_0x52d794['type'])&&_0x52d794[_0xe730('0x31')]&&!_0x52d794['customField']){_0xdb45b8[_0x52d794[_0xe730('0x31')][_0xe730('0x32')]()]=_0x52d794[_0xe730('0x33')][_0xe730('0x34')]();}else if(_[_0xe730('0x2f')]([_0xe730('0x35'),'picklist'],_0x52d794[_0xe730('0x36')])&&_0x52d794[_0xe730('0x37')]&&_0x52d794[_0xe730('0x38')]){_0xdb45b8[_0xe730('0x10')][_0xe730('0x39')]({'id':_0x52d794[_0xe730('0x37')],'value':_0x52d794['content']['toString']()});}else if(_0x52d794[_0xe730('0x36')]===_0xe730('0x3a')&&_0x52d794['variableName']&&_0x52d794[_0xe730('0x37')]&&_0x52d794[_0xe730('0x38')]){_0x428abf[_0x52d794['variableName']]&&_0xdb45b8[_0xe730('0x10')][_0xe730('0x39')]({'id':_0x52d794['idField'],'value':_0x428abf[_0x52d794[_0xe730('0x3b')]][_0xe730('0x34')]()});}else if(_0x52d794[_0xe730('0x36')]==='customVariable'&&_0x52d794[_0xe730('0x3c')]&&_0x52d794['Variable']['name']&&_0x52d794[_0xe730('0x37')]&&_0x52d794['customField']){_0x428abf[_0x52d794['Variable'][_0xe730('0xf')][_0xe730('0x32')]()]&&_0xdb45b8[_0xe730('0x10')][_0xe730('0x39')]({'id':_0x52d794[_0xe730('0x37')],'value':_0x428abf[_0x52d794[_0xe730('0x3c')]['name'][_0xe730('0x32')]()][_0xe730('0x34')]()});}});}return _0xdb45b8;}exports[_0xe730('0x3d')]=function(_0x5a80c1,_0x1c159e,_0x3e9c2d,_0x5b670d,_0x345239,_0x3bcda2){var _0x204dfb,_0x5e6c0a;_0x3bcda2[_0xe730('0x21')]=intUtil[_0xe730('0x3e')](_0x3bcda2[_0xe730('0x21')]);_0x3bcda2[_0xe730('0x3f')]=intUtil['stripTrailingSlash'](_0x3bcda2['serverUrl']);if(_0x345239&&_0x345239['monitor_format']){logger[_0xe730('0x8')](_0xe730('0x40'),_0xe730('0x41'));_0x1c159e[_0xe730('0x42')]=util[_0xe730('0x14')](_0xe730('0x43'),_0x3bcda2['serverUrl'],_0x1c159e[_0xe730('0x44')],md5(_0x1c159e[_0xe730('0x44')]));}else{_0x1c159e[_0xe730('0x42')]='';}headers[_0xe730('0x45')]=getAuth(_0x3bcda2);return getUser(_0x3bcda2,_0x5b670d[_0xe730('0x1f')])[_0xe730('0x17')](function(_0x5953c7){_0x204dfb=_0x5953c7;logger[_0xe730('0x8')](_0xe730('0x46'),_0x204dfb['id']);return getEndUser(_0x3bcda2,_0x1c159e[_0xe730('0xb')],_0x1c159e[_0xe730('0x47')]);})[_0xe730('0x17')](function(_0x5a3522){_0x5e6c0a=_0x5a3522;logger[_0xe730('0x8')](_0xe730('0x48'),_0x5e6c0a['id']);return getTicket(_0x3bcda2,_0x204dfb,_0x5e6c0a,_0x3e9c2d,_0x1c159e);})[_0xe730('0x17')](function(_0x4c1e53){if(_0x4c1e53&&_0x4c1e53['id']){logger[_0xe730('0x8')](_0xe730('0x18'));logger['info'](_0xe730('0x49'),_0x4c1e53['id']);logger[_0xe730('0x8')](_0xe730('0x40'),_0xe730('0x4a'));emit(util['format']('user:%s',_0x5b670d[_0xe730('0xf')]),_0xe730('0x4b'),{'uri':util[_0xe730('0x14')]('%s/helpdesk/tickets/%d',_0x3bcda2[_0xe730('0x21')],_0x4c1e53['id'])});}})[_0xe730('0x4c')](function(_0x43b6d9){logger[_0xe730('0x4d')](_0xe730('0x40'),JSON[_0xe730('0x2b')](_0x43b6d9));});};exports[_0xe730('0x4e')]=function(_0x487399,_0x491e20,_0x4e9c1f,_0x1d6d3a,_0x3bc038,_0x1443a6,_0x4c417d){var _0x5796e4,_0x37389d;_0x1443a6[_0xe730('0x21')]=intUtil['stripTrailingSlash'](_0x1443a6[_0xe730('0x21')]);_0x1443a6[_0xe730('0x3f')]=intUtil['stripTrailingSlash'](_0x1443a6[_0xe730('0x3f')]);if(_0x4c417d&&_0x4c417d[_0xe730('0x4f')]&&_0x4c417d[_0xe730('0x4f')]!==_0xe730('0x50')){logger[_0xe730('0x8')](_0xe730('0x51'),_0xe730('0x41'));_0x491e20[_0xe730('0x42')]=util[_0xe730('0x14')](_0xe730('0x43'),_0x1443a6[_0xe730('0x3f')],_0x491e20[_0xe730('0x44')],md5(_0x491e20[_0xe730('0x44')]));}headers[_0xe730('0x45')]=getAuth(_0x1443a6);return getUser(_0x1443a6,_0x1d6d3a['email'])['then'](function(_0x41c2e5){_0x5796e4=_0x41c2e5;logger[_0xe730('0x8')](_0xe730('0x46'),_0x5796e4['id']);return getEndUser(_0x1443a6,_0x491e20[_0xe730('0x52')],_0x491e20[_0xe730('0x53')]);})['then'](function(_0x40e8ae){_0x37389d=_0x40e8ae;logger[_0xe730('0x8')]('The\x20Enduser\x20ID\x20is:',_0x37389d['id']);return getTicket(_0x1443a6,_0x5796e4,_0x37389d,_0x4e9c1f,_0x491e20);})[_0xe730('0x17')](function(_0x79b7ae){if(_0x79b7ae&&_0x79b7ae['id']){logger['info'](_0xe730('0x18'));logger[_0xe730('0x8')](_0xe730('0x49'),_0x79b7ae['id']);logger[_0xe730('0x8')](_0xe730('0x51'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0xe730('0x54'),_0x1d6d3a[_0xe730('0xf')]),_0xe730('0x4b'),{'uri':util[_0xe730('0x14')](_0xe730('0x55'),_0x1443a6[_0xe730('0x21')],_0x79b7ae['id'])});}})['catch'](function(_0x78e379){logger['error']('[OUTBOUND]',JSON[_0xe730('0x2b')](_0x78e379));});};exports[_0xe730('0x56')]=function(_0x113a6c,_0x5d5ef8,_0x346b3c,_0x1669a8,_0x68c179,_0x23f38b){var _0x5caed4,_0xf0a006;_0x23f38b['remoteUri']=intUtil[_0xe730('0x3e')](_0x23f38b[_0xe730('0x21')]);_0x23f38b[_0xe730('0x3f')]=intUtil[_0xe730('0x3e')](_0x23f38b[_0xe730('0x3f')]);if(_0x68c179&&_0x68c179[_0xe730('0x57')]){logger[_0xe730('0x8')]('['+_0x5d5ef8[_0xe730('0x58')][_0xe730('0x59')]()+']','Recording\x20is\x20enabled!');_0x5d5ef8['recordingURL']=util[_0xe730('0x14')](_0xe730('0x43'),_0x23f38b[_0xe730('0x3f')],_0x5d5ef8[_0xe730('0x44')],md5(_0x5d5ef8[_0xe730('0x44')]));}else{_0x5d5ef8[_0xe730('0x42')]='';}headers[_0xe730('0x45')]=getAuth(_0x23f38b);return getUser(_0x23f38b,'')['then'](function(_0x3f83ca){_0x5caed4=_0x3f83ca;logger[_0xe730('0x8')](_0xe730('0x46'),_0x5caed4['id']);return getEndUser(_0x23f38b,_0x5d5ef8[_0xe730('0xb')],_0x5d5ef8[_0xe730('0x47')]);})['then'](function(_0x116adf){_0xf0a006=_0x116adf;logger[_0xe730('0x8')](_0xe730('0x48'),_0xf0a006['id']);return getTicket(_0x23f38b,_0x5caed4,_0xf0a006,_0x346b3c,_0x5d5ef8);})['then'](function(_0x5c955e){if(_0x5c955e){logger[_0xe730('0x8')](_0xe730('0x18'));logger[_0xe730('0x8')](_0xe730('0x49'),_0x5c955e['id']);}})['catch'](function(_0x1642a8){logger['error']('['+_0x5d5ef8['lastevent'][_0xe730('0x59')]()+']',JSON[_0xe730('0x2b')](_0x1642a8));});};