Built motion from commit b5996064.|2.6.21
[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 _0x4deb=['apiKey','toString','base64','debug','[HTTP]','stringify','GET','map','forEach','nameField','customField','toLowerCase','string','picklist','type','idField','push','variableName','Variable','name','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','user:%s','%s/helpdesk/tickets/%d','catch','recordingFormat','none','uniqueid','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','unmanaged','lastevent','toUpperCase','error','request-promise','util','ioredis','../../../../config/logger','freshdesk','redis','localhost','application/json','emit','info','merge','Caller\x20-\x20%s','calleridname','calleridnum','Subjects','getString','Descriptions','Tags','Fields','custom_fields','mapValues','value','remoteUri','POST','then','validateEmail','format','Agent\x20found!','find','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','length','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s'];(function(_0x10a9e5,_0x412c1a){var _0x49f8d6=function(_0x1f75f1){while(--_0x1f75f1){_0x10a9e5['push'](_0x10a9e5['shift']());}};_0x49f8d6(++_0x412c1a);}(_0x4deb,0x1e7));var _0xb4de=function(_0x53b55f,_0x7980d0){_0x53b55f=_0x53b55f-0x0;var _0x71d9fa=_0x4deb[_0x53b55f];return _0x71d9fa;};'use strict';var _=require('lodash');var rp=require(_0xb4de('0x0'));var md5=require('md5');var util=require(_0xb4de('0x1'));var Redis=require(_0xb4de('0x2'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0xb4de('0x3'))(_0xb4de('0x4'));config[_0xb4de('0x5')]=_['defaults'](config[_0xb4de('0x5')],{'host':_0xb4de('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var headers={'Content-Type':_0xb4de('0x7'),'Accept':_0xb4de('0x7')};function emit(_0x2c9d4d,_0x249e90,_0xec4cbd){io['to'](_0x2c9d4d)[_0xb4de('0x8')](_0x249e90,_0xec4cbd);}function getTicket(_0x25843c,_0x40bd74,_0x1a7977,_0x583df7,_0x6f19a1){logger[_0xb4de('0x9')]('Creating\x20new\x20ticket...');var _0x172989=_[_0xb4de('0xa')]({'responder_id':_0x40bd74['id'],'requester_id':_0x1a7977['id'],'name':util['format'](_0xb4de('0xb'),_0x6f19a1[_0xb4de('0xc')]),'phone':_0x6f19a1[_0xb4de('0xd')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x583df7[_0xb4de('0xe')],_0x6f19a1,'\x20'),'description':intUtil[_0xb4de('0xf')](_0x583df7[_0xb4de('0x10')],_0x6f19a1,'<br>'),'tags':getTags(_0x583df7[_0xb4de('0x11')],'name')},getCustomFields(_0x583df7[_0xb4de('0x12')],_0x6f19a1));_0x172989[_0xb4de('0x13')]=_[_0xb4de('0x14')](_['keyBy'](_0x172989[_0xb4de('0x13')],'id'),_0xb4de('0x15'));return request({'uri':util['format']('%s/api/v2/tickets',_0x25843c[_0xb4de('0x16')]),'method':_0xb4de('0x17'),'body':_0x172989})[_0xb4de('0x18')](function(_0x2aa204){logger[_0xb4de('0x9')]('Ticket\x20created!');return _0x2aa204;});}function getUser(_0x2c1031,_0x186bcc){if(intUtil[_0xb4de('0x19')](_0x186bcc)){return request({'uri':util[_0xb4de('0x1a')]('%s/api/v2/agents',_0x2c1031['remoteUri']),'qs':{'email':_0x186bcc}})['then'](function(_0x312d51){if(_0x312d51['length']){logger[_0xb4de('0x9')](_0xb4de('0x1b'));return _[_0xb4de('0x1c')](_0x312d51,function(_0x34e7af){return _0x34e7af['contact'][_0xb4de('0x1d')]===_0x186bcc;});}else{logger[_0xb4de('0x9')](_0xb4de('0x1e'));return request({'uri':util['format'](_0xb4de('0x1f'),_0x2c1031['remoteUri'])})[_0xb4de('0x18')](function(_0x21456a){logger[_0xb4de('0x9')](_0xb4de('0x20'));return _0x21456a;});}});}else{logger[_0xb4de('0x9')](_0xb4de('0x21'));return request({'uri':util[_0xb4de('0x1a')](_0xb4de('0x1f'),_0x2c1031['remoteUri'])})[_0xb4de('0x18')](function(_0x208213){logger['info'](_0xb4de('0x20'));return _0x208213;});}}function getEndUser(_0x360776,_0x2b815b,_0x37c7a5){logger[_0xb4de('0x9')](_0xb4de('0x22'),_0x37c7a5);return request({'uri':util[_0xb4de('0x1a')](_0xb4de('0x23'),_0x360776[_0xb4de('0x16')]),'qs':{'phone':_0x37c7a5}})[_0xb4de('0x18')](function(_0x1abf4b){if(_0x1abf4b[_0xb4de('0x24')]){logger[_0xb4de('0x9')](_0xb4de('0x25'));return _[_0xb4de('0x1c')](_0x1abf4b,{'phone':_0x37c7a5});}else{logger[_0xb4de('0x9')](_0xb4de('0x26'));return request({'uri':util[_0xb4de('0x1a')]('%s/api/v2/contacts',_0x360776[_0xb4de('0x16')]),'method':_0xb4de('0x17'),'body':{'name':_0x2b815b,'phone':_0x37c7a5}})[_0xb4de('0x18')](function(_0x55ce6c){logger[_0xb4de('0x9')](_0xb4de('0x27'));return _0x55ce6c;});}});}function getAuth(_0x469033){return util[_0xb4de('0x1a')](_0xb4de('0x28'),new Buffer(_0x469033[_0xb4de('0x29')]+':X')[_0xb4de('0x2a')](_0xb4de('0x2b')));}function request(_0x25b227){logger[_0xb4de('0x2c')](_0xb4de('0x2d'),JSON[_0xb4de('0x2e')](_0x25b227));return rp(_['defaults'](_0x25b227,{'method':_0xb4de('0x2f'),'headers':headers,'json':!![]}));}function getTags(_0x2d782e,_0x3d846d){var _0x59e4f0=[];if(_0x2d782e&&_0x2d782e[_0xb4de('0x24')]>0x0){_0x59e4f0=_[_0xb4de('0x30')](_0x2d782e,_0x3d846d);}return _0x59e4f0;}function getCustomFields(_0x49f745,_0x219240){var _0x595f0e=[];var _0x36f37f={'custom_fields':[]};if(_0x49f745[_0xb4de('0x24')]>0x0){_[_0xb4de('0x31')](_0x49f745,function(_0x588221){if(_['includes'](['string','picklist'],_0x588221['type'])&&_0x588221[_0xb4de('0x32')]&&!_0x588221[_0xb4de('0x33')]){_0x36f37f[_0x588221[_0xb4de('0x32')][_0xb4de('0x34')]()]=_0x588221['content'][_0xb4de('0x2a')]();}else if(_['includes']([_0xb4de('0x35'),_0xb4de('0x36')],_0x588221[_0xb4de('0x37')])&&_0x588221[_0xb4de('0x38')]&&_0x588221[_0xb4de('0x33')]){_0x36f37f[_0xb4de('0x13')][_0xb4de('0x39')]({'id':_0x588221[_0xb4de('0x38')],'value':_0x588221['content']['toString']()});}else if(_0x588221[_0xb4de('0x37')]==='variable'&&_0x588221[_0xb4de('0x3a')]&&_0x588221[_0xb4de('0x38')]&&_0x588221[_0xb4de('0x33')]){_0x219240[_0x588221[_0xb4de('0x3a')]]&&_0x36f37f[_0xb4de('0x13')][_0xb4de('0x39')]({'id':_0x588221[_0xb4de('0x38')],'value':_0x219240[_0x588221[_0xb4de('0x3a')]][_0xb4de('0x2a')]()});}else if(_0x588221['type']==='customVariable'&&_0x588221['Variable']&&_0x588221[_0xb4de('0x3b')][_0xb4de('0x3c')]&&_0x588221[_0xb4de('0x38')]&&_0x588221['customField']){_0x219240[_0x588221[_0xb4de('0x3b')][_0xb4de('0x3c')]['toLowerCase']()]&&_0x36f37f[_0xb4de('0x13')][_0xb4de('0x39')]({'id':_0x588221[_0xb4de('0x38')],'value':_0x219240[_0x588221['Variable'][_0xb4de('0x3c')][_0xb4de('0x34')]()][_0xb4de('0x2a')]()});}});}return _0x36f37f;}exports[_0xb4de('0x3d')]=function(_0x1ff243,_0x5d39c4,_0x42a920,_0x2aa2fb,_0x5c3298,_0x3330cc){var _0x1d8b3d,_0x709926;_0x3330cc['remoteUri']=intUtil['stripTrailingSlash'](_0x3330cc['remoteUri']);_0x3330cc['serverUrl']=intUtil[_0xb4de('0x3e')](_0x3330cc[_0xb4de('0x3f')]);if(_0x5c3298&&_0x5c3298[_0xb4de('0x40')]){logger[_0xb4de('0x9')](_0xb4de('0x41'),_0xb4de('0x42'));_0x5d39c4[_0xb4de('0x43')]=util[_0xb4de('0x1a')](_0xb4de('0x44'),_0x3330cc[_0xb4de('0x3f')],_0x5d39c4['uniqueid'],md5(_0x5d39c4['uniqueid']));}else{_0x5d39c4[_0xb4de('0x43')]='';}headers[_0xb4de('0x45')]=getAuth(_0x3330cc);return getUser(_0x3330cc,_0x2aa2fb[_0xb4de('0x1d')])[_0xb4de('0x18')](function(_0x379f35){_0x1d8b3d=_0x379f35;logger[_0xb4de('0x9')](_0xb4de('0x46'),_0x1d8b3d['id']);return getEndUser(_0x3330cc,_0x5d39c4[_0xb4de('0xc')],_0x5d39c4[_0xb4de('0xd')]);})['then'](function(_0x3574db){_0x709926=_0x3574db;logger[_0xb4de('0x9')](_0xb4de('0x47'),_0x709926['id']);return getTicket(_0x3330cc,_0x1d8b3d,_0x709926,_0x42a920,_0x5d39c4);})[_0xb4de('0x18')](function(_0x3beb70){if(_0x3beb70&&_0x3beb70['id']){logger[_0xb4de('0x9')]('Ticket\x20created!');logger['info']('The\x20Ticket\x20ID\x20is:',_0x3beb70['id']);logger['info'](_0xb4de('0x41'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0xb4de('0x48'),_0x2aa2fb[_0xb4de('0x3c')]),'trigger:browser:url',{'uri':util[_0xb4de('0x1a')](_0xb4de('0x49'),_0x3330cc['remoteUri'],_0x3beb70['id'])});}})[_0xb4de('0x4a')](function(_0x3b1961){logger['error'](_0xb4de('0x41'),JSON[_0xb4de('0x2e')](_0x3b1961));});};exports['outbound']=function(_0x1cddb0,_0x6cfd2,_0x5c1fd2,_0x4fa8bc,_0x24dc8f,_0x126dc6,_0x81fc9d){var _0x1805aa,_0x2b39b1;_0x126dc6['remoteUri']=intUtil['stripTrailingSlash'](_0x126dc6['remoteUri']);_0x126dc6['serverUrl']=intUtil[_0xb4de('0x3e')](_0x126dc6[_0xb4de('0x3f')]);if(_0x81fc9d&&_0x81fc9d['recordingFormat']&&_0x81fc9d[_0xb4de('0x4b')]!==_0xb4de('0x4c')){logger[_0xb4de('0x9')]('[OUTBOUND]',_0xb4de('0x42'));_0x6cfd2[_0xb4de('0x43')]=util[_0xb4de('0x1a')](_0xb4de('0x44'),_0x126dc6[_0xb4de('0x3f')],_0x6cfd2[_0xb4de('0x4d')],md5(_0x6cfd2[_0xb4de('0x4d')]));}headers[_0xb4de('0x45')]=getAuth(_0x126dc6);return getUser(_0x126dc6,_0x4fa8bc['email'])[_0xb4de('0x18')](function(_0x11af14){_0x1805aa=_0x11af14;logger['info'](_0xb4de('0x46'),_0x1805aa['id']);return getEndUser(_0x126dc6,_0x6cfd2[_0xb4de('0x4e')],_0x6cfd2[_0xb4de('0x4f')]);})['then'](function(_0x39cbc1){_0x2b39b1=_0x39cbc1;logger[_0xb4de('0x9')]('The\x20Enduser\x20ID\x20is:',_0x2b39b1['id']);return getTicket(_0x126dc6,_0x1805aa,_0x2b39b1,_0x5c1fd2,_0x6cfd2);})['then'](function(_0x523842){if(_0x523842&&_0x523842['id']){logger[_0xb4de('0x9')]('Ticket\x20created!');logger[_0xb4de('0x9')](_0xb4de('0x50'),_0x523842['id']);logger[_0xb4de('0x9')](_0xb4de('0x51'),_0xb4de('0x52'));emit(util[_0xb4de('0x1a')](_0xb4de('0x48'),_0x4fa8bc[_0xb4de('0x3c')]),_0xb4de('0x53'),{'uri':util['format'](_0xb4de('0x49'),_0x126dc6[_0xb4de('0x16')],_0x523842['id'])});}})['catch'](function(_0x38e561){logger['error']('[OUTBOUND]',JSON[_0xb4de('0x2e')](_0x38e561));});};exports[_0xb4de('0x54')]=function(_0x4a3aa0,_0x18c115,_0x29d9bb,_0x5dbaa7,_0x429df7,_0x4eb127){var _0x39a48c,_0x5ee78c;_0x4eb127['remoteUri']=intUtil[_0xb4de('0x3e')](_0x4eb127['remoteUri']);_0x4eb127[_0xb4de('0x3f')]=intUtil[_0xb4de('0x3e')](_0x4eb127[_0xb4de('0x3f')]);if(_0x429df7&&_0x429df7[_0xb4de('0x40')]){logger['info']('['+_0x18c115[_0xb4de('0x55')][_0xb4de('0x56')]()+']',_0xb4de('0x42'));_0x18c115[_0xb4de('0x43')]=util[_0xb4de('0x1a')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4eb127[_0xb4de('0x3f')],_0x18c115[_0xb4de('0x4d')],md5(_0x18c115['uniqueid']));}else{_0x18c115[_0xb4de('0x43')]='';}headers['Authorization']=getAuth(_0x4eb127);return getUser(_0x4eb127,'')[_0xb4de('0x18')](function(_0xa02c55){_0x39a48c=_0xa02c55;logger[_0xb4de('0x9')](_0xb4de('0x46'),_0x39a48c['id']);return getEndUser(_0x4eb127,_0x18c115['calleridname'],_0x18c115[_0xb4de('0xd')]);})[_0xb4de('0x18')](function(_0x26c967){_0x5ee78c=_0x26c967;logger[_0xb4de('0x9')](_0xb4de('0x47'),_0x5ee78c['id']);return getTicket(_0x4eb127,_0x39a48c,_0x5ee78c,_0x29d9bb,_0x18c115);})[_0xb4de('0x18')](function(_0x35ea72){if(_0x35ea72){logger[_0xb4de('0x9')]('Ticket\x20created!');logger[_0xb4de('0x9')](_0xb4de('0x50'),_0x35ea72['id']);}})[_0xb4de('0x4a')](function(_0x142b6f){logger[_0xb4de('0x57')]('['+_0x18c115['lastevent'][_0xb4de('0x56')]()+']',JSON['stringify'](_0x142b6f));});};