Built motion from commit 538092ac.|2.6.10
[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 _0x278b=['lastevent','lodash','md5','util','../../../../config/environment','freshdesk','redis','localhost','socket.io-emitter','application/json','emit','format','Caller\x20-\x20%s','calleridname','getString','Subjects','Descriptions','<br>','Tags','mapValues','custom_fields','value','%s/api/v2/tickets','remoteUri','POST','then','info','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','Agent\x20found!','find','contact','email','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','Enduser\x20created.','Basic\x20%s','apiKey','toString','debug','[HTTP]','stringify','defaults','GET','map','includes','picklist','type','nameField','content','string','idField','push','variable','customVariable','Variable','name','customField','toLowerCase','queue','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','[QUEUE]','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','[OUTBOUND]','destcalleridname','destcalleridnum','unmanaged','toUpperCase','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s'];(function(_0x238671,_0x34aea0){var _0x474844=function(_0x26cab4){while(--_0x26cab4){_0x238671['push'](_0x238671['shift']());}};_0x474844(++_0x34aea0);}(_0x278b,0x16d));var _0xb278=function(_0x11e05d,_0x3a4491){_0x11e05d=_0x11e05d-0x0;var _0x335588=_0x278b[_0x11e05d];return _0x335588;};'use strict';var _=require(_0xb278('0x0'));var rp=require('request-promise');var md5=require(_0xb278('0x1'));var util=require(_0xb278('0x2'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0xb278('0x3'));var logger=require('../../../../config/logger')(_0xb278('0x4'));config[_0xb278('0x5')]=_['defaults'](config[_0xb278('0x5')],{'host':_0xb278('0x6'),'port':0x18eb});var io=require(_0xb278('0x7'))(new Redis(config[_0xb278('0x5')]));var headers={'Content-Type':_0xb278('0x8'),'Accept':'application/json'};function emit(_0x5e9c87,_0x3879da,_0x1dd1f3){io['to'](_0x5e9c87)[_0xb278('0x9')](_0x3879da,_0x1dd1f3);}function getTicket(_0x79ae3c,_0x802668,_0x14b1d4,_0xd80ca9,_0x161e20){logger['info']('Creating\x20new\x20ticket...');var _0x514d6c=_['merge']({'responder_id':_0x802668['id'],'requester_id':_0x14b1d4['id'],'name':util[_0xb278('0xa')](_0xb278('0xb'),_0x161e20[_0xb278('0xc')]),'phone':_0x161e20['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xb278('0xd')](_0xd80ca9[_0xb278('0xe')],_0x161e20,'\x20'),'description':intUtil[_0xb278('0xd')](_0xd80ca9[_0xb278('0xf')],_0x161e20,_0xb278('0x10')),'tags':getTags(_0xd80ca9[_0xb278('0x11')],'name')},getCustomFields(_0xd80ca9['Fields'],_0x161e20));_0x514d6c['custom_fields']=_[_0xb278('0x12')](_['keyBy'](_0x514d6c[_0xb278('0x13')],'id'),_0xb278('0x14'));return request({'uri':util[_0xb278('0xa')](_0xb278('0x15'),_0x79ae3c[_0xb278('0x16')]),'method':_0xb278('0x17'),'body':_0x514d6c})[_0xb278('0x18')](function(_0x171ca4){logger[_0xb278('0x19')](_0xb278('0x1a'));return _0x171ca4;});}function getUser(_0xdd4f9b,_0x1be675){if(intUtil[_0xb278('0x1b')](_0x1be675)){return request({'uri':util[_0xb278('0xa')](_0xb278('0x1c'),_0xdd4f9b['remoteUri']),'qs':{'email':_0x1be675}})[_0xb278('0x18')](function(_0x34483b){if(_0x34483b[_0xb278('0x1d')]){logger['info'](_0xb278('0x1e'));return _[_0xb278('0x1f')](_0x34483b,function(_0x916525){return _0x916525[_0xb278('0x20')][_0xb278('0x21')]===_0x1be675;});}else{logger[_0xb278('0x19')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xb278('0xa')](_0xb278('0x22'),_0xdd4f9b[_0xb278('0x16')])})[_0xb278('0x18')](function(_0xdd1625){logger['info'](_0xb278('0x23'));return _0xdd1625;});}});}else{logger['info'](_0xb278('0x24'));return request({'uri':util[_0xb278('0xa')](_0xb278('0x22'),_0xdd4f9b[_0xb278('0x16')])})[_0xb278('0x18')](function(_0x5c2c1e){logger['info'](_0xb278('0x23'));return _0x5c2c1e;});}}function getEndUser(_0x3d01fd,_0x2af726,_0x1447fa){logger[_0xb278('0x19')]('Searching\x20enduser\x20with\x20phone',_0x1447fa);return request({'uri':util['format']('%s/api/v2/contacts',_0x3d01fd[_0xb278('0x16')]),'qs':{'phone':_0x1447fa}})[_0xb278('0x18')](function(_0x26db03){if(_0x26db03[_0xb278('0x1d')]){logger[_0xb278('0x19')](_0xb278('0x25'));return _[_0xb278('0x1f')](_0x26db03,{'phone':_0x1447fa});}else{logger['info'](_0xb278('0x26'));return request({'uri':util[_0xb278('0xa')](_0xb278('0x27'),_0x3d01fd[_0xb278('0x16')]),'method':'POST','body':{'name':_0x2af726,'phone':_0x1447fa}})[_0xb278('0x18')](function(_0x5c69fa){logger[_0xb278('0x19')](_0xb278('0x28'));return _0x5c69fa;});}});}function getAuth(_0x5d9ff8){return util[_0xb278('0xa')](_0xb278('0x29'),new Buffer(_0x5d9ff8[_0xb278('0x2a')]+':X')[_0xb278('0x2b')]('base64'));}function request(_0x3c7bb4){logger[_0xb278('0x2c')](_0xb278('0x2d'),JSON[_0xb278('0x2e')](_0x3c7bb4));return rp(_[_0xb278('0x2f')](_0x3c7bb4,{'method':_0xb278('0x30'),'headers':headers,'json':!![]}));}function getTags(_0x34627b,_0x5db016){var _0x431bed=[];if(_0x34627b&&_0x34627b[_0xb278('0x1d')]>0x0){_0x431bed=_[_0xb278('0x31')](_0x34627b,_0x5db016);}return _0x431bed;}function getCustomFields(_0x2c9307,_0x3a2be9){var _0x1b2ff4=[];var _0x5bbc08={'custom_fields':[]};if(_0x2c9307[_0xb278('0x1d')]>0x0){_['forEach'](_0x2c9307,function(_0x51ae47){if(_[_0xb278('0x32')](['string',_0xb278('0x33')],_0x51ae47[_0xb278('0x34')])&&_0x51ae47[_0xb278('0x35')]&&!_0x51ae47['customField']){_0x5bbc08[_0x51ae47[_0xb278('0x35')]['toLowerCase']()]=_0x51ae47[_0xb278('0x36')][_0xb278('0x2b')]();}else if(_[_0xb278('0x32')]([_0xb278('0x37'),_0xb278('0x33')],_0x51ae47[_0xb278('0x34')])&&_0x51ae47[_0xb278('0x38')]&&_0x51ae47['customField']){_0x5bbc08[_0xb278('0x13')][_0xb278('0x39')]({'id':_0x51ae47[_0xb278('0x38')],'value':_0x51ae47['content'][_0xb278('0x2b')]()});}else if(_0x51ae47[_0xb278('0x34')]===_0xb278('0x3a')&&_0x51ae47['variableName']&&_0x51ae47[_0xb278('0x38')]&&_0x51ae47['customField']){_0x3a2be9[_0x51ae47['variableName']]&&_0x5bbc08[_0xb278('0x13')][_0xb278('0x39')]({'id':_0x51ae47[_0xb278('0x38')],'value':_0x3a2be9[_0x51ae47['variableName']][_0xb278('0x2b')]()});}else if(_0x51ae47['type']===_0xb278('0x3b')&&_0x51ae47[_0xb278('0x3c')]&&_0x51ae47['Variable'][_0xb278('0x3d')]&&_0x51ae47[_0xb278('0x38')]&&_0x51ae47[_0xb278('0x3e')]){_0x3a2be9[_0x51ae47[_0xb278('0x3c')][_0xb278('0x3d')][_0xb278('0x3f')]()]&&_0x5bbc08['custom_fields'][_0xb278('0x39')]({'id':_0x51ae47[_0xb278('0x38')],'value':_0x3a2be9[_0x51ae47[_0xb278('0x3c')]['name'][_0xb278('0x3f')]()][_0xb278('0x2b')]()});}});}return _0x5bbc08;}exports[_0xb278('0x40')]=function(_0x52c751,_0x4ebf65,_0xc86662,_0x4a0356,_0x25dc0a,_0x2325e0){var _0x401b90,_0x260fbf;_0x2325e0[_0xb278('0x16')]=intUtil[_0xb278('0x41')](_0x2325e0[_0xb278('0x16')]);_0x2325e0[_0xb278('0x42')]=intUtil[_0xb278('0x41')](_0x2325e0[_0xb278('0x42')]);if(_0x25dc0a&&_0x25dc0a[_0xb278('0x43')]){logger[_0xb278('0x19')]('[QUEUE]',_0xb278('0x44'));_0x4ebf65[_0xb278('0x45')]=util[_0xb278('0xa')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2325e0[_0xb278('0x42')],_0x4ebf65[_0xb278('0x46')],md5(_0x4ebf65[_0xb278('0x46')]));}else{_0x4ebf65[_0xb278('0x45')]='';}headers[_0xb278('0x47')]=getAuth(_0x2325e0);return getUser(_0x2325e0,_0x4a0356[_0xb278('0x21')])[_0xb278('0x18')](function(_0x8d58b7){_0x401b90=_0x8d58b7;logger[_0xb278('0x19')](_0xb278('0x48'),_0x401b90['id']);return getEndUser(_0x2325e0,_0x4ebf65[_0xb278('0xc')],_0x4ebf65[_0xb278('0x49')]);})[_0xb278('0x18')](function(_0x50ece2){_0x260fbf=_0x50ece2;logger['info'](_0xb278('0x4a'),_0x260fbf['id']);return getTicket(_0x2325e0,_0x401b90,_0x260fbf,_0xc86662,_0x4ebf65);})[_0xb278('0x18')](function(_0x6aee85){if(_0x6aee85&&_0x6aee85['id']){logger[_0xb278('0x19')]('Ticket\x20created!');logger['info'](_0xb278('0x4b'),_0x6aee85['id']);logger['info'](_0xb278('0x4c'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xb278('0xa')](_0xb278('0x4d'),_0x4a0356[_0xb278('0x3d')]),_0xb278('0x4e'),{'uri':util[_0xb278('0xa')](_0xb278('0x4f'),_0x2325e0['remoteUri'],_0x6aee85['id'])});}})[_0xb278('0x50')](function(_0x5312dc){logger[_0xb278('0x51')](_0xb278('0x4c'),JSON['stringify'](_0x5312dc));});};exports[_0xb278('0x52')]=function(_0x1d29d9,_0x96292a,_0x298205,_0xd048d2,_0x1de014,_0x354695,_0x1a7835){var _0x3583b9,_0x456abb;_0x354695[_0xb278('0x16')]=intUtil[_0xb278('0x41')](_0x354695['remoteUri']);_0x354695[_0xb278('0x42')]=intUtil[_0xb278('0x41')](_0x354695[_0xb278('0x42')]);if(_0x1a7835&&_0x1a7835[_0xb278('0x53')]&&_0x1a7835[_0xb278('0x53')]!=='none'){logger[_0xb278('0x19')](_0xb278('0x54'),'Recording\x20is\x20enabled!');_0x96292a[_0xb278('0x45')]=util[_0xb278('0xa')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x354695[_0xb278('0x42')],_0x96292a[_0xb278('0x46')],md5(_0x96292a[_0xb278('0x46')]));}headers[_0xb278('0x47')]=getAuth(_0x354695);return getUser(_0x354695,_0xd048d2[_0xb278('0x21')])[_0xb278('0x18')](function(_0x3b1353){_0x3583b9=_0x3b1353;logger[_0xb278('0x19')](_0xb278('0x48'),_0x3583b9['id']);return getEndUser(_0x354695,_0x96292a[_0xb278('0x55')],_0x96292a[_0xb278('0x56')]);})[_0xb278('0x18')](function(_0x4bbe8e){_0x456abb=_0x4bbe8e;logger['info']('The\x20Enduser\x20ID\x20is:',_0x456abb['id']);return getTicket(_0x354695,_0x3583b9,_0x456abb,_0x298205,_0x96292a);})[_0xb278('0x18')](function(_0x1e4558){if(_0x1e4558&&_0x1e4558['id']){logger[_0xb278('0x19')]('Ticket\x20created!');logger[_0xb278('0x19')]('The\x20Ticket\x20ID\x20is:',_0x1e4558['id']);logger[_0xb278('0x19')](_0xb278('0x54'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xb278('0xa')](_0xb278('0x4d'),_0xd048d2[_0xb278('0x3d')]),_0xb278('0x4e'),{'uri':util[_0xb278('0xa')](_0xb278('0x4f'),_0x354695[_0xb278('0x16')],_0x1e4558['id'])});}})[_0xb278('0x50')](function(_0x35d710){logger[_0xb278('0x51')]('[OUTBOUND]',JSON[_0xb278('0x2e')](_0x35d710));});};exports[_0xb278('0x57')]=function(_0x20c47a,_0x2effdd,_0x48a210,_0x4b6f66,_0x25882d,_0x224e58){var _0x31035f,_0x40aaa5;_0x224e58['remoteUri']=intUtil[_0xb278('0x41')](_0x224e58[_0xb278('0x16')]);_0x224e58['serverUrl']=intUtil[_0xb278('0x41')](_0x224e58['serverUrl']);if(_0x25882d&&_0x25882d[_0xb278('0x43')]){logger[_0xb278('0x19')]('['+_0x2effdd['lastevent'][_0xb278('0x58')]()+']','Recording\x20is\x20enabled!');_0x2effdd[_0xb278('0x45')]=util['format'](_0xb278('0x59'),_0x224e58[_0xb278('0x42')],_0x2effdd['uniqueid'],md5(_0x2effdd[_0xb278('0x46')]));}else{_0x2effdd[_0xb278('0x45')]='';}headers['Authorization']=getAuth(_0x224e58);return getUser(_0x224e58,'')['then'](function(_0x3ab775){_0x31035f=_0x3ab775;logger[_0xb278('0x19')]('The\x20User\x20ID\x20is:',_0x31035f['id']);return getEndUser(_0x224e58,_0x2effdd[_0xb278('0xc')],_0x2effdd[_0xb278('0x49')]);})[_0xb278('0x18')](function(_0x44ae9c){_0x40aaa5=_0x44ae9c;logger[_0xb278('0x19')](_0xb278('0x4a'),_0x40aaa5['id']);return getTicket(_0x224e58,_0x31035f,_0x40aaa5,_0x48a210,_0x2effdd);})[_0xb278('0x18')](function(_0x1361e4){if(_0x1361e4){logger[_0xb278('0x19')]('Ticket\x20created!');logger['info'](_0xb278('0x4b'),_0x1361e4['id']);}})[_0xb278('0x50')](function(_0xc15031){logger[_0xb278('0x51')]('['+_0x2effdd[_0xb278('0x5a')][_0xb278('0x58')]()+']',JSON[_0xb278('0x2e')](_0xc15031));});};