5ff44730273354178390d367ec0af9f2298682ed
[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 _0x839a=['md5','util','ioredis','../../../../config/logger','defaults','redis','localhost','socket.io-emitter','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','Tags','name','custom_fields','mapValues','%s/api/v2/tickets','remoteUri','POST','Ticket\x20created!','validateEmail','%s/api/v2/agents','then','length','Agent\x20found!','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!','%s/api/v2/contacts','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','stringify','map','forEach','string','type','customField','nameField','toLowerCase','content','includes','picklist','idField','push','variable','variableName','Variable','queue','serverUrl','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','trigger:browser:url','%s/helpdesk/tickets/%d','error','outbound','stripTrailingSlash','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','The\x20User\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','catch','unmanaged','toUpperCase','lastevent','lodash','request-promise'];(function(_0x2d34de,_0xd0885a){var _0x109492=function(_0x49fb2b){while(--_0x49fb2b){_0x2d34de['push'](_0x2d34de['shift']());}};_0x109492(++_0xd0885a);}(_0x839a,0x166));var _0xa839=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x839a[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require(_0xa839('0x0'));var rp=require(_0xa839('0x1'));var md5=require(_0xa839('0x2'));var util=require(_0xa839('0x3'));var Redis=require(_0xa839('0x4'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0xa839('0x5'))('freshdesk');config['redis']=_[_0xa839('0x6')](config[_0xa839('0x7')],{'host':_0xa839('0x8'),'port':0x18eb});var io=require(_0xa839('0x9'))(new Redis(config[_0xa839('0x7')]));var headers={'Content-Type':'application/json','Accept':'application/json'};function emit(_0x2c2f03,_0x1fd8ee,_0x4763ea){io['to'](_0x2c2f03)[_0xa839('0xa')](_0x1fd8ee,_0x4763ea);}function getTicket(_0x8ad1d4,_0x52e530,_0x56b611,_0x3b8f35,_0x574b84){logger[_0xa839('0xb')](_0xa839('0xc'));var _0x5a2da8=_[_0xa839('0xd')]({'responder_id':_0x52e530['id'],'requester_id':_0x56b611['id'],'name':util[_0xa839('0xe')](_0xa839('0xf'),_0x574b84[_0xa839('0x10')]),'phone':_0x574b84[_0xa839('0x11')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xa839('0x12')](_0x3b8f35[_0xa839('0x13')],_0x574b84,'\x20'),'description':intUtil[_0xa839('0x12')](_0x3b8f35[_0xa839('0x14')],_0x574b84,_0xa839('0x15')),'tags':getTags(_0x3b8f35[_0xa839('0x16')],_0xa839('0x17'))},getCustomFields(_0x3b8f35['Fields'],_0x574b84));_0x5a2da8[_0xa839('0x18')]=_[_0xa839('0x19')](_['keyBy'](_0x5a2da8['custom_fields'],'id'),'value');return request({'uri':util[_0xa839('0xe')](_0xa839('0x1a'),_0x8ad1d4[_0xa839('0x1b')]),'method':_0xa839('0x1c'),'body':_0x5a2da8})['then'](function(_0x151346){logger[_0xa839('0xb')](_0xa839('0x1d'));return _0x151346;});}function getUser(_0x155c54,_0x240733){if(intUtil[_0xa839('0x1e')](_0x240733)){return request({'uri':util[_0xa839('0xe')](_0xa839('0x1f'),_0x155c54[_0xa839('0x1b')]),'qs':{'email':_0x240733}})[_0xa839('0x20')](function(_0x5dc118){if(_0x5dc118[_0xa839('0x21')]){logger[_0xa839('0xb')](_0xa839('0x22'));return _['find'](_0x5dc118,function(_0x128a3b){return _0x128a3b['contact'][_0xa839('0x23')]===_0x240733;});}else{logger[_0xa839('0xb')](_0xa839('0x24'));return request({'uri':util[_0xa839('0xe')](_0xa839('0x25'),_0x155c54['remoteUri'])})['then'](function(_0x3cae67){logger['info']('Admin\x20account\x20selected.');return _0x3cae67;});}});}else{logger[_0xa839('0xb')](_0xa839('0x26'));return request({'uri':util['format'](_0xa839('0x25'),_0x155c54[_0xa839('0x1b')])})[_0xa839('0x20')](function(_0x1d209c){logger[_0xa839('0xb')](_0xa839('0x27'));return _0x1d209c;});}}function getEndUser(_0xeef30b,_0x1b9619,_0x4424ac){logger[_0xa839('0xb')](_0xa839('0x28'),_0x4424ac);return request({'uri':util[_0xa839('0xe')]('%s/api/v2/contacts',_0xeef30b['remoteUri']),'qs':{'phone':_0x4424ac}})['then'](function(_0x3c3764){if(_0x3c3764[_0xa839('0x21')]){logger['info'](_0xa839('0x29'));return _['find'](_0x3c3764,{'phone':_0x4424ac});}else{logger[_0xa839('0xb')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xa839('0xe')](_0xa839('0x2a'),_0xeef30b[_0xa839('0x1b')]),'method':_0xa839('0x1c'),'body':{'name':_0x1b9619,'phone':_0x4424ac}})[_0xa839('0x20')](function(_0x250147){logger['info'](_0xa839('0x2b'));return _0x250147;});}});}function getAuth(_0x4591b0){return util['format'](_0xa839('0x2c'),new Buffer(_0x4591b0[_0xa839('0x2d')]+':X')[_0xa839('0x2e')](_0xa839('0x2f')));}function request(_0x2acd60){logger['debug']('[HTTP]',JSON[_0xa839('0x30')](_0x2acd60));return rp(_[_0xa839('0x6')](_0x2acd60,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x392d59,_0xd09973){var _0xeb6804=[];if(_0x392d59&&_0x392d59['length']>0x0){_0xeb6804=_[_0xa839('0x31')](_0x392d59,_0xd09973);}return _0xeb6804;}function getCustomFields(_0x25bdcc,_0x3773c7){var _0x39c7d3=[];var _0x445684={'custom_fields':[]};if(_0x25bdcc['length']>0x0){_[_0xa839('0x32')](_0x25bdcc,function(_0x3344f8){if(_['includes']([_0xa839('0x33'),'picklist'],_0x3344f8[_0xa839('0x34')])&&_0x3344f8['nameField']&&!_0x3344f8[_0xa839('0x35')]){_0x445684[_0x3344f8[_0xa839('0x36')][_0xa839('0x37')]()]=_0x3344f8[_0xa839('0x38')][_0xa839('0x2e')]();}else if(_[_0xa839('0x39')]([_0xa839('0x33'),_0xa839('0x3a')],_0x3344f8[_0xa839('0x34')])&&_0x3344f8[_0xa839('0x3b')]&&_0x3344f8[_0xa839('0x35')]){_0x445684['custom_fields'][_0xa839('0x3c')]({'id':_0x3344f8[_0xa839('0x3b')],'value':_0x3344f8[_0xa839('0x38')][_0xa839('0x2e')]()});}else if(_0x3344f8[_0xa839('0x34')]===_0xa839('0x3d')&&_0x3344f8[_0xa839('0x3e')]&&_0x3344f8[_0xa839('0x3b')]&&_0x3344f8[_0xa839('0x35')]){_0x3773c7[_0x3344f8['variableName']]&&_0x445684[_0xa839('0x18')][_0xa839('0x3c')]({'id':_0x3344f8['idField'],'value':_0x3773c7[_0x3344f8[_0xa839('0x3e')]]['toString']()});}else if(_0x3344f8[_0xa839('0x34')]==='customVariable'&&_0x3344f8[_0xa839('0x3f')]&&_0x3344f8[_0xa839('0x3f')][_0xa839('0x17')]&&_0x3344f8[_0xa839('0x3b')]&&_0x3344f8['customField']){_0x3773c7[_0x3344f8[_0xa839('0x3f')][_0xa839('0x17')][_0xa839('0x37')]()]&&_0x445684['custom_fields']['push']({'id':_0x3344f8['idField'],'value':_0x3773c7[_0x3344f8[_0xa839('0x3f')][_0xa839('0x17')][_0xa839('0x37')]()][_0xa839('0x2e')]()});}});}return _0x445684;}exports[_0xa839('0x40')]=function(_0x39dc73,_0xfa4fe4,_0x3fddc5,_0x5d41a8,_0x3a9fdb,_0x151bd4){var _0x1af258,_0x27986b;_0x151bd4[_0xa839('0x1b')]=intUtil['stripTrailingSlash'](_0x151bd4['remoteUri']);_0x151bd4[_0xa839('0x41')]=intUtil['stripTrailingSlash'](_0x151bd4[_0xa839('0x41')]);if(_0x3a9fdb&&_0x3a9fdb[_0xa839('0x42')]){logger['info'](_0xa839('0x43'),'Recording\x20is\x20enabled!');_0xfa4fe4[_0xa839('0x44')]=util[_0xa839('0xe')](_0xa839('0x45'),_0x151bd4['serverUrl'],_0xfa4fe4[_0xa839('0x46')],md5(_0xfa4fe4[_0xa839('0x46')]));}else{_0xfa4fe4[_0xa839('0x44')]='';}headers[_0xa839('0x47')]=getAuth(_0x151bd4);return getUser(_0x151bd4,_0x5d41a8[_0xa839('0x23')])[_0xa839('0x20')](function(_0x2e41a1){_0x1af258=_0x2e41a1;logger[_0xa839('0xb')]('The\x20User\x20ID\x20is:',_0x1af258['id']);return getEndUser(_0x151bd4,_0xfa4fe4[_0xa839('0x10')],_0xfa4fe4[_0xa839('0x11')]);})[_0xa839('0x20')](function(_0x527aff){_0x27986b=_0x527aff;logger['info'](_0xa839('0x48'),_0x27986b['id']);return getTicket(_0x151bd4,_0x1af258,_0x27986b,_0x3fddc5,_0xfa4fe4);})[_0xa839('0x20')](function(_0x455d20){if(_0x455d20&&_0x455d20['id']){logger[_0xa839('0xb')](_0xa839('0x1d'));logger[_0xa839('0xb')](_0xa839('0x49'),_0x455d20['id']);logger[_0xa839('0xb')](_0xa839('0x43'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xa839('0xe')]('user:%s',_0x5d41a8[_0xa839('0x17')]),_0xa839('0x4a'),{'uri':util[_0xa839('0xe')](_0xa839('0x4b'),_0x151bd4['remoteUri'],_0x455d20['id'])});}})['catch'](function(_0x260367){logger[_0xa839('0x4c')](_0xa839('0x43'),JSON[_0xa839('0x30')](_0x260367));});};exports[_0xa839('0x4d')]=function(_0x290261,_0x5cbc5f,_0x36d2e3,_0x7248e2,_0x244c18,_0x20536f,_0x20a46e){var _0xdccd74,_0x3d496b;_0x20536f['remoteUri']=intUtil[_0xa839('0x4e')](_0x20536f[_0xa839('0x1b')]);_0x20536f[_0xa839('0x41')]=intUtil['stripTrailingSlash'](_0x20536f[_0xa839('0x41')]);if(_0x20a46e&&_0x20a46e[_0xa839('0x4f')]&&_0x20a46e[_0xa839('0x4f')]!==_0xa839('0x50')){logger['info'](_0xa839('0x51'),_0xa839('0x52'));_0x5cbc5f[_0xa839('0x44')]=util[_0xa839('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x20536f[_0xa839('0x41')],_0x5cbc5f[_0xa839('0x46')],md5(_0x5cbc5f[_0xa839('0x46')]));}headers[_0xa839('0x47')]=getAuth(_0x20536f);return getUser(_0x20536f,_0x7248e2[_0xa839('0x23')])[_0xa839('0x20')](function(_0x5ad6cf){_0xdccd74=_0x5ad6cf;logger['info'](_0xa839('0x53'),_0xdccd74['id']);return getEndUser(_0x20536f,_0x5cbc5f['destcalleridname'],_0x5cbc5f['destcalleridnum']);})['then'](function(_0x499d71){_0x3d496b=_0x499d71;logger[_0xa839('0xb')](_0xa839('0x48'),_0x3d496b['id']);return getTicket(_0x20536f,_0xdccd74,_0x3d496b,_0x36d2e3,_0x5cbc5f);})['then'](function(_0x40cf18){if(_0x40cf18&&_0x40cf18['id']){logger[_0xa839('0xb')](_0xa839('0x1d'));logger[_0xa839('0xb')]('The\x20Ticket\x20ID\x20is:',_0x40cf18['id']);logger[_0xa839('0xb')](_0xa839('0x51'),_0xa839('0x54'));emit(util[_0xa839('0xe')](_0xa839('0x55'),_0x7248e2[_0xa839('0x17')]),_0xa839('0x4a'),{'uri':util[_0xa839('0xe')](_0xa839('0x4b'),_0x20536f['remoteUri'],_0x40cf18['id'])});}})[_0xa839('0x56')](function(_0x378a22){logger[_0xa839('0x4c')](_0xa839('0x51'),JSON[_0xa839('0x30')](_0x378a22));});};exports[_0xa839('0x57')]=function(_0x37efdd,_0x101570,_0x1eb673,_0x43c452,_0x33e8a9,_0x3d9304){var _0x2c1e3e,_0x42188e;_0x3d9304['remoteUri']=intUtil[_0xa839('0x4e')](_0x3d9304[_0xa839('0x1b')]);_0x3d9304[_0xa839('0x41')]=intUtil[_0xa839('0x4e')](_0x3d9304['serverUrl']);if(_0x33e8a9&&_0x33e8a9[_0xa839('0x42')]){logger[_0xa839('0xb')]('['+_0x101570['lastevent'][_0xa839('0x58')]()+']',_0xa839('0x52'));_0x101570[_0xa839('0x44')]=util[_0xa839('0xe')](_0xa839('0x45'),_0x3d9304[_0xa839('0x41')],_0x101570['uniqueid'],md5(_0x101570[_0xa839('0x46')]));}else{_0x101570[_0xa839('0x44')]='';}headers[_0xa839('0x47')]=getAuth(_0x3d9304);return getUser(_0x3d9304,'')['then'](function(_0x37ad15){_0x2c1e3e=_0x37ad15;logger[_0xa839('0xb')](_0xa839('0x53'),_0x2c1e3e['id']);return getEndUser(_0x3d9304,_0x101570[_0xa839('0x10')],_0x101570[_0xa839('0x11')]);})[_0xa839('0x20')](function(_0x14a782){_0x42188e=_0x14a782;logger[_0xa839('0xb')](_0xa839('0x48'),_0x42188e['id']);return getTicket(_0x3d9304,_0x2c1e3e,_0x42188e,_0x1eb673,_0x101570);})[_0xa839('0x20')](function(_0x2d76ae){if(_0x2d76ae){logger['info']('Ticket\x20created!');logger['info'](_0xa839('0x49'),_0x2d76ae['id']);}})[_0xa839('0x56')](function(_0x11e44f){logger['error']('['+_0x101570[_0xa839('0x59')]['toUpperCase']()+']',JSON[_0xa839('0x30')](_0x11e44f));});};