0aa472f0c5555dea3627cb1b2571f54220ec123f
[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 _0x588c=['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','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','toString','debug','stringify','includes','picklist','type','nameField','string','customField','push','idField','content','variable','variableName','name','Variable','toLowerCase','queue','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','error','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridnum','The\x20Enduser\x20ID\x20is:','catch','unmanaged','lastevent','toUpperCase','Ticket\x20created!','lodash','util','../../../../config/logger','freshdesk','redis','defaults','socket.io-emitter','application/json','emit','format','calleridname','calleridnum','Subjects','getString','Descriptions','<br>','Tags','Fields','custom_fields','mapValues','keyBy','value','%s/api/v2/tickets','POST','then','info','validateEmail','remoteUri','length','Agent\x20found!','contact','email'];(function(_0x146319,_0x53530b){var _0x195685=function(_0x2d693f){while(--_0x2d693f){_0x146319['push'](_0x146319['shift']());}};_0x195685(++_0x53530b);}(_0x588c,0x13c));var _0xc588=function(_0x4415ea,_0x35a9f5){_0x4415ea=_0x4415ea-0x0;var _0xad3fbb=_0x588c[_0x4415ea];return _0xad3fbb;};'use strict';var _=require(_0xc588('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0xc588('0x1'));var Redis=require('ioredis');var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0xc588('0x2'))(_0xc588('0x3'));config[_0xc588('0x4')]=_[_0xc588('0x5')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xc588('0x6'))(new Redis(config['redis']));var headers={'Content-Type':_0xc588('0x7'),'Accept':'application/json'};function emit(_0x309e9f,_0x2fc2a6,_0x18f04a){io['to'](_0x309e9f)[_0xc588('0x8')](_0x2fc2a6,_0x18f04a);}function getTicket(_0x39b1a7,_0x285002,_0x41c741,_0x34eaa6,_0x2868fb){logger['info']('Creating\x20new\x20ticket...');var _0x5e0129=_['merge']({'responder_id':_0x285002['id'],'requester_id':_0x41c741['id'],'name':util[_0xc588('0x9')]('Caller\x20-\x20%s',_0x2868fb[_0xc588('0xa')]),'phone':_0x2868fb[_0xc588('0xb')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x34eaa6[_0xc588('0xc')],_0x2868fb,'\x20'),'description':intUtil[_0xc588('0xd')](_0x34eaa6[_0xc588('0xe')],_0x2868fb,_0xc588('0xf')),'tags':getTags(_0x34eaa6[_0xc588('0x10')],'name')},getCustomFields(_0x34eaa6[_0xc588('0x11')],_0x2868fb));_0x5e0129[_0xc588('0x12')]=_[_0xc588('0x13')](_[_0xc588('0x14')](_0x5e0129[_0xc588('0x12')],'id'),_0xc588('0x15'));return request({'uri':util[_0xc588('0x9')](_0xc588('0x16'),_0x39b1a7['remoteUri']),'method':_0xc588('0x17'),'body':_0x5e0129})[_0xc588('0x18')](function(_0x2f01ad){logger[_0xc588('0x19')]('Ticket\x20created!');return _0x2f01ad;});}function getUser(_0x496c76,_0x51d2f7){if(intUtil[_0xc588('0x1a')](_0x51d2f7)){return request({'uri':util[_0xc588('0x9')]('%s/api/v2/agents',_0x496c76[_0xc588('0x1b')]),'qs':{'email':_0x51d2f7}})[_0xc588('0x18')](function(_0x488d5d){if(_0x488d5d[_0xc588('0x1c')]){logger['info'](_0xc588('0x1d'));return _['find'](_0x488d5d,function(_0x298c5c){return _0x298c5c[_0xc588('0x1e')][_0xc588('0x1f')]===_0x51d2f7;});}else{logger[_0xc588('0x19')](_0xc588('0x20'));return request({'uri':util[_0xc588('0x9')](_0xc588('0x21'),_0x496c76[_0xc588('0x1b')])})['then'](function(_0x4f5eab){logger['info']('Admin\x20account\x20selected.');return _0x4f5eab;});}});}else{logger['info'](_0xc588('0x22'));return request({'uri':util[_0xc588('0x9')](_0xc588('0x21'),_0x496c76[_0xc588('0x1b')])})[_0xc588('0x18')](function(_0x24e4d9){logger[_0xc588('0x19')](_0xc588('0x23'));return _0x24e4d9;});}}function getEndUser(_0x275aab,_0x15ba23,_0x1e1b19){logger[_0xc588('0x19')](_0xc588('0x24'),_0x1e1b19);return request({'uri':util['format'](_0xc588('0x25'),_0x275aab['remoteUri']),'qs':{'phone':_0x1e1b19}})[_0xc588('0x18')](function(_0x3a509d){if(_0x3a509d['length']){logger[_0xc588('0x19')](_0xc588('0x26'));return _['find'](_0x3a509d,{'phone':_0x1e1b19});}else{logger[_0xc588('0x19')](_0xc588('0x27'));return request({'uri':util['format'](_0xc588('0x25'),_0x275aab['remoteUri']),'method':'POST','body':{'name':_0x15ba23,'phone':_0x1e1b19}})[_0xc588('0x18')](function(_0x4bbb60){logger[_0xc588('0x19')](_0xc588('0x28'));return _0x4bbb60;});}});}function getAuth(_0x2c4748){return util[_0xc588('0x9')](_0xc588('0x29'),new Buffer(_0x2c4748[_0xc588('0x2a')]+':X')[_0xc588('0x2b')]('base64'));}function request(_0x3cd972){logger[_0xc588('0x2c')]('[HTTP]',JSON[_0xc588('0x2d')](_0x3cd972));return rp(_[_0xc588('0x5')](_0x3cd972,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x1ec09e,_0x1dd635){var _0x3c1bc0=[];if(_0x1ec09e&&_0x1ec09e[_0xc588('0x1c')]>0x0){_0x3c1bc0=_['map'](_0x1ec09e,_0x1dd635);}return _0x3c1bc0;}function getCustomFields(_0x3fec91,_0x47e3aa){var _0x5d848c=[];var _0x1032f2={'custom_fields':[]};if(_0x3fec91['length']>0x0){_['forEach'](_0x3fec91,function(_0xbdb4d9){if(_[_0xc588('0x2e')](['string',_0xc588('0x2f')],_0xbdb4d9[_0xc588('0x30')])&&_0xbdb4d9[_0xc588('0x31')]&&!_0xbdb4d9['customField']){_0x1032f2[_0xbdb4d9[_0xc588('0x31')]['toLowerCase']()]=_0xbdb4d9['content'][_0xc588('0x2b')]();}else if(_[_0xc588('0x2e')]([_0xc588('0x32'),'picklist'],_0xbdb4d9[_0xc588('0x30')])&&_0xbdb4d9['idField']&&_0xbdb4d9[_0xc588('0x33')]){_0x1032f2[_0xc588('0x12')][_0xc588('0x34')]({'id':_0xbdb4d9[_0xc588('0x35')],'value':_0xbdb4d9[_0xc588('0x36')]['toString']()});}else if(_0xbdb4d9['type']===_0xc588('0x37')&&_0xbdb4d9['variableName']&&_0xbdb4d9['idField']&&_0xbdb4d9[_0xc588('0x33')]){_0x47e3aa[_0xbdb4d9[_0xc588('0x38')]]&&_0x1032f2[_0xc588('0x12')][_0xc588('0x34')]({'id':_0xbdb4d9[_0xc588('0x35')],'value':_0x47e3aa[_0xbdb4d9['variableName']][_0xc588('0x2b')]()});}else if(_0xbdb4d9[_0xc588('0x30')]==='customVariable'&&_0xbdb4d9['Variable']&&_0xbdb4d9['Variable'][_0xc588('0x39')]&&_0xbdb4d9['idField']&&_0xbdb4d9['customField']){_0x47e3aa[_0xbdb4d9[_0xc588('0x3a')][_0xc588('0x39')][_0xc588('0x3b')]()]&&_0x1032f2[_0xc588('0x12')][_0xc588('0x34')]({'id':_0xbdb4d9[_0xc588('0x35')],'value':_0x47e3aa[_0xbdb4d9[_0xc588('0x3a')][_0xc588('0x39')][_0xc588('0x3b')]()][_0xc588('0x2b')]()});}});}return _0x1032f2;}exports[_0xc588('0x3c')]=function(_0x18ff31,_0x1e739e,_0x21d379,_0x2c5b53,_0x48bc17,_0xaf42ba){var _0x2dcc23,_0x25955f;_0xaf42ba['remoteUri']=intUtil[_0xc588('0x3d')](_0xaf42ba[_0xc588('0x1b')]);_0xaf42ba[_0xc588('0x3e')]=intUtil[_0xc588('0x3d')](_0xaf42ba[_0xc588('0x3e')]);if(_0x48bc17&&_0x48bc17[_0xc588('0x3f')]){logger['info']('[QUEUE]',_0xc588('0x40'));_0x1e739e[_0xc588('0x41')]=util[_0xc588('0x9')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xaf42ba[_0xc588('0x3e')],_0x1e739e[_0xc588('0x42')],md5(_0x1e739e[_0xc588('0x42')]));}else{_0x1e739e[_0xc588('0x41')]='';}headers[_0xc588('0x43')]=getAuth(_0xaf42ba);return getUser(_0xaf42ba,_0x2c5b53[_0xc588('0x1f')])[_0xc588('0x18')](function(_0x3dd16e){_0x2dcc23=_0x3dd16e;logger['info'](_0xc588('0x44'),_0x2dcc23['id']);return getEndUser(_0xaf42ba,_0x1e739e[_0xc588('0xa')],_0x1e739e[_0xc588('0xb')]);})['then'](function(_0x171f70){_0x25955f=_0x171f70;logger[_0xc588('0x19')]('The\x20Enduser\x20ID\x20is:',_0x25955f['id']);return getTicket(_0xaf42ba,_0x2dcc23,_0x25955f,_0x21d379,_0x1e739e);})['then'](function(_0x25e05a){if(_0x25e05a&&_0x25e05a['id']){logger[_0xc588('0x19')]('Ticket\x20created!');logger[_0xc588('0x19')](_0xc588('0x45'),_0x25e05a['id']);logger['info'](_0xc588('0x46'),_0xc588('0x47'));emit(util[_0xc588('0x9')](_0xc588('0x48'),_0x2c5b53[_0xc588('0x39')]),_0xc588('0x49'),{'uri':util[_0xc588('0x9')](_0xc588('0x4a'),_0xaf42ba[_0xc588('0x1b')],_0x25e05a['id'])});}})['catch'](function(_0x58cff1){logger[_0xc588('0x4b')](_0xc588('0x46'),JSON[_0xc588('0x2d')](_0x58cff1));});};exports['outbound']=function(_0x440ee1,_0x203fbb,_0x437afa,_0x33c047,_0x22de29,_0x4bcfd1,_0x26c230){var _0x2c08c3,_0x3bdf93;_0x4bcfd1[_0xc588('0x1b')]=intUtil['stripTrailingSlash'](_0x4bcfd1[_0xc588('0x1b')]);_0x4bcfd1[_0xc588('0x3e')]=intUtil[_0xc588('0x3d')](_0x4bcfd1[_0xc588('0x3e')]);if(_0x26c230&&_0x26c230['recordingFormat']&&_0x26c230[_0xc588('0x4c')]!==_0xc588('0x4d')){logger[_0xc588('0x19')](_0xc588('0x4e'),_0xc588('0x40'));_0x203fbb[_0xc588('0x41')]=util[_0xc588('0x9')](_0xc588('0x4f'),_0x4bcfd1['serverUrl'],_0x203fbb['uniqueid'],md5(_0x203fbb[_0xc588('0x42')]));}headers['Authorization']=getAuth(_0x4bcfd1);return getUser(_0x4bcfd1,_0x33c047[_0xc588('0x1f')])['then'](function(_0x4e05e0){_0x2c08c3=_0x4e05e0;logger['info']('The\x20User\x20ID\x20is:',_0x2c08c3['id']);return getEndUser(_0x4bcfd1,_0x203fbb['destcalleridname'],_0x203fbb[_0xc588('0x50')]);})[_0xc588('0x18')](function(_0x236b0d){_0x3bdf93=_0x236b0d;logger[_0xc588('0x19')](_0xc588('0x51'),_0x3bdf93['id']);return getTicket(_0x4bcfd1,_0x2c08c3,_0x3bdf93,_0x437afa,_0x203fbb);})[_0xc588('0x18')](function(_0x39e8ef){if(_0x39e8ef&&_0x39e8ef['id']){logger[_0xc588('0x19')]('Ticket\x20created!');logger[_0xc588('0x19')](_0xc588('0x45'),_0x39e8ef['id']);logger['info'](_0xc588('0x4e'),_0xc588('0x47'));emit(util[_0xc588('0x9')]('user:%s',_0x33c047[_0xc588('0x39')]),_0xc588('0x49'),{'uri':util[_0xc588('0x9')](_0xc588('0x4a'),_0x4bcfd1['remoteUri'],_0x39e8ef['id'])});}})[_0xc588('0x52')](function(_0x4907d3){logger[_0xc588('0x4b')](_0xc588('0x4e'),JSON[_0xc588('0x2d')](_0x4907d3));});};exports[_0xc588('0x53')]=function(_0x293f71,_0x1ea328,_0x6d0c0e,_0x14e1ef,_0x19b440,_0x474dc3){var _0x379997,_0x2a55b5;_0x474dc3[_0xc588('0x1b')]=intUtil['stripTrailingSlash'](_0x474dc3['remoteUri']);_0x474dc3[_0xc588('0x3e')]=intUtil[_0xc588('0x3d')](_0x474dc3[_0xc588('0x3e')]);if(_0x19b440&&_0x19b440['monitor_format']){logger[_0xc588('0x19')]('['+_0x1ea328[_0xc588('0x54')][_0xc588('0x55')]()+']',_0xc588('0x40'));_0x1ea328[_0xc588('0x41')]=util['format'](_0xc588('0x4f'),_0x474dc3[_0xc588('0x3e')],_0x1ea328['uniqueid'],md5(_0x1ea328['uniqueid']));}else{_0x1ea328[_0xc588('0x41')]='';}headers[_0xc588('0x43')]=getAuth(_0x474dc3);return getUser(_0x474dc3,'')['then'](function(_0x57113d){_0x379997=_0x57113d;logger['info']('The\x20User\x20ID\x20is:',_0x379997['id']);return getEndUser(_0x474dc3,_0x1ea328['calleridname'],_0x1ea328['calleridnum']);})[_0xc588('0x18')](function(_0x43fc28){_0x2a55b5=_0x43fc28;logger[_0xc588('0x19')](_0xc588('0x51'),_0x2a55b5['id']);return getTicket(_0x474dc3,_0x379997,_0x2a55b5,_0x6d0c0e,_0x1ea328);})[_0xc588('0x18')](function(_0x4b62ff){if(_0x4b62ff){logger[_0xc588('0x19')](_0xc588('0x56'));logger['info'](_0xc588('0x45'),_0x4b62ff['id']);}})[_0xc588('0x52')](function(_0xcdda0e){logger[_0xc588('0x4b')]('['+_0x1ea328[_0xc588('0x54')][_0xc588('0x55')]()+']',JSON[_0xc588('0x2d')](_0xcdda0e));});};