a01915504cb65a91a89ca629fabb37308f936c54
[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 _0x1972=['includes','string','customField','content','type','custom_fields','push','idField','variable','variableName','customVariable','Variable','toLowerCase','serverUrl','stripTrailingSlash','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','catch','error','outbound','recordingFormat','none','destcalleridname','destcalleridnum','[OUTBOUND]','%s/helpdesk/tickets/%d','unmanaged','monitor_format','lastevent','toUpperCase','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','socket.io-emitter','application/json','info','Creating\x20new\x20ticket...','merge','format','calleridname','calleridnum','getString','Subjects','Descriptions','Tags','name','Fields','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','toString','base64','[HTTP]','stringify','GET','map','forEach'];(function(_0x28efa9,_0x2ea57b){var _0x39add7=function(_0x4220fc){while(--_0x4220fc){_0x28efa9['push'](_0x28efa9['shift']());}};_0x39add7(++_0x2ea57b);}(_0x1972,0x187));var _0x2197=function(_0x426393,_0x12640e){_0x426393=_0x426393-0x0;var _0x47549b=_0x1972[_0x426393];return _0x47549b;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require(_0x2197('0x0'));var util=require('util');var Redis=require(_0x2197('0x1'));var intUtil=require(_0x2197('0x2'));var config=require(_0x2197('0x3'));var logger=require(_0x2197('0x4'))(_0x2197('0x5'));config[_0x2197('0x6')]=_[_0x2197('0x7')](config[_0x2197('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0x2197('0x8'))(new Redis(config[_0x2197('0x6')]));var headers={'Content-Type':'application/json','Accept':_0x2197('0x9')};function emit(_0x201c81,_0x10a0d2,_0x22fece){io['to'](_0x201c81)['emit'](_0x10a0d2,_0x22fece);}function getTicket(_0x2b3ad6,_0x567840,_0x13de3f,_0x3b2965,_0x36f00a){logger[_0x2197('0xa')](_0x2197('0xb'));var _0x3afc36=_[_0x2197('0xc')]({'responder_id':_0x567840['id'],'requester_id':_0x13de3f['id'],'name':util[_0x2197('0xd')]('Caller\x20-\x20%s',_0x36f00a[_0x2197('0xe')]),'phone':_0x36f00a[_0x2197('0xf')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x2197('0x10')](_0x3b2965[_0x2197('0x11')],_0x36f00a,'\x20'),'description':intUtil['getString'](_0x3b2965[_0x2197('0x12')],_0x36f00a,'<br>'),'tags':getTags(_0x3b2965[_0x2197('0x13')],_0x2197('0x14'))},getCustomFields(_0x3b2965[_0x2197('0x15')],_0x36f00a));_0x3afc36['custom_fields']=_['mapValues'](_['keyBy'](_0x3afc36['custom_fields'],'id'),'value');return request({'uri':util[_0x2197('0xd')](_0x2197('0x16'),_0x2b3ad6[_0x2197('0x17')]),'method':_0x2197('0x18'),'body':_0x3afc36})[_0x2197('0x19')](function(_0x2aab86){logger[_0x2197('0xa')](_0x2197('0x1a'));return _0x2aab86;});}function getUser(_0x518271,_0x239e20){if(intUtil[_0x2197('0x1b')](_0x239e20)){return request({'uri':util[_0x2197('0xd')](_0x2197('0x1c'),_0x518271[_0x2197('0x17')]),'qs':{'email':_0x239e20}})[_0x2197('0x19')](function(_0x143b94){if(_0x143b94[_0x2197('0x1d')]){logger['info'](_0x2197('0x1e'));return _[_0x2197('0x1f')](_0x143b94,function(_0x5ba1fa){return _0x5ba1fa[_0x2197('0x20')][_0x2197('0x21')]===_0x239e20;});}else{logger[_0x2197('0xa')](_0x2197('0x22'));return request({'uri':util['format'](_0x2197('0x23'),_0x518271[_0x2197('0x17')])})[_0x2197('0x19')](function(_0x3581c6){logger[_0x2197('0xa')](_0x2197('0x24'));return _0x3581c6;});}});}else{logger['info'](_0x2197('0x25'));return request({'uri':util[_0x2197('0xd')](_0x2197('0x23'),_0x518271[_0x2197('0x17')])})[_0x2197('0x19')](function(_0x48317c){logger['info']('Admin\x20account\x20selected.');return _0x48317c;});}}function getEndUser(_0x226c43,_0xc77b9f,_0x4c5c65){logger[_0x2197('0xa')]('Searching\x20enduser\x20with\x20phone',_0x4c5c65);return request({'uri':util['format'](_0x2197('0x26'),_0x226c43['remoteUri']),'qs':{'phone':_0x4c5c65}})[_0x2197('0x19')](function(_0x2ea13b){if(_0x2ea13b['length']){logger[_0x2197('0xa')](_0x2197('0x27'));return _['find'](_0x2ea13b,{'phone':_0x4c5c65});}else{logger[_0x2197('0xa')](_0x2197('0x28'));return request({'uri':util[_0x2197('0xd')](_0x2197('0x26'),_0x226c43[_0x2197('0x17')]),'method':_0x2197('0x18'),'body':{'name':_0xc77b9f,'phone':_0x4c5c65}})[_0x2197('0x19')](function(_0xc5262e){logger[_0x2197('0xa')](_0x2197('0x29'));return _0xc5262e;});}});}function getAuth(_0x1c7688){return util[_0x2197('0xd')]('Basic\x20%s',new Buffer(_0x1c7688['apiKey']+':X')[_0x2197('0x2a')](_0x2197('0x2b')));}function request(_0x35356a){logger['debug'](_0x2197('0x2c'),JSON[_0x2197('0x2d')](_0x35356a));return rp(_['defaults'](_0x35356a,{'method':_0x2197('0x2e'),'headers':headers,'json':!![]}));}function getTags(_0xa8fd69,_0x4f4b0b){var _0x587a54=[];if(_0xa8fd69&&_0xa8fd69['length']>0x0){_0x587a54=_[_0x2197('0x2f')](_0xa8fd69,_0x4f4b0b);}return _0x587a54;}function getCustomFields(_0x467a8e,_0x22eb87){var _0x850dbe=[];var _0x58531d={'custom_fields':[]};if(_0x467a8e['length']>0x0){_[_0x2197('0x30')](_0x467a8e,function(_0x504205){if(_[_0x2197('0x31')]([_0x2197('0x32'),'picklist'],_0x504205['type'])&&_0x504205['nameField']&&!_0x504205[_0x2197('0x33')]){_0x58531d[_0x504205['nameField']['toLowerCase']()]=_0x504205[_0x2197('0x34')][_0x2197('0x2a')]();}else if(_[_0x2197('0x31')](['string','picklist'],_0x504205[_0x2197('0x35')])&&_0x504205['idField']&&_0x504205[_0x2197('0x33')]){_0x58531d[_0x2197('0x36')][_0x2197('0x37')]({'id':_0x504205[_0x2197('0x38')],'value':_0x504205['content']['toString']()});}else if(_0x504205[_0x2197('0x35')]===_0x2197('0x39')&&_0x504205[_0x2197('0x3a')]&&_0x504205[_0x2197('0x38')]&&_0x504205['customField']){_0x22eb87[_0x504205[_0x2197('0x3a')]]&&_0x58531d['custom_fields'][_0x2197('0x37')]({'id':_0x504205[_0x2197('0x38')],'value':_0x22eb87[_0x504205[_0x2197('0x3a')]][_0x2197('0x2a')]()});}else if(_0x504205['type']===_0x2197('0x3b')&&_0x504205[_0x2197('0x3c')]&&_0x504205[_0x2197('0x3c')][_0x2197('0x14')]&&_0x504205[_0x2197('0x38')]&&_0x504205[_0x2197('0x33')]){_0x22eb87[_0x504205['Variable'][_0x2197('0x14')][_0x2197('0x3d')]()]&&_0x58531d[_0x2197('0x36')][_0x2197('0x37')]({'id':_0x504205[_0x2197('0x38')],'value':_0x22eb87[_0x504205[_0x2197('0x3c')][_0x2197('0x14')]['toLowerCase']()][_0x2197('0x2a')]()});}});}return _0x58531d;}exports['queue']=function(_0x57adef,_0x1423e9,_0x141cdf,_0x536dc0,_0x386ce6,_0x2d3ed1){var _0xa818ac,_0x242794;_0x2d3ed1[_0x2197('0x17')]=intUtil['stripTrailingSlash'](_0x2d3ed1[_0x2197('0x17')]);_0x2d3ed1[_0x2197('0x3e')]=intUtil[_0x2197('0x3f')](_0x2d3ed1[_0x2197('0x3e')]);if(_0x386ce6&&_0x386ce6['monitor_format']){logger[_0x2197('0xa')](_0x2197('0x40'),_0x2197('0x41'));_0x1423e9['recordingURL']=util[_0x2197('0xd')](_0x2197('0x42'),_0x2d3ed1[_0x2197('0x3e')],_0x1423e9[_0x2197('0x43')],md5(_0x1423e9['uniqueid']));}else{_0x1423e9[_0x2197('0x44')]='';}headers[_0x2197('0x45')]=getAuth(_0x2d3ed1);return getUser(_0x2d3ed1,_0x536dc0[_0x2197('0x21')])['then'](function(_0x37a023){_0xa818ac=_0x37a023;logger[_0x2197('0xa')](_0x2197('0x46'),_0xa818ac['id']);return getEndUser(_0x2d3ed1,_0x1423e9['calleridname'],_0x1423e9[_0x2197('0xf')]);})['then'](function(_0x1dec54){_0x242794=_0x1dec54;logger[_0x2197('0xa')](_0x2197('0x47'),_0x242794['id']);return getTicket(_0x2d3ed1,_0xa818ac,_0x242794,_0x141cdf,_0x1423e9);})[_0x2197('0x19')](function(_0x44cac7){if(_0x44cac7&&_0x44cac7['id']){logger[_0x2197('0xa')](_0x2197('0x1a'));logger[_0x2197('0xa')]('The\x20Ticket\x20ID\x20is:',_0x44cac7['id']);logger[_0x2197('0xa')]('[QUEUE]',_0x2197('0x48'));emit(util[_0x2197('0xd')](_0x2197('0x49'),_0x536dc0[_0x2197('0x14')]),_0x2197('0x4a'),{'uri':util[_0x2197('0xd')]('%s/helpdesk/tickets/%d',_0x2d3ed1[_0x2197('0x17')],_0x44cac7['id'])});}})[_0x2197('0x4b')](function(_0x36c3b3){logger[_0x2197('0x4c')](_0x2197('0x40'),JSON[_0x2197('0x2d')](_0x36c3b3));});};exports[_0x2197('0x4d')]=function(_0x4ce587,_0x41cee8,_0x49cdc0,_0x3941fb,_0x501288,_0x1b50e6,_0x3a5ff7){var _0x4fd9ba,_0x2569ba;_0x1b50e6[_0x2197('0x17')]=intUtil[_0x2197('0x3f')](_0x1b50e6[_0x2197('0x17')]);_0x1b50e6['serverUrl']=intUtil[_0x2197('0x3f')](_0x1b50e6['serverUrl']);if(_0x3a5ff7&&_0x3a5ff7[_0x2197('0x4e')]&&_0x3a5ff7['recordingFormat']!==_0x2197('0x4f')){logger[_0x2197('0xa')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x41cee8[_0x2197('0x44')]=util[_0x2197('0xd')](_0x2197('0x42'),_0x1b50e6[_0x2197('0x3e')],_0x41cee8[_0x2197('0x43')],md5(_0x41cee8[_0x2197('0x43')]));}headers[_0x2197('0x45')]=getAuth(_0x1b50e6);return getUser(_0x1b50e6,_0x3941fb[_0x2197('0x21')])['then'](function(_0x1a245f){_0x4fd9ba=_0x1a245f;logger[_0x2197('0xa')](_0x2197('0x46'),_0x4fd9ba['id']);return getEndUser(_0x1b50e6,_0x41cee8[_0x2197('0x50')],_0x41cee8[_0x2197('0x51')]);})[_0x2197('0x19')](function(_0x469b73){_0x2569ba=_0x469b73;logger['info'](_0x2197('0x47'),_0x2569ba['id']);return getTicket(_0x1b50e6,_0x4fd9ba,_0x2569ba,_0x49cdc0,_0x41cee8);})['then'](function(_0xb0753e){if(_0xb0753e&&_0xb0753e['id']){logger[_0x2197('0xa')](_0x2197('0x1a'));logger[_0x2197('0xa')]('The\x20Ticket\x20ID\x20is:',_0xb0753e['id']);logger[_0x2197('0xa')](_0x2197('0x52'),_0x2197('0x48'));emit(util[_0x2197('0xd')]('user:%s',_0x3941fb[_0x2197('0x14')]),_0x2197('0x4a'),{'uri':util['format'](_0x2197('0x53'),_0x1b50e6[_0x2197('0x17')],_0xb0753e['id'])});}})[_0x2197('0x4b')](function(_0x1dea2e){logger[_0x2197('0x4c')]('[OUTBOUND]',JSON[_0x2197('0x2d')](_0x1dea2e));});};exports[_0x2197('0x54')]=function(_0x356560,_0x5d0a9e,_0x3cf7d2,_0x582642,_0x42f234,_0x4f8a07){var _0x475ff5,_0xbe8bcd;_0x4f8a07[_0x2197('0x17')]=intUtil[_0x2197('0x3f')](_0x4f8a07[_0x2197('0x17')]);_0x4f8a07[_0x2197('0x3e')]=intUtil[_0x2197('0x3f')](_0x4f8a07[_0x2197('0x3e')]);if(_0x42f234&&_0x42f234[_0x2197('0x55')]){logger['info']('['+_0x5d0a9e[_0x2197('0x56')][_0x2197('0x57')]()+']',_0x2197('0x41'));_0x5d0a9e[_0x2197('0x44')]=util[_0x2197('0xd')](_0x2197('0x42'),_0x4f8a07[_0x2197('0x3e')],_0x5d0a9e['uniqueid'],md5(_0x5d0a9e[_0x2197('0x43')]));}else{_0x5d0a9e[_0x2197('0x44')]='';}headers[_0x2197('0x45')]=getAuth(_0x4f8a07);return getUser(_0x4f8a07,'')[_0x2197('0x19')](function(_0x2b27b7){_0x475ff5=_0x2b27b7;logger['info'](_0x2197('0x46'),_0x475ff5['id']);return getEndUser(_0x4f8a07,_0x5d0a9e[_0x2197('0xe')],_0x5d0a9e[_0x2197('0xf')]);})['then'](function(_0x1e03e5){_0xbe8bcd=_0x1e03e5;logger['info'](_0x2197('0x47'),_0xbe8bcd['id']);return getTicket(_0x4f8a07,_0x475ff5,_0xbe8bcd,_0x3cf7d2,_0x5d0a9e);})[_0x2197('0x19')](function(_0x78989){if(_0x78989){logger[_0x2197('0xa')](_0x2197('0x1a'));logger[_0x2197('0xa')]('The\x20Ticket\x20ID\x20is:',_0x78989['id']);}})[_0x2197('0x4b')](function(_0x292c12){logger[_0x2197('0x4c')]('['+_0x5d0a9e[_0x2197('0x56')][_0x2197('0x57')]()+']',JSON[_0x2197('0x2d')](_0x292c12));});};