Built motion from commit (unavailable).|2.0.75
[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 _0x0713=['error','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridnum','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','abandoned','[ABANDONED]','md5','util','./util','../../../../config/logger','freshdesk','localhost','application/json','emit','info','merge','format','Caller\x20-\x20%s','calleridname','getString','Subjects','Descriptions','<br>','Fields','mapValues','keyBy','value','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','%s/api/v2/agents','length','Agent\x20found!','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','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','toString','debug','[HTTP]','stringify','defaults','GET','forEach','type','nameField','customField','toLowerCase','content','string','idField','variable','variableName','push','customVariable','Variable','name','queue','stripTrailingSlash','serverUrl','monitor_format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','%s/helpdesk/tickets/%d','catch'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require(_0x3071('0x0'));var util=require(_0x3071('0x1'));var intUtil=require(_0x3071('0x2'));var logger=require(_0x3071('0x3'))(_0x3071('0x4'));var io=require('socket.io-emitter')({'host':_0x3071('0x5'),'port':0x18eb});var headers={'Content-Type':_0x3071('0x6'),'Accept':_0x3071('0x6')};function emit(_0x3137c8,_0xabd7b6,_0x41cf76){io['to'](_0x3137c8)[_0x3071('0x7')](_0xabd7b6,_0x41cf76);}function getTicket(_0x2f1e87,_0xbd737f,_0x22274c,_0x3e9a5e,_0x2fce7a){logger[_0x3071('0x8')]('Creating\x20new\x20ticket...');var _0x3457cd=_[_0x3071('0x9')]({'responder_id':_0xbd737f['id'],'requester_id':_0x22274c['id'],'name':util[_0x3071('0xa')](_0x3071('0xb'),_0x2fce7a[_0x3071('0xc')]),'phone':_0x2fce7a['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x3071('0xd')](_0x3e9a5e[_0x3071('0xe')],_0x2fce7a,'\x20'),'description':intUtil[_0x3071('0xd')](_0x3e9a5e[_0x3071('0xf')],_0x2fce7a,_0x3071('0x10')),'tags':getTags(_0x3e9a5e['Tags'],'name')},getCustomFields(_0x3e9a5e[_0x3071('0x11')],_0x2fce7a));_0x3457cd['custom_fields']=_[_0x3071('0x12')](_[_0x3071('0x13')](_0x3457cd['custom_fields'],'id'),_0x3071('0x14'));return request({'uri':util['format'](_0x3071('0x15'),_0x2f1e87[_0x3071('0x16')]),'method':_0x3071('0x17'),'body':_0x3457cd})[_0x3071('0x18')](function(_0x1caa5d){logger[_0x3071('0x8')](_0x3071('0x19'));return _0x1caa5d;});}function getUser(_0x11bdc9,_0x21aad3){logger[_0x3071('0x8')]('Getting\x20agent\x20with\x20email',_0x21aad3);return request({'uri':util[_0x3071('0xa')](_0x3071('0x1a'),_0x11bdc9[_0x3071('0x16')]),'qs':{'email':_0x21aad3}})[_0x3071('0x18')](function(_0x3acf0e){if(_0x3acf0e[_0x3071('0x1b')]){logger[_0x3071('0x8')](_0x3071('0x1c'));return _['find'](_0x3acf0e,function(_0x359e66){return _0x359e66[_0x3071('0x1d')][_0x3071('0x1e')]===_0x21aad3;});}else{logger['info'](_0x3071('0x1f'));return request({'uri':util['format'](_0x3071('0x20'),_0x11bdc9[_0x3071('0x16')])})[_0x3071('0x18')](function(_0x457b57){logger[_0x3071('0x8')](_0x3071('0x21'));return _0x457b57;});}});}function getEndUser(_0x3c5cef,_0x211b4f,_0x542646){logger['info'](_0x3071('0x22'),_0x542646);return request({'uri':util[_0x3071('0xa')](_0x3071('0x23'),_0x3c5cef[_0x3071('0x16')]),'qs':{'phone':_0x542646}})[_0x3071('0x18')](function(_0x44b45f){if(_0x44b45f[_0x3071('0x1b')]){logger[_0x3071('0x8')](_0x3071('0x24'));return _['find'](_0x44b45f,{'phone':_0x542646});}else{logger[_0x3071('0x8')](_0x3071('0x25'));return request({'uri':util[_0x3071('0xa')]('%s/api/v2/contacts',_0x3c5cef[_0x3071('0x16')]),'method':_0x3071('0x17'),'body':{'name':_0x211b4f,'phone':_0x542646}})[_0x3071('0x18')](function(_0x950fde){logger[_0x3071('0x8')](_0x3071('0x26'));return _0x950fde;});}});}function getAuth(_0x177b5f){return util[_0x3071('0xa')](_0x3071('0x27'),new Buffer(_0x177b5f[_0x3071('0x28')]+':X')[_0x3071('0x29')]('base64'));}function request(_0x4f1484){logger[_0x3071('0x2a')](_0x3071('0x2b'),JSON[_0x3071('0x2c')](_0x4f1484));return rp(_[_0x3071('0x2d')](_0x4f1484,{'method':_0x3071('0x2e'),'headers':headers,'json':!![]}));}function getTags(_0x29538c,_0x32b6b1){var _0x1ccc41=[];if(_0x29538c&&_0x29538c['length']>0x0){_0x1ccc41=_['map'](_0x29538c,_0x32b6b1);}return _0x1ccc41;}function getCustomFields(_0x4ab983,_0x1b0aaf){var _0x392800=[];var _0x5b5bf1={'custom_fields':[]};if(_0x4ab983[_0x3071('0x1b')]>0x0){_[_0x3071('0x2f')](_0x4ab983,function(_0x25250e){if(_0x25250e[_0x3071('0x30')]==='string'&&_0x25250e[_0x3071('0x31')]&&!_0x25250e[_0x3071('0x32')]){_0x5b5bf1[_0x25250e[_0x3071('0x31')][_0x3071('0x33')]()]=_0x25250e[_0x3071('0x34')][_0x3071('0x29')]();}else if(_0x25250e[_0x3071('0x30')]===_0x3071('0x35')&&_0x25250e['idField']&&_0x25250e[_0x3071('0x32')]){_0x5b5bf1['custom_fields']['push']({'id':_0x25250e[_0x3071('0x36')],'value':_0x25250e[_0x3071('0x34')]['toString']()});}else if(_0x25250e[_0x3071('0x30')]===_0x3071('0x37')&&_0x25250e[_0x3071('0x38')]&&_0x25250e[_0x3071('0x36')]&&_0x25250e[_0x3071('0x32')]){_0x1b0aaf[_0x25250e[_0x3071('0x38')]]&&_0x5b5bf1['custom_fields'][_0x3071('0x39')]({'id':_0x25250e[_0x3071('0x36')],'value':_0x1b0aaf[_0x25250e['variableName']][_0x3071('0x29')]()});}else if(_0x25250e['type']===_0x3071('0x3a')&&_0x25250e[_0x3071('0x3b')]&&_0x25250e['Variable']['name']&&_0x25250e[_0x3071('0x36')]&&_0x25250e[_0x3071('0x32')]){_0x1b0aaf[_0x25250e[_0x3071('0x3b')]['name'][_0x3071('0x33')]()]&&_0x5b5bf1['custom_fields'][_0x3071('0x39')]({'id':_0x25250e['idField'],'value':_0x1b0aaf[_0x25250e[_0x3071('0x3b')][_0x3071('0x3c')][_0x3071('0x33')]()][_0x3071('0x29')]()});}});}return _0x5b5bf1;}exports[_0x3071('0x3d')]=function(_0x593c9c,_0x53ed25,_0x4337eb,_0x17f9e6,_0x1455be,_0x1f69a6){var _0x525389,_0x3cfc05;_0x1f69a6[_0x3071('0x16')]=intUtil[_0x3071('0x3e')](_0x1f69a6[_0x3071('0x16')]);_0x1f69a6[_0x3071('0x3f')]=intUtil[_0x3071('0x3e')](_0x1f69a6['serverUrl']);if(_0x1455be&&_0x1455be[_0x3071('0x40')]){logger['info']('[QUEUE]','Recording\x20is\x20enabled!');_0x53ed25['recordingURL']=util[_0x3071('0xa')](_0x3071('0x41'),_0x1f69a6[_0x3071('0x3f')],_0x53ed25[_0x3071('0x42')],md5(_0x53ed25[_0x3071('0x42')]));}else{_0x53ed25[_0x3071('0x43')]='';}headers[_0x3071('0x44')]=getAuth(_0x1f69a6);return getUser(_0x1f69a6,_0x17f9e6[_0x3071('0x1e')])['then'](function(_0x1e8222){_0x525389=_0x1e8222;logger[_0x3071('0x8')](_0x3071('0x45'),_0x525389['id']);return getEndUser(_0x1f69a6,_0x53ed25[_0x3071('0xc')],_0x53ed25[_0x3071('0x46')]);})['then'](function(_0x5c93c7){_0x3cfc05=_0x5c93c7;logger[_0x3071('0x8')](_0x3071('0x47'),_0x3cfc05['id']);return getTicket(_0x1f69a6,_0x525389,_0x3cfc05,_0x4337eb,_0x53ed25);})[_0x3071('0x18')](function(_0x5c5865){if(_0x5c5865&&_0x5c5865['id']){logger[_0x3071('0x8')]('Ticket\x20created!');logger[_0x3071('0x8')]('The\x20Ticket\x20ID\x20is:',_0x5c5865['id']);logger[_0x3071('0x8')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x3071('0xa')]('user:%s',_0x17f9e6[_0x3071('0x3c')]),'trigger:browser:url',{'uri':util[_0x3071('0xa')](_0x3071('0x48'),_0x1f69a6[_0x3071('0x16')],_0x5c5865['id'])});}})[_0x3071('0x49')](function(_0x554047){logger[_0x3071('0x4a')]('[QUEUE]',JSON[_0x3071('0x2c')](_0x554047));});};exports['outbound']=function(_0x46924d,_0x2060e9,_0x4d395a,_0x131ae6,_0x117e73,_0x224a70,_0x38bcc2){var _0x349adb,_0x2622b4;_0x224a70[_0x3071('0x16')]=intUtil['stripTrailingSlash'](_0x224a70[_0x3071('0x16')]);_0x224a70[_0x3071('0x3f')]=intUtil[_0x3071('0x3e')](_0x224a70[_0x3071('0x3f')]);if(_0x38bcc2&&_0x38bcc2['recordingFormat']&&_0x38bcc2[_0x3071('0x4b')]!==_0x3071('0x4c')){logger[_0x3071('0x8')](_0x3071('0x4d'),_0x3071('0x4e'));_0x2060e9[_0x3071('0x43')]=util[_0x3071('0xa')](_0x3071('0x41'),_0x224a70[_0x3071('0x3f')],_0x2060e9[_0x3071('0x42')],md5(_0x2060e9[_0x3071('0x42')]));}headers[_0x3071('0x44')]=getAuth(_0x224a70);return getUser(_0x224a70,_0x131ae6[_0x3071('0x1e')])[_0x3071('0x18')](function(_0x1656de){_0x349adb=_0x1656de;logger[_0x3071('0x8')]('The\x20User\x20ID\x20is:',_0x349adb['id']);return getEndUser(_0x224a70,_0x2060e9['destcalleridname'],_0x2060e9[_0x3071('0x4f')]);})['then'](function(_0x403761){_0x2622b4=_0x403761;logger[_0x3071('0x8')](_0x3071('0x47'),_0x2622b4['id']);return getTicket(_0x224a70,_0x349adb,_0x2622b4,_0x4d395a,_0x2060e9);})['then'](function(_0x1ec428){if(_0x1ec428&&_0x1ec428['id']){logger[_0x3071('0x8')]('Ticket\x20created!');logger['info'](_0x3071('0x50'),_0x1ec428['id']);logger[_0x3071('0x8')](_0x3071('0x4d'),_0x3071('0x51'));emit(util['format'](_0x3071('0x52'),_0x131ae6[_0x3071('0x3c')]),_0x3071('0x53'),{'uri':util[_0x3071('0xa')](_0x3071('0x48'),_0x224a70['remoteUri'],_0x1ec428['id'])});}})[_0x3071('0x49')](function(_0x67e36e){logger[_0x3071('0x4a')](_0x3071('0x4d'),JSON[_0x3071('0x2c')](_0x67e36e));});};exports[_0x3071('0x54')]=function(_0x71d921,_0x4bea5d,_0x4d6ed0,_0x18cad9,_0x4de4f3,_0xe96994){var _0x26ba8a,_0x499b6a;_0xe96994[_0x3071('0x16')]=intUtil[_0x3071('0x3e')](_0xe96994['remoteUri']);_0xe96994[_0x3071('0x3f')]=intUtil[_0x3071('0x3e')](_0xe96994[_0x3071('0x3f')]);if(_0x4de4f3&&_0x4de4f3[_0x3071('0x40')]){logger[_0x3071('0x8')]('[ABANDONED]',_0x3071('0x4e'));_0x4bea5d[_0x3071('0x43')]=util[_0x3071('0xa')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xe96994[_0x3071('0x3f')],_0x4bea5d[_0x3071('0x42')],md5(_0x4bea5d[_0x3071('0x42')]));}else{_0x4bea5d[_0x3071('0x43')]='';}headers[_0x3071('0x44')]=getAuth(_0xe96994);return getUser(_0xe96994,_0x18cad9[_0x3071('0x1e')])[_0x3071('0x18')](function(_0x2e39ff){_0x26ba8a=_0x2e39ff;logger[_0x3071('0x8')]('The\x20User\x20ID\x20is:',_0x26ba8a['id']);return getEndUser(_0xe96994,_0x4bea5d[_0x3071('0xc')],_0x4bea5d[_0x3071('0x46')]);})[_0x3071('0x18')](function(_0x26ecb2){_0x499b6a=_0x26ecb2;logger[_0x3071('0x8')](_0x3071('0x47'),_0x499b6a['id']);return getTicket(_0xe96994,_0x26ba8a,_0x499b6a,_0x4d6ed0,_0x4bea5d);})[_0x3071('0x18')](function(_0x287974){if(_0x287974){logger[_0x3071('0x8')](_0x3071('0x19'));logger[_0x3071('0x8')]('The\x20Ticket\x20ID\x20is:',_0x287974['id']);}})[_0x3071('0x49')](function(_0x315044){logger[_0x3071('0x4a')](_0x3071('0x55'),JSON[_0x3071('0x2c')](_0x315044));});};