Built motion from commit b5413ace.|2.6.9
[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 _0x1357=['calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','[QUEUE]','%s/helpdesk/tickets/%d','catch','error','outbound','stripTrailingSlash','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','Authorization','destcalleridnum','user:%s','trigger:browser:url','unmanaged','lastevent','toUpperCase','calleridname','lodash','md5','util','ioredis','../../../../config/environment','../../../../config/logger','redis','localhost','application/json','emit','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','getString','Descriptions','<br>','Tags','name','Fields','custom_fields','mapValues','value','%s/api/v2/tickets','remoteUri','POST','then','info','Ticket\x20created!','%s/api/v2/agents','length','Agent\x20found!','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','find','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','toString','debug','[HTTP]','stringify','defaults','GET','forEach','includes','picklist','type','nameField','customField','toLowerCase','idField','push','content','variable','variableName','Variable','queue','serverUrl','monitor_format','recordingURL','uniqueid','The\x20User\x20ID\x20is:'];(function(_0x2cac50,_0x320bb5){var _0x1b7d73=function(_0x1bca86){while(--_0x1bca86){_0x2cac50['push'](_0x2cac50['shift']());}};_0x1b7d73(++_0x320bb5);}(_0x1357,0x1dd));var _0x7135=function(_0xad12b9,_0x892292){_0xad12b9=_0xad12b9-0x0;var _0x4e3d1a=_0x1357[_0xad12b9];return _0x4e3d1a;};'use strict';var _=require(_0x7135('0x0'));var rp=require('request-promise');var md5=require(_0x7135('0x1'));var util=require(_0x7135('0x2'));var Redis=require(_0x7135('0x3'));var intUtil=require('./util');var config=require(_0x7135('0x4'));var logger=require(_0x7135('0x5'))('freshdesk');config[_0x7135('0x6')]=_['defaults'](config[_0x7135('0x6')],{'host':_0x7135('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x7135('0x6')]));var headers={'Content-Type':'application/json','Accept':_0x7135('0x8')};function emit(_0x352fe3,_0x857dfc,_0x3984c3){io['to'](_0x352fe3)[_0x7135('0x9')](_0x857dfc,_0x3984c3);}function getTicket(_0x19b79d,_0x492618,_0x2c6116,_0x314ea0,_0xc6e444){logger['info'](_0x7135('0xa'));var _0x481e10=_[_0x7135('0xb')]({'responder_id':_0x492618['id'],'requester_id':_0x2c6116['id'],'name':util[_0x7135('0xc')](_0x7135('0xd'),_0xc6e444['calleridname']),'phone':_0xc6e444['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x7135('0xe')](_0x314ea0['Subjects'],_0xc6e444,'\x20'),'description':intUtil['getString'](_0x314ea0[_0x7135('0xf')],_0xc6e444,_0x7135('0x10')),'tags':getTags(_0x314ea0[_0x7135('0x11')],_0x7135('0x12'))},getCustomFields(_0x314ea0[_0x7135('0x13')],_0xc6e444));_0x481e10[_0x7135('0x14')]=_[_0x7135('0x15')](_['keyBy'](_0x481e10['custom_fields'],'id'),_0x7135('0x16'));return request({'uri':util[_0x7135('0xc')](_0x7135('0x17'),_0x19b79d[_0x7135('0x18')]),'method':_0x7135('0x19'),'body':_0x481e10})[_0x7135('0x1a')](function(_0x4197dc){logger[_0x7135('0x1b')](_0x7135('0x1c'));return _0x4197dc;});}function getUser(_0xb4eb9,_0x2a2c71){if(intUtil['validateEmail'](_0x2a2c71)){return request({'uri':util[_0x7135('0xc')](_0x7135('0x1d'),_0xb4eb9[_0x7135('0x18')]),'qs':{'email':_0x2a2c71}})[_0x7135('0x1a')](function(_0x44596f){if(_0x44596f[_0x7135('0x1e')]){logger[_0x7135('0x1b')](_0x7135('0x1f'));return _['find'](_0x44596f,function(_0x2fbee9){return _0x2fbee9[_0x7135('0x20')][_0x7135('0x21')]===_0x2a2c71;});}else{logger[_0x7135('0x1b')](_0x7135('0x22'));return request({'uri':util[_0x7135('0xc')](_0x7135('0x23'),_0xb4eb9[_0x7135('0x18')])})[_0x7135('0x1a')](function(_0x4dc0a4){logger[_0x7135('0x1b')](_0x7135('0x24'));return _0x4dc0a4;});}});}else{logger[_0x7135('0x1b')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x7135('0xc')](_0x7135('0x23'),_0xb4eb9[_0x7135('0x18')])})[_0x7135('0x1a')](function(_0x3640fe){logger['info'](_0x7135('0x24'));return _0x3640fe;});}}function getEndUser(_0x27a9d5,_0x412a39,_0x268dd3){logger[_0x7135('0x1b')](_0x7135('0x25'),_0x268dd3);return request({'uri':util[_0x7135('0xc')](_0x7135('0x26'),_0x27a9d5['remoteUri']),'qs':{'phone':_0x268dd3}})[_0x7135('0x1a')](function(_0x470e9a){if(_0x470e9a[_0x7135('0x1e')]){logger[_0x7135('0x1b')](_0x7135('0x27'));return _[_0x7135('0x28')](_0x470e9a,{'phone':_0x268dd3});}else{logger[_0x7135('0x1b')](_0x7135('0x29'));return request({'uri':util[_0x7135('0xc')](_0x7135('0x26'),_0x27a9d5['remoteUri']),'method':_0x7135('0x19'),'body':{'name':_0x412a39,'phone':_0x268dd3}})['then'](function(_0x2e2447){logger[_0x7135('0x1b')](_0x7135('0x2a'));return _0x2e2447;});}});}function getAuth(_0x1122dc){return util['format'](_0x7135('0x2b'),new Buffer(_0x1122dc['apiKey']+':X')[_0x7135('0x2c')]('base64'));}function request(_0x2ee210){logger[_0x7135('0x2d')](_0x7135('0x2e'),JSON[_0x7135('0x2f')](_0x2ee210));return rp(_[_0x7135('0x30')](_0x2ee210,{'method':_0x7135('0x31'),'headers':headers,'json':!![]}));}function getTags(_0x3bb490,_0x5c5a07){var _0x57d25b=[];if(_0x3bb490&&_0x3bb490[_0x7135('0x1e')]>0x0){_0x57d25b=_['map'](_0x3bb490,_0x5c5a07);}return _0x57d25b;}function getCustomFields(_0x2efc2a,_0x15a46b){var _0x312753=[];var _0x1aa0f1={'custom_fields':[]};if(_0x2efc2a[_0x7135('0x1e')]>0x0){_[_0x7135('0x32')](_0x2efc2a,function(_0x500cce){if(_[_0x7135('0x33')](['string',_0x7135('0x34')],_0x500cce[_0x7135('0x35')])&&_0x500cce[_0x7135('0x36')]&&!_0x500cce[_0x7135('0x37')]){_0x1aa0f1[_0x500cce[_0x7135('0x36')][_0x7135('0x38')]()]=_0x500cce['content'][_0x7135('0x2c')]();}else if(_['includes'](['string','picklist'],_0x500cce[_0x7135('0x35')])&&_0x500cce[_0x7135('0x39')]&&_0x500cce['customField']){_0x1aa0f1[_0x7135('0x14')][_0x7135('0x3a')]({'id':_0x500cce[_0x7135('0x39')],'value':_0x500cce[_0x7135('0x3b')][_0x7135('0x2c')]()});}else if(_0x500cce[_0x7135('0x35')]===_0x7135('0x3c')&&_0x500cce[_0x7135('0x3d')]&&_0x500cce['idField']&&_0x500cce[_0x7135('0x37')]){_0x15a46b[_0x500cce['variableName']]&&_0x1aa0f1[_0x7135('0x14')][_0x7135('0x3a')]({'id':_0x500cce['idField'],'value':_0x15a46b[_0x500cce[_0x7135('0x3d')]]['toString']()});}else if(_0x500cce[_0x7135('0x35')]==='customVariable'&&_0x500cce['Variable']&&_0x500cce['Variable'][_0x7135('0x12')]&&_0x500cce[_0x7135('0x39')]&&_0x500cce['customField']){_0x15a46b[_0x500cce[_0x7135('0x3e')][_0x7135('0x12')]['toLowerCase']()]&&_0x1aa0f1[_0x7135('0x14')][_0x7135('0x3a')]({'id':_0x500cce[_0x7135('0x39')],'value':_0x15a46b[_0x500cce[_0x7135('0x3e')][_0x7135('0x12')][_0x7135('0x38')]()][_0x7135('0x2c')]()});}});}return _0x1aa0f1;}exports[_0x7135('0x3f')]=function(_0xd5f11e,_0x4fb219,_0x2b5b92,_0x568842,_0xc311fa,_0xa04e3b){var _0x1457b8,_0x35be60;_0xa04e3b[_0x7135('0x18')]=intUtil['stripTrailingSlash'](_0xa04e3b[_0x7135('0x18')]);_0xa04e3b[_0x7135('0x40')]=intUtil['stripTrailingSlash'](_0xa04e3b['serverUrl']);if(_0xc311fa&&_0xc311fa[_0x7135('0x41')]){logger[_0x7135('0x1b')]('[QUEUE]','Recording\x20is\x20enabled!');_0x4fb219[_0x7135('0x42')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xa04e3b[_0x7135('0x40')],_0x4fb219['uniqueid'],md5(_0x4fb219[_0x7135('0x43')]));}else{_0x4fb219[_0x7135('0x42')]='';}headers['Authorization']=getAuth(_0xa04e3b);return getUser(_0xa04e3b,_0x568842[_0x7135('0x21')])['then'](function(_0xb0552d){_0x1457b8=_0xb0552d;logger['info'](_0x7135('0x44'),_0x1457b8['id']);return getEndUser(_0xa04e3b,_0x4fb219['calleridname'],_0x4fb219[_0x7135('0x45')]);})['then'](function(_0x2ae30e){_0x35be60=_0x2ae30e;logger['info'](_0x7135('0x46'),_0x35be60['id']);return getTicket(_0xa04e3b,_0x1457b8,_0x35be60,_0x2b5b92,_0x4fb219);})[_0x7135('0x1a')](function(_0x3af427){if(_0x3af427&&_0x3af427['id']){logger['info']('Ticket\x20created!');logger[_0x7135('0x1b')](_0x7135('0x47'),_0x3af427['id']);logger[_0x7135('0x1b')](_0x7135('0x48'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x7135('0xc')]('user:%s',_0x568842[_0x7135('0x12')]),'trigger:browser:url',{'uri':util['format'](_0x7135('0x49'),_0xa04e3b[_0x7135('0x18')],_0x3af427['id'])});}})[_0x7135('0x4a')](function(_0x4394b2){logger[_0x7135('0x4b')](_0x7135('0x48'),JSON[_0x7135('0x2f')](_0x4394b2));});};exports[_0x7135('0x4c')]=function(_0x5749e9,_0x1eddd4,_0x4ce3ba,_0x5d137c,_0x39d093,_0x3cdc6f,_0x3da932){var _0x317d12,_0x4e013d;_0x3cdc6f[_0x7135('0x18')]=intUtil[_0x7135('0x4d')](_0x3cdc6f['remoteUri']);_0x3cdc6f[_0x7135('0x40')]=intUtil[_0x7135('0x4d')](_0x3cdc6f[_0x7135('0x40')]);if(_0x3da932&&_0x3da932[_0x7135('0x4e')]&&_0x3da932[_0x7135('0x4e')]!==_0x7135('0x4f')){logger[_0x7135('0x1b')](_0x7135('0x50'),_0x7135('0x51'));_0x1eddd4[_0x7135('0x42')]=util[_0x7135('0xc')](_0x7135('0x52'),_0x3cdc6f[_0x7135('0x40')],_0x1eddd4['uniqueid'],md5(_0x1eddd4[_0x7135('0x43')]));}headers[_0x7135('0x53')]=getAuth(_0x3cdc6f);return getUser(_0x3cdc6f,_0x5d137c[_0x7135('0x21')])['then'](function(_0x43a363){_0x317d12=_0x43a363;logger['info'](_0x7135('0x44'),_0x317d12['id']);return getEndUser(_0x3cdc6f,_0x1eddd4['destcalleridname'],_0x1eddd4[_0x7135('0x54')]);})[_0x7135('0x1a')](function(_0x3e7971){_0x4e013d=_0x3e7971;logger[_0x7135('0x1b')](_0x7135('0x46'),_0x4e013d['id']);return getTicket(_0x3cdc6f,_0x317d12,_0x4e013d,_0x4ce3ba,_0x1eddd4);})[_0x7135('0x1a')](function(_0x25dcc4){if(_0x25dcc4&&_0x25dcc4['id']){logger[_0x7135('0x1b')]('Ticket\x20created!');logger[_0x7135('0x1b')](_0x7135('0x47'),_0x25dcc4['id']);logger[_0x7135('0x1b')](_0x7135('0x50'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x7135('0xc')](_0x7135('0x55'),_0x5d137c[_0x7135('0x12')]),_0x7135('0x56'),{'uri':util[_0x7135('0xc')]('%s/helpdesk/tickets/%d',_0x3cdc6f[_0x7135('0x18')],_0x25dcc4['id'])});}})['catch'](function(_0x471da4){logger[_0x7135('0x4b')](_0x7135('0x50'),JSON[_0x7135('0x2f')](_0x471da4));});};exports[_0x7135('0x57')]=function(_0x50a859,_0x3c1c9b,_0x4a3cdb,_0x3fcf69,_0x2d0d5c,_0x35ab4b){var _0x2c74f3,_0x2ab1e7;_0x35ab4b['remoteUri']=intUtil[_0x7135('0x4d')](_0x35ab4b[_0x7135('0x18')]);_0x35ab4b[_0x7135('0x40')]=intUtil[_0x7135('0x4d')](_0x35ab4b['serverUrl']);if(_0x2d0d5c&&_0x2d0d5c[_0x7135('0x41')]){logger[_0x7135('0x1b')]('['+_0x3c1c9b[_0x7135('0x58')][_0x7135('0x59')]()+']','Recording\x20is\x20enabled!');_0x3c1c9b['recordingURL']=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x35ab4b[_0x7135('0x40')],_0x3c1c9b['uniqueid'],md5(_0x3c1c9b[_0x7135('0x43')]));}else{_0x3c1c9b[_0x7135('0x42')]='';}headers['Authorization']=getAuth(_0x35ab4b);return getUser(_0x35ab4b,'')[_0x7135('0x1a')](function(_0x3cd120){_0x2c74f3=_0x3cd120;logger['info'](_0x7135('0x44'),_0x2c74f3['id']);return getEndUser(_0x35ab4b,_0x3c1c9b[_0x7135('0x5a')],_0x3c1c9b['calleridnum']);})['then'](function(_0x1e9954){_0x2ab1e7=_0x1e9954;logger[_0x7135('0x1b')](_0x7135('0x46'),_0x2ab1e7['id']);return getTicket(_0x35ab4b,_0x2c74f3,_0x2ab1e7,_0x4a3cdb,_0x3c1c9b);})[_0x7135('0x1a')](function(_0x50c5d2){if(_0x50c5d2){logger[_0x7135('0x1b')](_0x7135('0x1c'));logger[_0x7135('0x1b')](_0x7135('0x47'),_0x50c5d2['id']);}})[_0x7135('0x4a')](function(_0x593f9c){logger[_0x7135('0x4b')]('['+_0x3c1c9b[_0x7135('0x58')][_0x7135('0x59')]()+']',JSON[_0x7135('0x2f')](_0x593f9c));});};