Built motion from commit (unavailable).|2.3.1
[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 _0xd6e0=['apiKey','toString','base64','debug','[HTTP]','stringify','GET','forEach','type','string','nameField','customField','toLowerCase','content','idField','push','variable','variableName','Variable','stripTrailingSlash','serverUrl','monitor_format','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','[QUEUE]','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridnum','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','abandoned','[ABANDONED]','lodash','request-promise','md5','util','ioredis','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','application/json','emit','info','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','Tags','name','Fields','custom_fields','mapValues','keyBy','value','%s/api/v2/tickets','remoteUri','then','Ticket\x20created!','validateEmail','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s'];(function(_0x4a5c02,_0x5dc14a){var _0x39a30f=function(_0x3fd756){while(--_0x3fd756){_0x4a5c02['push'](_0x4a5c02['shift']());}};_0x39a30f(++_0x5dc14a);}(_0xd6e0,0x193));var _0x0d6e=function(_0x3cf5a3,_0x5a4492){_0x3cf5a3=_0x3cf5a3-0x0;var _0x39ba2d=_0xd6e0[_0x3cf5a3];return _0x39ba2d;};'use strict';var _=require(_0x0d6e('0x0'));var rp=require(_0x0d6e('0x1'));var md5=require(_0x0d6e('0x2'));var util=require(_0x0d6e('0x3'));var Redis=require(_0x0d6e('0x4'));var intUtil=require('./util');var config=require(_0x0d6e('0x5'));var logger=require(_0x0d6e('0x6'))(_0x0d6e('0x7'));config[_0x0d6e('0x8')]=_[_0x0d6e('0x9')](config[_0x0d6e('0x8')],{'host':_0x0d6e('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var headers={'Content-Type':_0x0d6e('0xb'),'Accept':_0x0d6e('0xb')};function emit(_0x474f59,_0x4b10c5,_0xac651d){io['to'](_0x474f59)[_0x0d6e('0xc')](_0x4b10c5,_0xac651d);}function getTicket(_0x1ddf8e,_0x302401,_0x3674d7,_0x429831,_0x3e6bf4){logger[_0x0d6e('0xd')]('Creating\x20new\x20ticket...');var _0x35db49=_[_0x0d6e('0xe')]({'responder_id':_0x302401['id'],'requester_id':_0x3674d7['id'],'name':util[_0x0d6e('0xf')](_0x0d6e('0x10'),_0x3e6bf4[_0x0d6e('0x11')]),'phone':_0x3e6bf4[_0x0d6e('0x12')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x0d6e('0x13')](_0x429831[_0x0d6e('0x14')],_0x3e6bf4,'\x20'),'description':intUtil[_0x0d6e('0x13')](_0x429831[_0x0d6e('0x15')],_0x3e6bf4,_0x0d6e('0x16')),'tags':getTags(_0x429831[_0x0d6e('0x17')],_0x0d6e('0x18'))},getCustomFields(_0x429831[_0x0d6e('0x19')],_0x3e6bf4));_0x35db49[_0x0d6e('0x1a')]=_[_0x0d6e('0x1b')](_[_0x0d6e('0x1c')](_0x35db49['custom_fields'],'id'),_0x0d6e('0x1d'));return request({'uri':util[_0x0d6e('0xf')](_0x0d6e('0x1e'),_0x1ddf8e[_0x0d6e('0x1f')]),'method':'POST','body':_0x35db49})[_0x0d6e('0x20')](function(_0x28f8bd){logger[_0x0d6e('0xd')](_0x0d6e('0x21'));return _0x28f8bd;});}function getUser(_0x74ef7c,_0x4300a7){if(intUtil[_0x0d6e('0x22')](_0x4300a7)===!![]){return request({'uri':util[_0x0d6e('0xf')]('%s/api/v2/agents',_0x74ef7c[_0x0d6e('0x1f')]),'qs':{'email':_0x4300a7}})['then'](function(_0x5c11e1){if(_0x5c11e1[_0x0d6e('0x23')]){logger[_0x0d6e('0xd')](_0x0d6e('0x24'));return _[_0x0d6e('0x25')](_0x5c11e1,function(_0x144c8f){return _0x144c8f[_0x0d6e('0x26')][_0x0d6e('0x27')]===_0x4300a7;});}else{logger['info'](_0x0d6e('0x28'));return request({'uri':util[_0x0d6e('0xf')](_0x0d6e('0x29'),_0x74ef7c['remoteUri'])})[_0x0d6e('0x20')](function(_0x1ee4b4){logger[_0x0d6e('0xd')](_0x0d6e('0x2a'));return _0x1ee4b4;});}});}else{return request({'uri':util[_0x0d6e('0xf')](_0x0d6e('0x29'),_0x74ef7c[_0x0d6e('0x1f')])})['then'](function(_0x36f06b){logger[_0x0d6e('0xd')](_0x0d6e('0x2a'));return _0x36f06b;});}}function getEndUser(_0x123295,_0x4c3350,_0x550c17){logger[_0x0d6e('0xd')](_0x0d6e('0x2b'),_0x550c17);return request({'uri':util[_0x0d6e('0xf')]('%s/api/v2/contacts',_0x123295[_0x0d6e('0x1f')]),'qs':{'phone':_0x550c17}})[_0x0d6e('0x20')](function(_0x14c8e6){if(_0x14c8e6['length']){logger['info']('Enduser\x20found!');return _['find'](_0x14c8e6,{'phone':_0x550c17});}else{logger[_0x0d6e('0xd')](_0x0d6e('0x2c'));return request({'uri':util[_0x0d6e('0xf')]('%s/api/v2/contacts',_0x123295['remoteUri']),'method':'POST','body':{'name':_0x4c3350,'phone':_0x550c17}})[_0x0d6e('0x20')](function(_0x28d83b){logger[_0x0d6e('0xd')](_0x0d6e('0x2d'));return _0x28d83b;});}});}function getAuth(_0x45aad1){return util[_0x0d6e('0xf')](_0x0d6e('0x2e'),new Buffer(_0x45aad1[_0x0d6e('0x2f')]+':X')[_0x0d6e('0x30')](_0x0d6e('0x31')));}function request(_0x3e4205){logger[_0x0d6e('0x32')](_0x0d6e('0x33'),JSON[_0x0d6e('0x34')](_0x3e4205));return rp(_[_0x0d6e('0x9')](_0x3e4205,{'method':_0x0d6e('0x35'),'headers':headers,'json':!![]}));}function getTags(_0x3d1a0e,_0x27d032){var _0x1a3db9=[];if(_0x3d1a0e&&_0x3d1a0e['length']>0x0){_0x1a3db9=_['map'](_0x3d1a0e,_0x27d032);}return _0x1a3db9;}function getCustomFields(_0x2897a7,_0x3e9cd0){var _0x30f254=[];var _0x33722f={'custom_fields':[]};if(_0x2897a7['length']>0x0){_[_0x0d6e('0x36')](_0x2897a7,function(_0x295263){if(_0x295263[_0x0d6e('0x37')]===_0x0d6e('0x38')&&_0x295263[_0x0d6e('0x39')]&&!_0x295263[_0x0d6e('0x3a')]){_0x33722f[_0x295263[_0x0d6e('0x39')][_0x0d6e('0x3b')]()]=_0x295263[_0x0d6e('0x3c')][_0x0d6e('0x30')]();}else if(_0x295263[_0x0d6e('0x37')]===_0x0d6e('0x38')&&_0x295263[_0x0d6e('0x3d')]&&_0x295263['customField']){_0x33722f['custom_fields'][_0x0d6e('0x3e')]({'id':_0x295263[_0x0d6e('0x3d')],'value':_0x295263[_0x0d6e('0x3c')][_0x0d6e('0x30')]()});}else if(_0x295263[_0x0d6e('0x37')]===_0x0d6e('0x3f')&&_0x295263[_0x0d6e('0x40')]&&_0x295263['idField']&&_0x295263[_0x0d6e('0x3a')]){_0x3e9cd0[_0x295263[_0x0d6e('0x40')]]&&_0x33722f[_0x0d6e('0x1a')][_0x0d6e('0x3e')]({'id':_0x295263[_0x0d6e('0x3d')],'value':_0x3e9cd0[_0x295263[_0x0d6e('0x40')]][_0x0d6e('0x30')]()});}else if(_0x295263[_0x0d6e('0x37')]==='customVariable'&&_0x295263[_0x0d6e('0x41')]&&_0x295263[_0x0d6e('0x41')][_0x0d6e('0x18')]&&_0x295263[_0x0d6e('0x3d')]&&_0x295263['customField']){_0x3e9cd0[_0x295263[_0x0d6e('0x41')][_0x0d6e('0x18')][_0x0d6e('0x3b')]()]&&_0x33722f[_0x0d6e('0x1a')][_0x0d6e('0x3e')]({'id':_0x295263[_0x0d6e('0x3d')],'value':_0x3e9cd0[_0x295263['Variable'][_0x0d6e('0x18')][_0x0d6e('0x3b')]()]['toString']()});}});}return _0x33722f;}exports['queue']=function(_0x585c30,_0x3cefa9,_0x2da188,_0x356235,_0x165a99,_0xf25592){var _0x4d6e9b,_0x441b41;_0xf25592[_0x0d6e('0x1f')]=intUtil[_0x0d6e('0x42')](_0xf25592[_0x0d6e('0x1f')]);_0xf25592['serverUrl']=intUtil[_0x0d6e('0x42')](_0xf25592[_0x0d6e('0x43')]);if(_0x165a99&&_0x165a99[_0x0d6e('0x44')]){logger[_0x0d6e('0xd')]('[QUEUE]','Recording\x20is\x20enabled!');_0x3cefa9[_0x0d6e('0x45')]=util['format'](_0x0d6e('0x46'),_0xf25592[_0x0d6e('0x43')],_0x3cefa9[_0x0d6e('0x47')],md5(_0x3cefa9[_0x0d6e('0x47')]));}else{_0x3cefa9['recordingURL']='';}headers[_0x0d6e('0x48')]=getAuth(_0xf25592);return getUser(_0xf25592,_0x356235[_0x0d6e('0x27')])[_0x0d6e('0x20')](function(_0x4abeeb){_0x4d6e9b=_0x4abeeb;logger['info'](_0x0d6e('0x49'),_0x4d6e9b['id']);return getEndUser(_0xf25592,_0x3cefa9[_0x0d6e('0x11')],_0x3cefa9[_0x0d6e('0x12')]);})['then'](function(_0x380cdd){_0x441b41=_0x380cdd;logger[_0x0d6e('0xd')](_0x0d6e('0x4a'),_0x441b41['id']);return getTicket(_0xf25592,_0x4d6e9b,_0x441b41,_0x2da188,_0x3cefa9);})[_0x0d6e('0x20')](function(_0x269eb3){if(_0x269eb3&&_0x269eb3['id']){logger[_0x0d6e('0xd')](_0x0d6e('0x21'));logger[_0x0d6e('0xd')]('The\x20Ticket\x20ID\x20is:',_0x269eb3['id']);logger[_0x0d6e('0xd')](_0x0d6e('0x4b'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x0d6e('0xf')]('user:%s',_0x356235[_0x0d6e('0x18')]),_0x0d6e('0x4c'),{'uri':util[_0x0d6e('0xf')](_0x0d6e('0x4d'),_0xf25592[_0x0d6e('0x1f')],_0x269eb3['id'])});}})[_0x0d6e('0x4e')](function(_0x51f49a){logger[_0x0d6e('0x4f')](_0x0d6e('0x4b'),JSON['stringify'](_0x51f49a));});};exports[_0x0d6e('0x50')]=function(_0x27ea4a,_0x3914ba,_0x5ea404,_0xf4975d,_0x5cd4d7,_0x116265,_0x1517d1){var _0x3f4acd,_0x23a038;_0x116265[_0x0d6e('0x1f')]=intUtil[_0x0d6e('0x42')](_0x116265['remoteUri']);_0x116265[_0x0d6e('0x43')]=intUtil['stripTrailingSlash'](_0x116265[_0x0d6e('0x43')]);if(_0x1517d1&&_0x1517d1[_0x0d6e('0x51')]&&_0x1517d1[_0x0d6e('0x51')]!=='none'){logger[_0x0d6e('0xd')](_0x0d6e('0x52'),_0x0d6e('0x53'));_0x3914ba[_0x0d6e('0x45')]=util[_0x0d6e('0xf')](_0x0d6e('0x46'),_0x116265['serverUrl'],_0x3914ba[_0x0d6e('0x47')],md5(_0x3914ba[_0x0d6e('0x47')]));}headers[_0x0d6e('0x48')]=getAuth(_0x116265);return getUser(_0x116265,_0xf4975d[_0x0d6e('0x27')])[_0x0d6e('0x20')](function(_0x41f260){_0x3f4acd=_0x41f260;logger['info'](_0x0d6e('0x49'),_0x3f4acd['id']);return getEndUser(_0x116265,_0x3914ba['destcalleridname'],_0x3914ba[_0x0d6e('0x54')]);})[_0x0d6e('0x20')](function(_0x24fe28){_0x23a038=_0x24fe28;logger['info']('The\x20Enduser\x20ID\x20is:',_0x23a038['id']);return getTicket(_0x116265,_0x3f4acd,_0x23a038,_0x5ea404,_0x3914ba);})['then'](function(_0x5b5718){if(_0x5b5718&&_0x5b5718['id']){logger[_0x0d6e('0xd')](_0x0d6e('0x21'));logger[_0x0d6e('0xd')](_0x0d6e('0x55'),_0x5b5718['id']);logger[_0x0d6e('0xd')]('[OUTBOUND]',_0x0d6e('0x56'));emit(util[_0x0d6e('0xf')](_0x0d6e('0x57'),_0xf4975d[_0x0d6e('0x18')]),_0x0d6e('0x4c'),{'uri':util[_0x0d6e('0xf')]('%s/helpdesk/tickets/%d',_0x116265['remoteUri'],_0x5b5718['id'])});}})[_0x0d6e('0x4e')](function(_0x3a5833){logger['error'](_0x0d6e('0x52'),JSON[_0x0d6e('0x34')](_0x3a5833));});};exports[_0x0d6e('0x58')]=function(_0x35a79f,_0x338bd3,_0x483006,_0x280327,_0x58fa48,_0x71e7d5){var _0x8bf753,_0x50e539;_0x71e7d5[_0x0d6e('0x1f')]=intUtil[_0x0d6e('0x42')](_0x71e7d5['remoteUri']);_0x71e7d5[_0x0d6e('0x43')]=intUtil[_0x0d6e('0x42')](_0x71e7d5[_0x0d6e('0x43')]);if(_0x58fa48&&_0x58fa48[_0x0d6e('0x44')]){logger[_0x0d6e('0xd')](_0x0d6e('0x59'),'Recording\x20is\x20enabled!');_0x338bd3['recordingURL']=util['format'](_0x0d6e('0x46'),_0x71e7d5[_0x0d6e('0x43')],_0x338bd3[_0x0d6e('0x47')],md5(_0x338bd3[_0x0d6e('0x47')]));}else{_0x338bd3[_0x0d6e('0x45')]='';}headers['Authorization']=getAuth(_0x71e7d5);return getUser(_0x71e7d5,'')[_0x0d6e('0x20')](function(_0x205ce7){_0x8bf753=_0x205ce7;logger[_0x0d6e('0xd')](_0x0d6e('0x49'),_0x8bf753['id']);return getEndUser(_0x71e7d5,_0x338bd3[_0x0d6e('0x11')],_0x338bd3[_0x0d6e('0x12')]);})['then'](function(_0x1b3643){_0x50e539=_0x1b3643;logger['info'](_0x0d6e('0x4a'),_0x50e539['id']);return getTicket(_0x71e7d5,_0x8bf753,_0x50e539,_0x483006,_0x338bd3);})[_0x0d6e('0x20')](function(_0x34edcf){if(_0x34edcf){logger[_0x0d6e('0xd')](_0x0d6e('0x21'));logger[_0x0d6e('0xd')](_0x0d6e('0x55'),_0x34edcf['id']);}})[_0x0d6e('0x4e')](function(_0x3266c2){logger[_0x0d6e('0x4f')](_0x0d6e('0x59'),JSON[_0x0d6e('0x34')](_0x3266c2));});};