Built motion from commit d1eab355.|2.6.28
[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 _0x0510=['push','variableName','customVariable','Variable','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','[QUEUE]','outbound','recordingFormat','[OUTBOUND]','destcalleridnum','The\x20Enduser\x20ID\x20is:','lastevent','toUpperCase','stringify','lodash','request-promise','md5','util','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Descriptions','<br>','Tags','name','Fields','custom_fields','keyBy','%s/api/v2/tickets','POST','then','Ticket\x20created!','validateEmail','remoteUri','length','Agent\x20found!','contact','email','%s/api/v2/agents/me','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','find','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Basic\x20%s','apiKey','toString','base64','[HTTP]','GET','map','forEach','string','picklist','type','nameField','customField','toLowerCase','idField'];(function(_0x5e76c6,_0xf16290){var _0x43fb22=function(_0x5cac4c){while(--_0x5cac4c){_0x5e76c6['push'](_0x5e76c6['shift']());}};_0x43fb22(++_0xf16290);}(_0x0510,0x181));var _0x0051=function(_0x3d991e,_0x15cb22){_0x3d991e=_0x3d991e-0x0;var _0x3cf704=_0x0510[_0x3d991e];return _0x3cf704;};'use strict';var _=require(_0x0051('0x0'));var rp=require(_0x0051('0x1'));var md5=require(_0x0051('0x2'));var util=require(_0x0051('0x3'));var Redis=require('ioredis');var intUtil=require(_0x0051('0x4'));var config=require(_0x0051('0x5'));var logger=require(_0x0051('0x6'))(_0x0051('0x7'));config[_0x0051('0x8')]=_[_0x0051('0x9')](config['redis'],{'host':_0x0051('0xa'),'port':0x18eb});var io=require(_0x0051('0xb'))(new Redis(config[_0x0051('0x8')]));var headers={'Content-Type':_0x0051('0xc'),'Accept':'application/json'};function emit(_0xba514d,_0x5c5826,_0x4928c6){io['to'](_0xba514d)[_0x0051('0xd')](_0x5c5826,_0x4928c6);}function getTicket(_0x309482,_0x317615,_0x1209a3,_0x22c974,_0x5bb938){logger[_0x0051('0xe')](_0x0051('0xf'));var _0x2a05ce=_['merge']({'responder_id':_0x317615['id'],'requester_id':_0x1209a3['id'],'name':util[_0x0051('0x10')](_0x0051('0x11'),_0x5bb938[_0x0051('0x12')]),'phone':_0x5bb938[_0x0051('0x13')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x0051('0x14')](_0x22c974['Subjects'],_0x5bb938,'\x20'),'description':intUtil[_0x0051('0x14')](_0x22c974[_0x0051('0x15')],_0x5bb938,_0x0051('0x16')),'tags':getTags(_0x22c974[_0x0051('0x17')],_0x0051('0x18'))},getCustomFields(_0x22c974[_0x0051('0x19')],_0x5bb938));_0x2a05ce[_0x0051('0x1a')]=_['mapValues'](_[_0x0051('0x1b')](_0x2a05ce[_0x0051('0x1a')],'id'),'value');return request({'uri':util['format'](_0x0051('0x1c'),_0x309482['remoteUri']),'method':_0x0051('0x1d'),'body':_0x2a05ce})[_0x0051('0x1e')](function(_0x58041b){logger[_0x0051('0xe')](_0x0051('0x1f'));return _0x58041b;});}function getUser(_0x29a293,_0x3c541e){if(intUtil[_0x0051('0x20')](_0x3c541e)){return request({'uri':util['format']('%s/api/v2/agents',_0x29a293[_0x0051('0x21')]),'qs':{'email':_0x3c541e}})[_0x0051('0x1e')](function(_0x3cd48e){if(_0x3cd48e[_0x0051('0x22')]){logger[_0x0051('0xe')](_0x0051('0x23'));return _['find'](_0x3cd48e,function(_0x274c4c){return _0x274c4c[_0x0051('0x24')][_0x0051('0x25')]===_0x3c541e;});}else{logger[_0x0051('0xe')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x0051('0x10')](_0x0051('0x26'),_0x29a293[_0x0051('0x21')])})[_0x0051('0x1e')](function(_0x12b004){logger[_0x0051('0xe')]('Admin\x20account\x20selected.');return _0x12b004;});}});}else{logger['info'](_0x0051('0x27'));return request({'uri':util[_0x0051('0x10')](_0x0051('0x26'),_0x29a293[_0x0051('0x21')])})[_0x0051('0x1e')](function(_0x482810){logger[_0x0051('0xe')](_0x0051('0x28'));return _0x482810;});}}function getEndUser(_0x1868b9,_0xdcdc11,_0x24b020){logger[_0x0051('0xe')](_0x0051('0x29'),_0x24b020);return request({'uri':util['format'](_0x0051('0x2a'),_0x1868b9[_0x0051('0x21')]),'qs':{'phone':_0x24b020}})['then'](function(_0x34f4c7){if(_0x34f4c7[_0x0051('0x22')]){logger[_0x0051('0xe')]('Enduser\x20found!');return _[_0x0051('0x2b')](_0x34f4c7,{'phone':_0x24b020});}else{logger[_0x0051('0xe')](_0x0051('0x2c'));return request({'uri':util[_0x0051('0x10')]('%s/api/v2/contacts',_0x1868b9[_0x0051('0x21')]),'method':_0x0051('0x1d'),'body':{'name':_0xdcdc11,'phone':_0x24b020}})[_0x0051('0x1e')](function(_0x47e224){logger[_0x0051('0xe')]('Enduser\x20created.');return _0x47e224;});}});}function getAuth(_0x1e37b2){return util[_0x0051('0x10')](_0x0051('0x2d'),new Buffer(_0x1e37b2[_0x0051('0x2e')]+':X')[_0x0051('0x2f')](_0x0051('0x30')));}function request(_0xd78e3c){logger['debug'](_0x0051('0x31'),JSON['stringify'](_0xd78e3c));return rp(_[_0x0051('0x9')](_0xd78e3c,{'method':_0x0051('0x32'),'headers':headers,'json':!![]}));}function getTags(_0x198283,_0x53f11a){var _0x5c4caa=[];if(_0x198283&&_0x198283[_0x0051('0x22')]>0x0){_0x5c4caa=_[_0x0051('0x33')](_0x198283,_0x53f11a);}return _0x5c4caa;}function getCustomFields(_0x46daaa,_0x577da7){var _0x256207=[];var _0x19208e={'custom_fields':[]};if(_0x46daaa[_0x0051('0x22')]>0x0){_[_0x0051('0x34')](_0x46daaa,function(_0x3fb11a){if(_['includes']([_0x0051('0x35'),_0x0051('0x36')],_0x3fb11a[_0x0051('0x37')])&&_0x3fb11a[_0x0051('0x38')]&&!_0x3fb11a[_0x0051('0x39')]){_0x19208e[_0x3fb11a[_0x0051('0x38')][_0x0051('0x3a')]()]=_0x3fb11a['content'][_0x0051('0x2f')]();}else if(_['includes']([_0x0051('0x35'),_0x0051('0x36')],_0x3fb11a[_0x0051('0x37')])&&_0x3fb11a[_0x0051('0x3b')]&&_0x3fb11a[_0x0051('0x39')]){_0x19208e['custom_fields'][_0x0051('0x3c')]({'id':_0x3fb11a[_0x0051('0x3b')],'value':_0x3fb11a['content']['toString']()});}else if(_0x3fb11a['type']==='variable'&&_0x3fb11a[_0x0051('0x3d')]&&_0x3fb11a['idField']&&_0x3fb11a[_0x0051('0x39')]){_0x577da7[_0x3fb11a[_0x0051('0x3d')]]&&_0x19208e[_0x0051('0x1a')]['push']({'id':_0x3fb11a[_0x0051('0x3b')],'value':_0x577da7[_0x3fb11a[_0x0051('0x3d')]][_0x0051('0x2f')]()});}else if(_0x3fb11a['type']===_0x0051('0x3e')&&_0x3fb11a[_0x0051('0x3f')]&&_0x3fb11a[_0x0051('0x3f')][_0x0051('0x18')]&&_0x3fb11a[_0x0051('0x3b')]&&_0x3fb11a[_0x0051('0x39')]){_0x577da7[_0x3fb11a[_0x0051('0x3f')]['name'][_0x0051('0x3a')]()]&&_0x19208e[_0x0051('0x1a')][_0x0051('0x3c')]({'id':_0x3fb11a[_0x0051('0x3b')],'value':_0x577da7[_0x3fb11a['Variable'][_0x0051('0x18')]['toLowerCase']()][_0x0051('0x2f')]()});}});}return _0x19208e;}exports['queue']=function(_0x561b73,_0x3a3e9e,_0x50a73c,_0x37726f,_0x56c7e1,_0x5c5882){var _0xb65c07,_0x50009c;_0x5c5882[_0x0051('0x21')]=intUtil[_0x0051('0x40')](_0x5c5882[_0x0051('0x21')]);_0x5c5882[_0x0051('0x41')]=intUtil['stripTrailingSlash'](_0x5c5882[_0x0051('0x41')]);if(_0x56c7e1&&_0x56c7e1[_0x0051('0x42')]){logger[_0x0051('0xe')]('[QUEUE]',_0x0051('0x43'));_0x3a3e9e[_0x0051('0x44')]=util[_0x0051('0x10')](_0x0051('0x45'),_0x5c5882['serverUrl'],_0x3a3e9e[_0x0051('0x46')],md5(_0x3a3e9e[_0x0051('0x46')]));}else{_0x3a3e9e[_0x0051('0x44')]='';}headers[_0x0051('0x47')]=getAuth(_0x5c5882);return getUser(_0x5c5882,_0x37726f['email'])[_0x0051('0x1e')](function(_0x4f41ad){_0xb65c07=_0x4f41ad;logger[_0x0051('0xe')](_0x0051('0x48'),_0xb65c07['id']);return getEndUser(_0x5c5882,_0x3a3e9e['calleridname'],_0x3a3e9e[_0x0051('0x13')]);})['then'](function(_0x32c2a0){_0x50009c=_0x32c2a0;logger['info']('The\x20Enduser\x20ID\x20is:',_0x50009c['id']);return getTicket(_0x5c5882,_0xb65c07,_0x50009c,_0x50a73c,_0x3a3e9e);})[_0x0051('0x1e')](function(_0x3b6388){if(_0x3b6388&&_0x3b6388['id']){logger[_0x0051('0xe')]('Ticket\x20created!');logger[_0x0051('0xe')](_0x0051('0x49'),_0x3b6388['id']);logger[_0x0051('0xe')]('[QUEUE]',_0x0051('0x4a'));emit(util[_0x0051('0x10')](_0x0051('0x4b'),_0x37726f[_0x0051('0x18')]),_0x0051('0x4c'),{'uri':util[_0x0051('0x10')](_0x0051('0x4d'),_0x5c5882['remoteUri'],_0x3b6388['id'])});}})[_0x0051('0x4e')](function(_0x6c9175){logger[_0x0051('0x4f')](_0x0051('0x50'),JSON['stringify'](_0x6c9175));});};exports[_0x0051('0x51')]=function(_0x4d3de4,_0x48f6d6,_0x1405c5,_0x562b14,_0x4d483b,_0x138701,_0x4bebce){var _0x4d45e1,_0x3977db;_0x138701[_0x0051('0x21')]=intUtil[_0x0051('0x40')](_0x138701[_0x0051('0x21')]);_0x138701[_0x0051('0x41')]=intUtil[_0x0051('0x40')](_0x138701[_0x0051('0x41')]);if(_0x4bebce&&_0x4bebce[_0x0051('0x52')]&&_0x4bebce['recordingFormat']!=='none'){logger['info'](_0x0051('0x53'),'Recording\x20is\x20enabled!');_0x48f6d6[_0x0051('0x44')]=util[_0x0051('0x10')](_0x0051('0x45'),_0x138701[_0x0051('0x41')],_0x48f6d6[_0x0051('0x46')],md5(_0x48f6d6[_0x0051('0x46')]));}headers[_0x0051('0x47')]=getAuth(_0x138701);return getUser(_0x138701,_0x562b14[_0x0051('0x25')])[_0x0051('0x1e')](function(_0x1ca203){_0x4d45e1=_0x1ca203;logger['info'](_0x0051('0x48'),_0x4d45e1['id']);return getEndUser(_0x138701,_0x48f6d6['destcalleridname'],_0x48f6d6[_0x0051('0x54')]);})[_0x0051('0x1e')](function(_0x424ce0){_0x3977db=_0x424ce0;logger['info'](_0x0051('0x55'),_0x3977db['id']);return getTicket(_0x138701,_0x4d45e1,_0x3977db,_0x1405c5,_0x48f6d6);})[_0x0051('0x1e')](function(_0x61693f){if(_0x61693f&&_0x61693f['id']){logger[_0x0051('0xe')](_0x0051('0x1f'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x61693f['id']);logger[_0x0051('0xe')](_0x0051('0x53'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x0051('0x10')]('user:%s',_0x562b14[_0x0051('0x18')]),_0x0051('0x4c'),{'uri':util[_0x0051('0x10')](_0x0051('0x4d'),_0x138701['remoteUri'],_0x61693f['id'])});}})[_0x0051('0x4e')](function(_0x206990){logger[_0x0051('0x4f')](_0x0051('0x53'),JSON['stringify'](_0x206990));});};exports['unmanaged']=function(_0x39d07d,_0x1ee4f8,_0x5e489f,_0x2c4e09,_0x308bf7,_0x62ad2e){var _0x315e5b,_0x424546;_0x62ad2e[_0x0051('0x21')]=intUtil[_0x0051('0x40')](_0x62ad2e[_0x0051('0x21')]);_0x62ad2e[_0x0051('0x41')]=intUtil['stripTrailingSlash'](_0x62ad2e[_0x0051('0x41')]);if(_0x308bf7&&_0x308bf7[_0x0051('0x42')]){logger['info']('['+_0x1ee4f8[_0x0051('0x56')]['toUpperCase']()+']',_0x0051('0x43'));_0x1ee4f8[_0x0051('0x44')]=util[_0x0051('0x10')](_0x0051('0x45'),_0x62ad2e[_0x0051('0x41')],_0x1ee4f8[_0x0051('0x46')],md5(_0x1ee4f8[_0x0051('0x46')]));}else{_0x1ee4f8['recordingURL']='';}headers['Authorization']=getAuth(_0x62ad2e);return getUser(_0x62ad2e,'')['then'](function(_0x3e215d){_0x315e5b=_0x3e215d;logger['info'](_0x0051('0x48'),_0x315e5b['id']);return getEndUser(_0x62ad2e,_0x1ee4f8[_0x0051('0x12')],_0x1ee4f8['calleridnum']);})[_0x0051('0x1e')](function(_0x51ec84){_0x424546=_0x51ec84;logger[_0x0051('0xe')]('The\x20Enduser\x20ID\x20is:',_0x424546['id']);return getTicket(_0x62ad2e,_0x315e5b,_0x424546,_0x5e489f,_0x1ee4f8);})[_0x0051('0x1e')](function(_0x1443e6){if(_0x1443e6){logger[_0x0051('0xe')](_0x0051('0x1f'));logger[_0x0051('0xe')]('The\x20Ticket\x20ID\x20is:',_0x1443e6['id']);}})['catch'](function(_0x510184){logger['error']('['+_0x1ee4f8[_0x0051('0x56')][_0x0051('0x57')]()+']',JSON[_0x0051('0x58')](_0x510184));});};