b875bc90c576c50c17b3598ebeb6f04f613e55ef
[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 _0x7890=['emit','info','Creating\x20new\x20ticket...','merge','format','calleridname','calleridnum','getString','Descriptions','<br>','Tags','name','Fields','custom_fields','mapValues','keyBy','value','%s/api/v2/tickets','remoteUri','then','Ticket\x20created!','validateEmail','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!','POST','Basic\x20%s','apiKey','toString','base64','[HTTP]','stringify','GET','map','forEach','includes','picklist','type','nameField','customField','toLowerCase','content','string','idField','push','variable','variableName','customVariable','Variable','queue','serverUrl','stripTrailingSlash','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','error','recordingFormat','none','destcalleridname','destcalleridnum','unmanaged','monitor_format','lastevent','request-promise','md5','../../../../config/logger','freshdesk','redis','defaults','localhost','application/json'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x7890,0x103));var _0x0789=function(_0x2ca814,_0x463ba0){_0x2ca814=_0x2ca814-0x0;var _0x532e0f=_0x7890[_0x2ca814];return _0x532e0f;};'use strict';var _=require('lodash');var rp=require(_0x0789('0x0'));var md5=require(_0x0789('0x1'));var util=require('util');var Redis=require('ioredis');var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0x0789('0x2'))(_0x0789('0x3'));config[_0x0789('0x4')]=_[_0x0789('0x5')](config['redis'],{'host':_0x0789('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0789('0x4')]));var headers={'Content-Type':_0x0789('0x7'),'Accept':_0x0789('0x7')};function emit(_0x4afb5f,_0x37ade0,_0x4d04de){io['to'](_0x4afb5f)[_0x0789('0x8')](_0x37ade0,_0x4d04de);}function getTicket(_0x3ca689,_0xf0a523,_0x50ffb1,_0x42463a,_0x14e0b0){logger[_0x0789('0x9')](_0x0789('0xa'));var _0x225051=_[_0x0789('0xb')]({'responder_id':_0xf0a523['id'],'requester_id':_0x50ffb1['id'],'name':util[_0x0789('0xc')]('Caller\x20-\x20%s',_0x14e0b0[_0x0789('0xd')]),'phone':_0x14e0b0[_0x0789('0xe')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x0789('0xf')](_0x42463a['Subjects'],_0x14e0b0,'\x20'),'description':intUtil[_0x0789('0xf')](_0x42463a[_0x0789('0x10')],_0x14e0b0,_0x0789('0x11')),'tags':getTags(_0x42463a[_0x0789('0x12')],_0x0789('0x13'))},getCustomFields(_0x42463a[_0x0789('0x14')],_0x14e0b0));_0x225051[_0x0789('0x15')]=_[_0x0789('0x16')](_[_0x0789('0x17')](_0x225051[_0x0789('0x15')],'id'),_0x0789('0x18'));return request({'uri':util[_0x0789('0xc')](_0x0789('0x19'),_0x3ca689[_0x0789('0x1a')]),'method':'POST','body':_0x225051})[_0x0789('0x1b')](function(_0x280cb2){logger[_0x0789('0x9')](_0x0789('0x1c'));return _0x280cb2;});}function getUser(_0x4fb390,_0x75d699){if(intUtil[_0x0789('0x1d')](_0x75d699)){return request({'uri':util[_0x0789('0xc')]('%s/api/v2/agents',_0x4fb390[_0x0789('0x1a')]),'qs':{'email':_0x75d699}})[_0x0789('0x1b')](function(_0x32d449){if(_0x32d449['length']){logger[_0x0789('0x9')](_0x0789('0x1e'));return _[_0x0789('0x1f')](_0x32d449,function(_0x2695b0){return _0x2695b0['contact'][_0x0789('0x20')]===_0x75d699;});}else{logger[_0x0789('0x9')](_0x0789('0x21'));return request({'uri':util[_0x0789('0xc')](_0x0789('0x22'),_0x4fb390[_0x0789('0x1a')])})[_0x0789('0x1b')](function(_0x40cebc){logger[_0x0789('0x9')](_0x0789('0x23'));return _0x40cebc;});}});}else{logger[_0x0789('0x9')](_0x0789('0x24'));return request({'uri':util[_0x0789('0xc')](_0x0789('0x22'),_0x4fb390[_0x0789('0x1a')])})[_0x0789('0x1b')](function(_0x51e92b){logger[_0x0789('0x9')](_0x0789('0x23'));return _0x51e92b;});}}function getEndUser(_0xb9dd3,_0x5a0c2a,_0x255a1a){logger['info'](_0x0789('0x25'),_0x255a1a);return request({'uri':util[_0x0789('0xc')](_0x0789('0x26'),_0xb9dd3[_0x0789('0x1a')]),'qs':{'phone':_0x255a1a}})[_0x0789('0x1b')](function(_0x3e1689){if(_0x3e1689[_0x0789('0x27')]){logger[_0x0789('0x9')](_0x0789('0x28'));return _['find'](_0x3e1689,{'phone':_0x255a1a});}else{logger['info'](_0x0789('0x29'));return request({'uri':util['format']('%s/api/v2/contacts',_0xb9dd3[_0x0789('0x1a')]),'method':_0x0789('0x2a'),'body':{'name':_0x5a0c2a,'phone':_0x255a1a}})[_0x0789('0x1b')](function(_0x241ade){logger[_0x0789('0x9')]('Enduser\x20created.');return _0x241ade;});}});}function getAuth(_0x45f223){return util[_0x0789('0xc')](_0x0789('0x2b'),new Buffer(_0x45f223[_0x0789('0x2c')]+':X')[_0x0789('0x2d')](_0x0789('0x2e')));}function request(_0x40250e){logger['debug'](_0x0789('0x2f'),JSON[_0x0789('0x30')](_0x40250e));return rp(_[_0x0789('0x5')](_0x40250e,{'method':_0x0789('0x31'),'headers':headers,'json':!![]}));}function getTags(_0x4caf46,_0xcff861){var _0x1fee3d=[];if(_0x4caf46&&_0x4caf46[_0x0789('0x27')]>0x0){_0x1fee3d=_[_0x0789('0x32')](_0x4caf46,_0xcff861);}return _0x1fee3d;}function getCustomFields(_0x11dccc,_0x1f03bd){var _0x15bb70=[];var _0x1aade0={'custom_fields':[]};if(_0x11dccc['length']>0x0){_[_0x0789('0x33')](_0x11dccc,function(_0x16633f){if(_[_0x0789('0x34')](['string',_0x0789('0x35')],_0x16633f[_0x0789('0x36')])&&_0x16633f[_0x0789('0x37')]&&!_0x16633f[_0x0789('0x38')]){_0x1aade0[_0x16633f['nameField'][_0x0789('0x39')]()]=_0x16633f[_0x0789('0x3a')][_0x0789('0x2d')]();}else if(_[_0x0789('0x34')]([_0x0789('0x3b'),_0x0789('0x35')],_0x16633f[_0x0789('0x36')])&&_0x16633f[_0x0789('0x3c')]&&_0x16633f[_0x0789('0x38')]){_0x1aade0[_0x0789('0x15')][_0x0789('0x3d')]({'id':_0x16633f[_0x0789('0x3c')],'value':_0x16633f[_0x0789('0x3a')][_0x0789('0x2d')]()});}else if(_0x16633f[_0x0789('0x36')]===_0x0789('0x3e')&&_0x16633f['variableName']&&_0x16633f[_0x0789('0x3c')]&&_0x16633f['customField']){_0x1f03bd[_0x16633f[_0x0789('0x3f')]]&&_0x1aade0[_0x0789('0x15')][_0x0789('0x3d')]({'id':_0x16633f[_0x0789('0x3c')],'value':_0x1f03bd[_0x16633f[_0x0789('0x3f')]][_0x0789('0x2d')]()});}else if(_0x16633f[_0x0789('0x36')]===_0x0789('0x40')&&_0x16633f[_0x0789('0x41')]&&_0x16633f[_0x0789('0x41')][_0x0789('0x13')]&&_0x16633f[_0x0789('0x3c')]&&_0x16633f[_0x0789('0x38')]){_0x1f03bd[_0x16633f[_0x0789('0x41')][_0x0789('0x13')][_0x0789('0x39')]()]&&_0x1aade0['custom_fields']['push']({'id':_0x16633f[_0x0789('0x3c')],'value':_0x1f03bd[_0x16633f['Variable'][_0x0789('0x13')][_0x0789('0x39')]()]['toString']()});}});}return _0x1aade0;}exports[_0x0789('0x42')]=function(_0x21851f,_0x2681d6,_0x5a68b2,_0x1b5140,_0x16232d,_0x2954ca){var _0x7fb3ae,_0x9bfdee;_0x2954ca[_0x0789('0x1a')]=intUtil['stripTrailingSlash'](_0x2954ca[_0x0789('0x1a')]);_0x2954ca[_0x0789('0x43')]=intUtil[_0x0789('0x44')](_0x2954ca[_0x0789('0x43')]);if(_0x16232d&&_0x16232d['monitor_format']){logger[_0x0789('0x9')](_0x0789('0x45'),_0x0789('0x46'));_0x2681d6[_0x0789('0x47')]=util[_0x0789('0xc')](_0x0789('0x48'),_0x2954ca[_0x0789('0x43')],_0x2681d6['uniqueid'],md5(_0x2681d6[_0x0789('0x49')]));}else{_0x2681d6[_0x0789('0x47')]='';}headers[_0x0789('0x4a')]=getAuth(_0x2954ca);return getUser(_0x2954ca,_0x1b5140['email'])[_0x0789('0x1b')](function(_0x44c5ef){_0x7fb3ae=_0x44c5ef;logger['info']('The\x20User\x20ID\x20is:',_0x7fb3ae['id']);return getEndUser(_0x2954ca,_0x2681d6[_0x0789('0xd')],_0x2681d6[_0x0789('0xe')]);})[_0x0789('0x1b')](function(_0x15dfb7){_0x9bfdee=_0x15dfb7;logger[_0x0789('0x9')](_0x0789('0x4b'),_0x9bfdee['id']);return getTicket(_0x2954ca,_0x7fb3ae,_0x9bfdee,_0x5a68b2,_0x2681d6);})['then'](function(_0x342253){if(_0x342253&&_0x342253['id']){logger[_0x0789('0x9')](_0x0789('0x1c'));logger['info'](_0x0789('0x4c'),_0x342253['id']);logger['info'](_0x0789('0x45'),_0x0789('0x4d'));emit(util['format'](_0x0789('0x4e'),_0x1b5140[_0x0789('0x13')]),_0x0789('0x4f'),{'uri':util[_0x0789('0xc')](_0x0789('0x50'),_0x2954ca[_0x0789('0x1a')],_0x342253['id'])});}})['catch'](function(_0x53699d){logger[_0x0789('0x51')]('[QUEUE]',JSON[_0x0789('0x30')](_0x53699d));});};exports['outbound']=function(_0x296f55,_0x5919cf,_0x122596,_0x37342d,_0x6082bc,_0x946ce4,_0x738ebb){var _0x28815b,_0x1278af;_0x946ce4[_0x0789('0x1a')]=intUtil[_0x0789('0x44')](_0x946ce4[_0x0789('0x1a')]);_0x946ce4[_0x0789('0x43')]=intUtil[_0x0789('0x44')](_0x946ce4['serverUrl']);if(_0x738ebb&&_0x738ebb[_0x0789('0x52')]&&_0x738ebb[_0x0789('0x52')]!==_0x0789('0x53')){logger[_0x0789('0x9')]('[OUTBOUND]',_0x0789('0x46'));_0x5919cf['recordingURL']=util[_0x0789('0xc')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x946ce4[_0x0789('0x43')],_0x5919cf[_0x0789('0x49')],md5(_0x5919cf['uniqueid']));}headers[_0x0789('0x4a')]=getAuth(_0x946ce4);return getUser(_0x946ce4,_0x37342d[_0x0789('0x20')])[_0x0789('0x1b')](function(_0x1ae500){_0x28815b=_0x1ae500;logger[_0x0789('0x9')]('The\x20User\x20ID\x20is:',_0x28815b['id']);return getEndUser(_0x946ce4,_0x5919cf[_0x0789('0x54')],_0x5919cf[_0x0789('0x55')]);})['then'](function(_0x55e1c9){_0x1278af=_0x55e1c9;logger['info'](_0x0789('0x4b'),_0x1278af['id']);return getTicket(_0x946ce4,_0x28815b,_0x1278af,_0x122596,_0x5919cf);})[_0x0789('0x1b')](function(_0x1ecae2){if(_0x1ecae2&&_0x1ecae2['id']){logger[_0x0789('0x9')]('Ticket\x20created!');logger[_0x0789('0x9')](_0x0789('0x4c'),_0x1ecae2['id']);logger[_0x0789('0x9')]('[OUTBOUND]',_0x0789('0x4d'));emit(util[_0x0789('0xc')](_0x0789('0x4e'),_0x37342d[_0x0789('0x13')]),_0x0789('0x4f'),{'uri':util[_0x0789('0xc')](_0x0789('0x50'),_0x946ce4[_0x0789('0x1a')],_0x1ecae2['id'])});}})['catch'](function(_0x2cd29d){logger[_0x0789('0x51')]('[OUTBOUND]',JSON[_0x0789('0x30')](_0x2cd29d));});};exports[_0x0789('0x56')]=function(_0x2a7283,_0x500d36,_0x48d677,_0x30b8c0,_0x5cf5e6,_0x260b24){var _0x1103f2,_0x3ed87c;_0x260b24['remoteUri']=intUtil[_0x0789('0x44')](_0x260b24[_0x0789('0x1a')]);_0x260b24[_0x0789('0x43')]=intUtil[_0x0789('0x44')](_0x260b24[_0x0789('0x43')]);if(_0x5cf5e6&&_0x5cf5e6[_0x0789('0x57')]){logger['info']('['+_0x500d36[_0x0789('0x58')]['toUpperCase']()+']',_0x0789('0x46'));_0x500d36[_0x0789('0x47')]=util[_0x0789('0xc')](_0x0789('0x48'),_0x260b24['serverUrl'],_0x500d36[_0x0789('0x49')],md5(_0x500d36[_0x0789('0x49')]));}else{_0x500d36[_0x0789('0x47')]='';}headers[_0x0789('0x4a')]=getAuth(_0x260b24);return getUser(_0x260b24,'')[_0x0789('0x1b')](function(_0x5da892){_0x1103f2=_0x5da892;logger['info']('The\x20User\x20ID\x20is:',_0x1103f2['id']);return getEndUser(_0x260b24,_0x500d36[_0x0789('0xd')],_0x500d36[_0x0789('0xe')]);})['then'](function(_0x4c4235){_0x3ed87c=_0x4c4235;logger[_0x0789('0x9')](_0x0789('0x4b'),_0x3ed87c['id']);return getTicket(_0x260b24,_0x1103f2,_0x3ed87c,_0x48d677,_0x500d36);})[_0x0789('0x1b')](function(_0x437ef9){if(_0x437ef9){logger['info'](_0x0789('0x1c'));logger[_0x0789('0x9')](_0x0789('0x4c'),_0x437ef9['id']);}})['catch'](function(_0x218eca){logger[_0x0789('0x51')]('['+_0x500d36[_0x0789('0x58')]['toUpperCase']()+']',JSON['stringify'](_0x218eca));});};