bef6ff3a6076b3127468175f33911043418b7843
[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 _0x745f=['trigger:browser:url','error','monitor_format','lastevent','toUpperCase','The\x20User\x20ID\x20is:','lodash','request-promise','util','ioredis','./util','../../../../config/environment','freshdesk','defaults','socket.io-emitter','redis','application/json','emit','Caller\x20-\x20%s','calleridname','calleridnum','getString','<br>','Tags','custom_fields','mapValues','value','POST','then','info','Ticket\x20created!','validateEmail','format','%s/api/v2/agents','remoteUri','length','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Basic\x20%s','toString','base64','debug','GET','forEach','type','string','nameField','customField','toLowerCase','idField','content','variable','variableName','push','customVariable','Variable','name','queue','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','%s/helpdesk/tickets/%d','catch','stringify','outbound','recordingFormat','none','[OUTBOUND]','destcalleridnum','user:%s'];(function(_0x58c20f,_0x4cdb1b){var _0x3b0318=function(_0x36fa84){while(--_0x36fa84){_0x58c20f['push'](_0x58c20f['shift']());}};_0x3b0318(++_0x4cdb1b);}(_0x745f,0x1af));var _0xf745=function(_0xe69bf1,_0x487cbc){_0xe69bf1=_0xe69bf1-0x0;var _0x1259d1=_0x745f[_0xe69bf1];return _0x1259d1;};'use strict';var _=require(_0xf745('0x0'));var rp=require(_0xf745('0x1'));var md5=require('md5');var util=require(_0xf745('0x2'));var Redis=require(_0xf745('0x3'));var intUtil=require(_0xf745('0x4'));var config=require(_0xf745('0x5'));var logger=require('../../../../config/logger')(_0xf745('0x6'));config['redis']=_[_0xf745('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xf745('0x8'))(new Redis(config[_0xf745('0x9')]));var headers={'Content-Type':_0xf745('0xa'),'Accept':_0xf745('0xa')};function emit(_0xe3df5e,_0x3027c9,_0x49fb99){io['to'](_0xe3df5e)[_0xf745('0xb')](_0x3027c9,_0x49fb99);}function getTicket(_0x7f6572,_0x2d6eae,_0x51cc71,_0xf593bc,_0x9a812d){logger['info']('Creating\x20new\x20ticket...');var _0x44d908=_['merge']({'responder_id':_0x2d6eae['id'],'requester_id':_0x51cc71['id'],'name':util['format'](_0xf745('0xc'),_0x9a812d[_0xf745('0xd')]),'phone':_0x9a812d[_0xf745('0xe')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0xf593bc['Subjects'],_0x9a812d,'\x20'),'description':intUtil[_0xf745('0xf')](_0xf593bc['Descriptions'],_0x9a812d,_0xf745('0x10')),'tags':getTags(_0xf593bc[_0xf745('0x11')],'name')},getCustomFields(_0xf593bc['Fields'],_0x9a812d));_0x44d908[_0xf745('0x12')]=_[_0xf745('0x13')](_['keyBy'](_0x44d908[_0xf745('0x12')],'id'),_0xf745('0x14'));return request({'uri':util['format']('%s/api/v2/tickets',_0x7f6572['remoteUri']),'method':_0xf745('0x15'),'body':_0x44d908})[_0xf745('0x16')](function(_0x42ba68){logger[_0xf745('0x17')](_0xf745('0x18'));return _0x42ba68;});}function getUser(_0x35386f,_0x5c47d6){if(intUtil[_0xf745('0x19')](_0x5c47d6)){return request({'uri':util[_0xf745('0x1a')](_0xf745('0x1b'),_0x35386f[_0xf745('0x1c')]),'qs':{'email':_0x5c47d6}})[_0xf745('0x16')](function(_0x93a3b0){if(_0x93a3b0[_0xf745('0x1d')]){logger['info']('Agent\x20found!');return _[_0xf745('0x1e')](_0x93a3b0,function(_0x2b6119){return _0x2b6119[_0xf745('0x1f')][_0xf745('0x20')]===_0x5c47d6;});}else{logger['info'](_0xf745('0x21'));return request({'uri':util['format']('%s/api/v2/agents/me',_0x35386f[_0xf745('0x1c')])})[_0xf745('0x16')](function(_0x1b0b0f){logger[_0xf745('0x17')]('Admin\x20account\x20selected.');return _0x1b0b0f;});}});}else{logger[_0xf745('0x17')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xf745('0x1a')](_0xf745('0x22'),_0x35386f[_0xf745('0x1c')])})[_0xf745('0x16')](function(_0x29e3f8){logger[_0xf745('0x17')](_0xf745('0x23'));return _0x29e3f8;});}}function getEndUser(_0x2bea51,_0x16ba6b,_0x3d9278){logger[_0xf745('0x17')]('Searching\x20enduser\x20with\x20phone',_0x3d9278);return request({'uri':util['format'](_0xf745('0x24'),_0x2bea51['remoteUri']),'qs':{'phone':_0x3d9278}})['then'](function(_0x1a97bd){if(_0x1a97bd['length']){logger['info'](_0xf745('0x25'));return _[_0xf745('0x1e')](_0x1a97bd,{'phone':_0x3d9278});}else{logger[_0xf745('0x17')](_0xf745('0x26'));return request({'uri':util[_0xf745('0x1a')]('%s/api/v2/contacts',_0x2bea51[_0xf745('0x1c')]),'method':'POST','body':{'name':_0x16ba6b,'phone':_0x3d9278}})[_0xf745('0x16')](function(_0x3861a5){logger['info']('Enduser\x20created.');return _0x3861a5;});}});}function getAuth(_0x1b73de){return util['format'](_0xf745('0x27'),new Buffer(_0x1b73de['apiKey']+':X')[_0xf745('0x28')](_0xf745('0x29')));}function request(_0x14c028){logger[_0xf745('0x2a')]('[HTTP]',JSON['stringify'](_0x14c028));return rp(_['defaults'](_0x14c028,{'method':_0xf745('0x2b'),'headers':headers,'json':!![]}));}function getTags(_0x118670,_0x1d32cb){var _0x57b332=[];if(_0x118670&&_0x118670[_0xf745('0x1d')]>0x0){_0x57b332=_['map'](_0x118670,_0x1d32cb);}return _0x57b332;}function getCustomFields(_0x275e2b,_0x11d697){var _0x5d68f8=[];var _0x48d8aa={'custom_fields':[]};if(_0x275e2b[_0xf745('0x1d')]>0x0){_[_0xf745('0x2c')](_0x275e2b,function(_0x468113){if(_0x468113[_0xf745('0x2d')]===_0xf745('0x2e')&&_0x468113[_0xf745('0x2f')]&&!_0x468113[_0xf745('0x30')]){_0x48d8aa[_0x468113[_0xf745('0x2f')][_0xf745('0x31')]()]=_0x468113['content']['toString']();}else if(_0x468113['type']==='string'&&_0x468113[_0xf745('0x32')]&&_0x468113[_0xf745('0x30')]){_0x48d8aa[_0xf745('0x12')]['push']({'id':_0x468113[_0xf745('0x32')],'value':_0x468113[_0xf745('0x33')]['toString']()});}else if(_0x468113[_0xf745('0x2d')]===_0xf745('0x34')&&_0x468113['variableName']&&_0x468113[_0xf745('0x32')]&&_0x468113['customField']){_0x11d697[_0x468113[_0xf745('0x35')]]&&_0x48d8aa['custom_fields'][_0xf745('0x36')]({'id':_0x468113[_0xf745('0x32')],'value':_0x11d697[_0x468113[_0xf745('0x35')]][_0xf745('0x28')]()});}else if(_0x468113['type']===_0xf745('0x37')&&_0x468113[_0xf745('0x38')]&&_0x468113[_0xf745('0x38')][_0xf745('0x39')]&&_0x468113[_0xf745('0x32')]&&_0x468113[_0xf745('0x30')]){_0x11d697[_0x468113['Variable'][_0xf745('0x39')][_0xf745('0x31')]()]&&_0x48d8aa['custom_fields'][_0xf745('0x36')]({'id':_0x468113[_0xf745('0x32')],'value':_0x11d697[_0x468113['Variable'][_0xf745('0x39')][_0xf745('0x31')]()][_0xf745('0x28')]()});}});}return _0x48d8aa;}exports[_0xf745('0x3a')]=function(_0x51686c,_0xa246de,_0x5dd344,_0x58c447,_0x17561c,_0x42919d){var _0x4926ac,_0x49cbe5;_0x42919d[_0xf745('0x1c')]=intUtil[_0xf745('0x3b')](_0x42919d[_0xf745('0x1c')]);_0x42919d[_0xf745('0x3c')]=intUtil[_0xf745('0x3b')](_0x42919d[_0xf745('0x3c')]);if(_0x17561c&&_0x17561c['monitor_format']){logger[_0xf745('0x17')](_0xf745('0x3d'),_0xf745('0x3e'));_0xa246de[_0xf745('0x3f')]=util[_0xf745('0x1a')](_0xf745('0x40'),_0x42919d[_0xf745('0x3c')],_0xa246de[_0xf745('0x41')],md5(_0xa246de[_0xf745('0x41')]));}else{_0xa246de[_0xf745('0x3f')]='';}headers[_0xf745('0x42')]=getAuth(_0x42919d);return getUser(_0x42919d,_0x58c447[_0xf745('0x20')])[_0xf745('0x16')](function(_0x24b215){_0x4926ac=_0x24b215;logger[_0xf745('0x17')]('The\x20User\x20ID\x20is:',_0x4926ac['id']);return getEndUser(_0x42919d,_0xa246de[_0xf745('0xd')],_0xa246de['calleridnum']);})[_0xf745('0x16')](function(_0xf19217){_0x49cbe5=_0xf19217;logger['info'](_0xf745('0x43'),_0x49cbe5['id']);return getTicket(_0x42919d,_0x4926ac,_0x49cbe5,_0x5dd344,_0xa246de);})[_0xf745('0x16')](function(_0x15a2d5){if(_0x15a2d5&&_0x15a2d5['id']){logger[_0xf745('0x17')]('Ticket\x20created!');logger[_0xf745('0x17')](_0xf745('0x44'),_0x15a2d5['id']);logger[_0xf745('0x17')](_0xf745('0x3d'),_0xf745('0x45'));emit(util[_0xf745('0x1a')]('user:%s',_0x58c447[_0xf745('0x39')]),'trigger:browser:url',{'uri':util[_0xf745('0x1a')](_0xf745('0x46'),_0x42919d['remoteUri'],_0x15a2d5['id'])});}})[_0xf745('0x47')](function(_0x58634c){logger['error'](_0xf745('0x3d'),JSON[_0xf745('0x48')](_0x58634c));});};exports[_0xf745('0x49')]=function(_0x263e7c,_0x491172,_0x5b6e7d,_0x370af0,_0x30f0b6,_0x240204,_0x29d287){var _0x442fa8,_0x4d61ee;_0x240204[_0xf745('0x1c')]=intUtil[_0xf745('0x3b')](_0x240204[_0xf745('0x1c')]);_0x240204['serverUrl']=intUtil[_0xf745('0x3b')](_0x240204['serverUrl']);if(_0x29d287&&_0x29d287[_0xf745('0x4a')]&&_0x29d287[_0xf745('0x4a')]!==_0xf745('0x4b')){logger['info'](_0xf745('0x4c'),_0xf745('0x3e'));_0x491172['recordingURL']=util['format'](_0xf745('0x40'),_0x240204[_0xf745('0x3c')],_0x491172['uniqueid'],md5(_0x491172[_0xf745('0x41')]));}headers[_0xf745('0x42')]=getAuth(_0x240204);return getUser(_0x240204,_0x370af0['email'])[_0xf745('0x16')](function(_0x4900be){_0x442fa8=_0x4900be;logger[_0xf745('0x17')]('The\x20User\x20ID\x20is:',_0x442fa8['id']);return getEndUser(_0x240204,_0x491172['destcalleridname'],_0x491172[_0xf745('0x4d')]);})[_0xf745('0x16')](function(_0x571011){_0x4d61ee=_0x571011;logger[_0xf745('0x17')](_0xf745('0x43'),_0x4d61ee['id']);return getTicket(_0x240204,_0x442fa8,_0x4d61ee,_0x5b6e7d,_0x491172);})[_0xf745('0x16')](function(_0x358719){if(_0x358719&&_0x358719['id']){logger['info'](_0xf745('0x18'));logger[_0xf745('0x17')](_0xf745('0x44'),_0x358719['id']);logger[_0xf745('0x17')](_0xf745('0x4c'),_0xf745('0x45'));emit(util[_0xf745('0x1a')](_0xf745('0x4e'),_0x370af0[_0xf745('0x39')]),_0xf745('0x4f'),{'uri':util[_0xf745('0x1a')](_0xf745('0x46'),_0x240204[_0xf745('0x1c')],_0x358719['id'])});}})['catch'](function(_0x5b0ad9){logger[_0xf745('0x50')](_0xf745('0x4c'),JSON[_0xf745('0x48')](_0x5b0ad9));});};exports['unmanaged']=function(_0xf973be,_0x22d6f2,_0x5c2d02,_0xe33e3,_0x480425,_0x2cd138){var _0x512485,_0x4fb00e;_0x2cd138[_0xf745('0x1c')]=intUtil[_0xf745('0x3b')](_0x2cd138[_0xf745('0x1c')]);_0x2cd138[_0xf745('0x3c')]=intUtil[_0xf745('0x3b')](_0x2cd138[_0xf745('0x3c')]);if(_0x480425&&_0x480425[_0xf745('0x51')]){logger['info']('['+_0x22d6f2[_0xf745('0x52')][_0xf745('0x53')]()+']',_0xf745('0x3e'));_0x22d6f2['recordingURL']=util[_0xf745('0x1a')](_0xf745('0x40'),_0x2cd138[_0xf745('0x3c')],_0x22d6f2[_0xf745('0x41')],md5(_0x22d6f2[_0xf745('0x41')]));}else{_0x22d6f2['recordingURL']='';}headers['Authorization']=getAuth(_0x2cd138);return getUser(_0x2cd138,'')[_0xf745('0x16')](function(_0x57e810){_0x512485=_0x57e810;logger[_0xf745('0x17')](_0xf745('0x54'),_0x512485['id']);return getEndUser(_0x2cd138,_0x22d6f2['calleridname'],_0x22d6f2['calleridnum']);})[_0xf745('0x16')](function(_0x43ba41){_0x4fb00e=_0x43ba41;logger[_0xf745('0x17')](_0xf745('0x43'),_0x4fb00e['id']);return getTicket(_0x2cd138,_0x512485,_0x4fb00e,_0x5c2d02,_0x22d6f2);})[_0xf745('0x16')](function(_0x531642){if(_0x531642){logger[_0xf745('0x17')]('Ticket\x20created!');logger[_0xf745('0x17')]('The\x20Ticket\x20ID\x20is:',_0x531642['id']);}})[_0xf745('0x47')](function(_0x139cdf){logger[_0xf745('0x50')]('['+_0x22d6f2[_0xf745('0x52')][_0xf745('0x53')]()+']',JSON[_0xf745('0x48')](_0x139cdf));});};