Built motion from commit 9d0783e6.|2.6.13
[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 _0xa4f2=['toString','[HTTP]','defaults','GET','map','forEach','string','picklist','type','nameField','customField','toLowerCase','content','push','idField','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','outbound','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','error','stringify','lastevent','toUpperCase','lodash','request-promise','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','localhost','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','merge','Caller\x20-\x20%s','calleridname','getString','Subjects','<br>','Tags','name','Fields','custom_fields','keyBy','value','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','validateEmail','format','%s/api/v2/agents','length','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.'];(function(_0x3f3f06,_0x581e5b){var _0x140feb=function(_0x4cc383){while(--_0x4cc383){_0x3f3f06['push'](_0x3f3f06['shift']());}};_0x140feb(++_0x581e5b);}(_0xa4f2,0x19d));var _0x2a4f=function(_0x3be82b,_0x3ef4fb){_0x3be82b=_0x3be82b-0x0;var _0x293c0e=_0xa4f2[_0x3be82b];return _0x293c0e;};'use strict';var _=require(_0x2a4f('0x0'));var rp=require(_0x2a4f('0x1'));var md5=require(_0x2a4f('0x2'));var util=require('util');var Redis=require(_0x2a4f('0x3'));var intUtil=require(_0x2a4f('0x4'));var config=require(_0x2a4f('0x5'));var logger=require(_0x2a4f('0x6'))(_0x2a4f('0x7'));config[_0x2a4f('0x8')]=_['defaults'](config[_0x2a4f('0x8')],{'host':_0x2a4f('0x9'),'port':0x18eb});var io=require(_0x2a4f('0xa'))(new Redis(config[_0x2a4f('0x8')]));var headers={'Content-Type':_0x2a4f('0xb'),'Accept':_0x2a4f('0xb')};function emit(_0x2bc56f,_0x49f090,_0x3e9a7f){io['to'](_0x2bc56f)[_0x2a4f('0xc')](_0x49f090,_0x3e9a7f);}function getTicket(_0x275013,_0x27ea59,_0x11c05e,_0x1b74bc,_0x4fd05a){logger[_0x2a4f('0xd')](_0x2a4f('0xe'));var _0x11e246=_[_0x2a4f('0xf')]({'responder_id':_0x27ea59['id'],'requester_id':_0x11c05e['id'],'name':util['format'](_0x2a4f('0x10'),_0x4fd05a[_0x2a4f('0x11')]),'phone':_0x4fd05a['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x2a4f('0x12')](_0x1b74bc[_0x2a4f('0x13')],_0x4fd05a,'\x20'),'description':intUtil[_0x2a4f('0x12')](_0x1b74bc['Descriptions'],_0x4fd05a,_0x2a4f('0x14')),'tags':getTags(_0x1b74bc[_0x2a4f('0x15')],_0x2a4f('0x16'))},getCustomFields(_0x1b74bc[_0x2a4f('0x17')],_0x4fd05a));_0x11e246[_0x2a4f('0x18')]=_['mapValues'](_[_0x2a4f('0x19')](_0x11e246[_0x2a4f('0x18')],'id'),_0x2a4f('0x1a'));return request({'uri':util['format'](_0x2a4f('0x1b'),_0x275013[_0x2a4f('0x1c')]),'method':_0x2a4f('0x1d'),'body':_0x11e246})[_0x2a4f('0x1e')](function(_0x177877){logger['info'](_0x2a4f('0x1f'));return _0x177877;});}function getUser(_0x29d2f0,_0x3dfbf8){if(intUtil[_0x2a4f('0x20')](_0x3dfbf8)){return request({'uri':util[_0x2a4f('0x21')](_0x2a4f('0x22'),_0x29d2f0[_0x2a4f('0x1c')]),'qs':{'email':_0x3dfbf8}})[_0x2a4f('0x1e')](function(_0x18c0d9){if(_0x18c0d9[_0x2a4f('0x23')]){logger[_0x2a4f('0xd')]('Agent\x20found!');return _[_0x2a4f('0x24')](_0x18c0d9,function(_0x1c8530){return _0x1c8530[_0x2a4f('0x25')][_0x2a4f('0x26')]===_0x3dfbf8;});}else{logger[_0x2a4f('0xd')](_0x2a4f('0x27'));return request({'uri':util['format'](_0x2a4f('0x28'),_0x29d2f0['remoteUri'])})[_0x2a4f('0x1e')](function(_0x543ca5){logger['info']('Admin\x20account\x20selected.');return _0x543ca5;});}});}else{logger[_0x2a4f('0xd')](_0x2a4f('0x29'));return request({'uri':util[_0x2a4f('0x21')](_0x2a4f('0x28'),_0x29d2f0[_0x2a4f('0x1c')])})[_0x2a4f('0x1e')](function(_0x353c43){logger[_0x2a4f('0xd')](_0x2a4f('0x2a'));return _0x353c43;});}}function getEndUser(_0x1afa4d,_0x218634,_0x3ee99d){logger['info'](_0x2a4f('0x2b'),_0x3ee99d);return request({'uri':util['format']('%s/api/v2/contacts',_0x1afa4d['remoteUri']),'qs':{'phone':_0x3ee99d}})[_0x2a4f('0x1e')](function(_0x20c309){if(_0x20c309[_0x2a4f('0x23')]){logger[_0x2a4f('0xd')](_0x2a4f('0x2c'));return _[_0x2a4f('0x24')](_0x20c309,{'phone':_0x3ee99d});}else{logger['info'](_0x2a4f('0x2d'));return request({'uri':util[_0x2a4f('0x21')]('%s/api/v2/contacts',_0x1afa4d[_0x2a4f('0x1c')]),'method':_0x2a4f('0x1d'),'body':{'name':_0x218634,'phone':_0x3ee99d}})[_0x2a4f('0x1e')](function(_0x5d996c){logger[_0x2a4f('0xd')](_0x2a4f('0x2e'));return _0x5d996c;});}});}function getAuth(_0x18408e){return util[_0x2a4f('0x21')]('Basic\x20%s',new Buffer(_0x18408e['apiKey']+':X')[_0x2a4f('0x2f')]('base64'));}function request(_0xfac2b){logger['debug'](_0x2a4f('0x30'),JSON['stringify'](_0xfac2b));return rp(_[_0x2a4f('0x31')](_0xfac2b,{'method':_0x2a4f('0x32'),'headers':headers,'json':!![]}));}function getTags(_0x22c3df,_0x2a5e8c){var _0x2922f8=[];if(_0x22c3df&&_0x22c3df[_0x2a4f('0x23')]>0x0){_0x2922f8=_[_0x2a4f('0x33')](_0x22c3df,_0x2a5e8c);}return _0x2922f8;}function getCustomFields(_0x307f5d,_0x462cdb){var _0x51394c=[];var _0x3323ad={'custom_fields':[]};if(_0x307f5d[_0x2a4f('0x23')]>0x0){_[_0x2a4f('0x34')](_0x307f5d,function(_0x499b7d){if(_['includes']([_0x2a4f('0x35'),_0x2a4f('0x36')],_0x499b7d[_0x2a4f('0x37')])&&_0x499b7d[_0x2a4f('0x38')]&&!_0x499b7d[_0x2a4f('0x39')]){_0x3323ad[_0x499b7d['nameField'][_0x2a4f('0x3a')]()]=_0x499b7d[_0x2a4f('0x3b')]['toString']();}else if(_['includes']([_0x2a4f('0x35'),_0x2a4f('0x36')],_0x499b7d[_0x2a4f('0x37')])&&_0x499b7d['idField']&&_0x499b7d[_0x2a4f('0x39')]){_0x3323ad['custom_fields'][_0x2a4f('0x3c')]({'id':_0x499b7d[_0x2a4f('0x3d')],'value':_0x499b7d['content'][_0x2a4f('0x2f')]()});}else if(_0x499b7d['type']==='variable'&&_0x499b7d[_0x2a4f('0x3e')]&&_0x499b7d[_0x2a4f('0x3d')]&&_0x499b7d['customField']){_0x462cdb[_0x499b7d[_0x2a4f('0x3e')]]&&_0x3323ad['custom_fields'][_0x2a4f('0x3c')]({'id':_0x499b7d[_0x2a4f('0x3d')],'value':_0x462cdb[_0x499b7d['variableName']]['toString']()});}else if(_0x499b7d[_0x2a4f('0x37')]===_0x2a4f('0x3f')&&_0x499b7d[_0x2a4f('0x40')]&&_0x499b7d[_0x2a4f('0x40')]['name']&&_0x499b7d['idField']&&_0x499b7d[_0x2a4f('0x39')]){_0x462cdb[_0x499b7d['Variable'][_0x2a4f('0x16')][_0x2a4f('0x3a')]()]&&_0x3323ad[_0x2a4f('0x18')][_0x2a4f('0x3c')]({'id':_0x499b7d['idField'],'value':_0x462cdb[_0x499b7d[_0x2a4f('0x40')][_0x2a4f('0x16')][_0x2a4f('0x3a')]()][_0x2a4f('0x2f')]()});}});}return _0x3323ad;}exports[_0x2a4f('0x41')]=function(_0x3b0160,_0x3a7065,_0x430a1e,_0x504d67,_0x1f6501,_0x3cbfd0){var _0x2bab1c,_0x59d831;_0x3cbfd0[_0x2a4f('0x1c')]=intUtil[_0x2a4f('0x42')](_0x3cbfd0[_0x2a4f('0x1c')]);_0x3cbfd0['serverUrl']=intUtil['stripTrailingSlash'](_0x3cbfd0[_0x2a4f('0x43')]);if(_0x1f6501&&_0x1f6501[_0x2a4f('0x44')]){logger['info']('[QUEUE]',_0x2a4f('0x45'));_0x3a7065[_0x2a4f('0x46')]=util['format'](_0x2a4f('0x47'),_0x3cbfd0[_0x2a4f('0x43')],_0x3a7065['uniqueid'],md5(_0x3a7065[_0x2a4f('0x48')]));}else{_0x3a7065['recordingURL']='';}headers[_0x2a4f('0x49')]=getAuth(_0x3cbfd0);return getUser(_0x3cbfd0,_0x504d67[_0x2a4f('0x26')])[_0x2a4f('0x1e')](function(_0x583c32){_0x2bab1c=_0x583c32;logger['info']('The\x20User\x20ID\x20is:',_0x2bab1c['id']);return getEndUser(_0x3cbfd0,_0x3a7065['calleridname'],_0x3a7065['calleridnum']);})[_0x2a4f('0x1e')](function(_0xc9ec0c){_0x59d831=_0xc9ec0c;logger['info'](_0x2a4f('0x4a'),_0x59d831['id']);return getTicket(_0x3cbfd0,_0x2bab1c,_0x59d831,_0x430a1e,_0x3a7065);})[_0x2a4f('0x1e')](function(_0x175076){if(_0x175076&&_0x175076['id']){logger[_0x2a4f('0xd')](_0x2a4f('0x1f'));logger[_0x2a4f('0xd')](_0x2a4f('0x4b'),_0x175076['id']);logger['info'](_0x2a4f('0x4c'),_0x2a4f('0x4d'));emit(util[_0x2a4f('0x21')](_0x2a4f('0x4e'),_0x504d67[_0x2a4f('0x16')]),_0x2a4f('0x4f'),{'uri':util[_0x2a4f('0x21')](_0x2a4f('0x50'),_0x3cbfd0['remoteUri'],_0x175076['id'])});}})[_0x2a4f('0x51')](function(_0x118ca3){logger['error'](_0x2a4f('0x4c'),JSON['stringify'](_0x118ca3));});};exports[_0x2a4f('0x52')]=function(_0x4c7d0a,_0x1aa981,_0x17b2e4,_0x194346,_0x4514d7,_0x1533c3,_0x1308d2){var _0x4a0bed,_0x3378b9;_0x1533c3[_0x2a4f('0x1c')]=intUtil['stripTrailingSlash'](_0x1533c3[_0x2a4f('0x1c')]);_0x1533c3[_0x2a4f('0x43')]=intUtil['stripTrailingSlash'](_0x1533c3[_0x2a4f('0x43')]);if(_0x1308d2&&_0x1308d2['recordingFormat']&&_0x1308d2[_0x2a4f('0x53')]!==_0x2a4f('0x54')){logger[_0x2a4f('0xd')](_0x2a4f('0x55'),_0x2a4f('0x45'));_0x1aa981['recordingURL']=util[_0x2a4f('0x21')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1533c3['serverUrl'],_0x1aa981[_0x2a4f('0x48')],md5(_0x1aa981['uniqueid']));}headers['Authorization']=getAuth(_0x1533c3);return getUser(_0x1533c3,_0x194346[_0x2a4f('0x26')])[_0x2a4f('0x1e')](function(_0x5a9ad6){_0x4a0bed=_0x5a9ad6;logger[_0x2a4f('0xd')](_0x2a4f('0x56'),_0x4a0bed['id']);return getEndUser(_0x1533c3,_0x1aa981[_0x2a4f('0x57')],_0x1aa981['destcalleridnum']);})[_0x2a4f('0x1e')](function(_0x2eaf1c){_0x3378b9=_0x2eaf1c;logger[_0x2a4f('0xd')](_0x2a4f('0x4a'),_0x3378b9['id']);return getTicket(_0x1533c3,_0x4a0bed,_0x3378b9,_0x17b2e4,_0x1aa981);})[_0x2a4f('0x1e')](function(_0x2581ab){if(_0x2581ab&&_0x2581ab['id']){logger[_0x2a4f('0xd')](_0x2a4f('0x1f'));logger[_0x2a4f('0xd')](_0x2a4f('0x4b'),_0x2581ab['id']);logger[_0x2a4f('0xd')](_0x2a4f('0x55'),_0x2a4f('0x4d'));emit(util['format'](_0x2a4f('0x4e'),_0x194346['name']),'trigger:browser:url',{'uri':util[_0x2a4f('0x21')](_0x2a4f('0x50'),_0x1533c3[_0x2a4f('0x1c')],_0x2581ab['id'])});}})[_0x2a4f('0x51')](function(_0x36df0d){logger[_0x2a4f('0x58')]('[OUTBOUND]',JSON[_0x2a4f('0x59')](_0x36df0d));});};exports['unmanaged']=function(_0x17fc48,_0x246093,_0x374615,_0x2409fe,_0x3862da,_0x2df84b){var _0x32ef3e,_0x4bbab5;_0x2df84b[_0x2a4f('0x1c')]=intUtil['stripTrailingSlash'](_0x2df84b[_0x2a4f('0x1c')]);_0x2df84b[_0x2a4f('0x43')]=intUtil[_0x2a4f('0x42')](_0x2df84b[_0x2a4f('0x43')]);if(_0x3862da&&_0x3862da[_0x2a4f('0x44')]){logger[_0x2a4f('0xd')]('['+_0x246093[_0x2a4f('0x5a')]['toUpperCase']()+']',_0x2a4f('0x45'));_0x246093[_0x2a4f('0x46')]=util[_0x2a4f('0x21')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2df84b[_0x2a4f('0x43')],_0x246093[_0x2a4f('0x48')],md5(_0x246093[_0x2a4f('0x48')]));}else{_0x246093[_0x2a4f('0x46')]='';}headers[_0x2a4f('0x49')]=getAuth(_0x2df84b);return getUser(_0x2df84b,'')[_0x2a4f('0x1e')](function(_0x16df9a){_0x32ef3e=_0x16df9a;logger[_0x2a4f('0xd')](_0x2a4f('0x56'),_0x32ef3e['id']);return getEndUser(_0x2df84b,_0x246093[_0x2a4f('0x11')],_0x246093['calleridnum']);})[_0x2a4f('0x1e')](function(_0x5a6398){_0x4bbab5=_0x5a6398;logger[_0x2a4f('0xd')](_0x2a4f('0x4a'),_0x4bbab5['id']);return getTicket(_0x2df84b,_0x32ef3e,_0x4bbab5,_0x374615,_0x246093);})['then'](function(_0x462e7e){if(_0x462e7e){logger[_0x2a4f('0xd')](_0x2a4f('0x1f'));logger[_0x2a4f('0xd')](_0x2a4f('0x4b'),_0x462e7e['id']);}})[_0x2a4f('0x51')](function(_0x11c7d2){logger[_0x2a4f('0x58')]('['+_0x246093[_0x2a4f('0x5a')][_0x2a4f('0x5b')]()+']',JSON[_0x2a4f('0x59')](_0x11c7d2));});};