Built motion from commit (unavailable).|2.6.0
[motion2.git] / server / services / ami / trigger / integration / vtiger.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 _0xc7bd=['Open','getString','Subjects','Descriptions','POST','format','%s/webservice.php','remoteUri','create','username','sessionName','stringify','then','success','error','catch','[vTiger],\x20%s,\x20%s,\x20%s','createTicket','validateEmail','Getting\x20agent\x20with\x20email','GET','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','Agent\x20found!','resolve','result','email1','first_name','userId','statusCode','getUser','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','admin','Searching\x20end\x20user\x20with\x20phone','query','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','phone','accessKey','getchallenge','token','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','outbound','recordingFormat','none','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','[OUTBOUND]','unmanaged','lastevent','toUpperCase','lodash','request-promise','bluebird','md5','./util','../../../../config/environment','../../../../config/logger','redis','socket.io-emitter','emit','length','string','picklist','type','idField','toString','variable','variableName','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge'];(function(_0x5592c5,_0x4c160e){var _0x338df7=function(_0x4e84b5){while(--_0x4e84b5){_0x5592c5['push'](_0x5592c5['shift']());}};_0x338df7(++_0x4c160e);}(_0xc7bd,0x170));var _0xdc7b=function(_0x4645d6,_0x5edcbc){_0x4645d6=_0x4645d6-0x0;var _0x27fc6a=_0xc7bd[_0x4645d6];return _0x27fc6a;};'use strict';var _=require(_0xdc7b('0x0'));var rp=require(_0xdc7b('0x1'));var BPromise=require(_0xdc7b('0x2'));var md5=require(_0xdc7b('0x3'));var util=require('util');var Redis=require('ioredis');var intUtil=require(_0xdc7b('0x4'));var config=require(_0xdc7b('0x5'));var logger=require(_0xdc7b('0x6'))('vTiger');config[_0xdc7b('0x7')]=_['defaults'](config[_0xdc7b('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0xdc7b('0x8'))(new Redis(config[_0xdc7b('0x7')]));function emit(_0x5688dd,_0x46231d,_0x510654){io['to'](_0x5688dd)[_0xdc7b('0x9')](_0x46231d,_0x510654);}function getCustomFields(_0x2ac217,_0x26e07c){var _0x4e2453={};if(_0x2ac217[_0xdc7b('0xa')]>0x0){_['forEach'](_0x2ac217,function(_0x237fe3){if(_['includes']([_0xdc7b('0xb'),_0xdc7b('0xc')],_0x237fe3[_0xdc7b('0xd')])&&_0x237fe3[_0xdc7b('0xe')]){_0x4e2453[_0x237fe3[_0xdc7b('0xe')]]=_0x237fe3['content'][_0xdc7b('0xf')]();}else if(_0x237fe3[_0xdc7b('0xd')]===_0xdc7b('0x10')&&_0x237fe3[_0xdc7b('0x11')]&&_0x237fe3[_0xdc7b('0xe')]&&_0x26e07c[_0x237fe3[_0xdc7b('0x11')]]){_0x4e2453[_0x237fe3[_0xdc7b('0xe')]]=_0x26e07c[_0x237fe3['variableName']][_0xdc7b('0xf')]();}else if(_0x237fe3['type']==='customVariable'&&_0x237fe3[_0xdc7b('0x12')]&&_0x237fe3[_0xdc7b('0x12')][_0xdc7b('0x13')]&&_0x237fe3['idField']&&_0x26e07c[_0x237fe3['Variable'][_0xdc7b('0x13')][_0xdc7b('0x14')]()]){_0x4e2453[_0x237fe3[_0xdc7b('0xe')]]=_0x26e07c[_0x237fe3['Variable']['name'][_0xdc7b('0x14')]()]['toString']();}});}return _0x4e2453;}function createTicket(_0x1a16cd,_0x482a64,_0x235dfc,_0xa786e8,_0x823c24,_0x510041,_0x8eac93){logger[_0xdc7b('0x15')](_0xdc7b('0x16'));var _0x28ef25=_[_0xdc7b('0x17')]({'parent_id':'','assigned_user_id':_0x482a64['id'],'ticketpriorities':'Normal','ticketstatus':_0xdc7b('0x18'),'ticket_title':intUtil[_0xdc7b('0x19')](_0xa786e8[_0xdc7b('0x1a')],_0x823c24,'\x20'),'description':intUtil[_0xdc7b('0x19')](_0xa786e8[_0xdc7b('0x1b')],_0x823c24,'\x0a'),'contact_id':_0x235dfc['id']},getCustomFields(_0x510041,_0x823c24));var _0x3c14e3={'method':_0xdc7b('0x1c'),'uri':util[_0xdc7b('0x1d')](_0xdc7b('0x1e'),_0x1a16cd[_0xdc7b('0x1f')]),'form':{'operation':_0xdc7b('0x20'),'username':_0x1a16cd[_0xdc7b('0x21')],'sessionName':_0x8eac93[_0xdc7b('0x22')],'elementType':'HelpDesk','element':JSON[_0xdc7b('0x23')](_0x28ef25)},'json':!![]};return request(_0x3c14e3)[_0xdc7b('0x24')](function(_0x2907d9){if(_0x2907d9[_0xdc7b('0x25')]){return BPromise['resolve']({'id':_0x2907d9['result']['id']});}else{throw new Error(util[_0xdc7b('0x1d')]('Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s',JSON[_0xdc7b('0x23')](_0x2907d9[_0xdc7b('0x26')])));}})[_0xdc7b('0x27')](function(_0x2317af){var _0x50fb35=_0x2317af['statusCode']||0x1f4;logger[_0xdc7b('0x26')](_0xdc7b('0x28'),_0xdc7b('0x29'),_0x50fb35,JSON[_0xdc7b('0x23')](_0x2317af));});}function getUser(_0x511922,_0x2b68db,_0x3bfcee){if(intUtil[_0xdc7b('0x2a')](_0x2b68db)){logger['info'](_0xdc7b('0x2b'),_0x2b68db);return request({'method':_0xdc7b('0x2c'),'uri':util[_0xdc7b('0x1d')](_0xdc7b('0x1e'),_0x511922[_0xdc7b('0x1f')]),'qs':{'operation':'query','username':_0x511922[_0xdc7b('0x21')],'sessionName':_0x3bfcee[_0xdc7b('0x22')],'query':util[_0xdc7b('0x1d')](_0xdc7b('0x2d'),_0x2b68db)},'json':!![]})['then'](function(_0x40c49a){if(_0x40c49a[_0xdc7b('0x25')]&&_0x40c49a['result']['length']){logger[_0xdc7b('0x15')](_0xdc7b('0x2e'));return BPromise[_0xdc7b('0x2f')]({'id':_0x40c49a[_0xdc7b('0x30')][0x0]['id'],'email':_0x40c49a['result'][0x0][_0xdc7b('0x31')],'name':_0x40c49a[_0xdc7b('0x30')][0x0][_0xdc7b('0x32')]+'\x20'+_0x40c49a[_0xdc7b('0x30')]['last_name']});}else{logger[_0xdc7b('0x15')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0xdc7b('0x2f')]({'id':_0x3bfcee[_0xdc7b('0x33')],'email':_0x511922[_0xdc7b('0x21')],'name':'admin'});}})['catch'](function(_0x580874){var _0x58eea0=_0x580874[_0xdc7b('0x34')]||0x1f4;logger[_0xdc7b('0x26')](_0xdc7b('0x28'),_0xdc7b('0x35'),_0x58eea0,JSON[_0xdc7b('0x23')](_0x580874));});}else{logger[_0xdc7b('0x15')](_0xdc7b('0x36'));return BPromise['resolve']({'id':_0x3bfcee[_0xdc7b('0x33')],'email':_0x511922[_0xdc7b('0x21')],'name':_0xdc7b('0x37')})[_0xdc7b('0x27')](function(_0x1ab1cd){var _0x56222f=_0x1ab1cd['statusCode']||0x1f4;logger[_0xdc7b('0x26')]('[vTiger],\x20%s,\x20%s,\x20%s',_0xdc7b('0x35'),_0x56222f,JSON[_0xdc7b('0x23')](_0x1ab1cd));});}}function getEndUser(_0x1d1614,_0x273574,_0x12062b,_0x33a669){logger['info'](_0xdc7b('0x38'),_0x12062b);return request({'method':_0xdc7b('0x2c'),'uri':util['format']('%s/webservice.php',_0x1d1614[_0xdc7b('0x1f')]),'qs':{'operation':_0xdc7b('0x39'),'username':_0x1d1614[_0xdc7b('0x21')],'sessionName':_0x33a669[_0xdc7b('0x22')],'query':util[_0xdc7b('0x1d')]('SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;',_0x12062b,_0x12062b,_0x12062b,_0x12062b,_0x12062b)},'json':!![]})[_0xdc7b('0x24')](function(_0x341792){if(_0x341792['success']&&_0x341792[_0xdc7b('0x30')]['length']){logger[_0xdc7b('0x15')](_0xdc7b('0x3a'));return BPromise['resolve']({'id':_0x341792[_0xdc7b('0x30')][0x0]['id'],'name':_0x341792[_0xdc7b('0x30')][0x0][_0xdc7b('0x3b')]+'\x20'+_0x341792[_0xdc7b('0x30')][0x0][_0xdc7b('0x3c')],'phone':_0x12062b});}else{logger[_0xdc7b('0x15')](_0xdc7b('0x3d'));return request({'method':'POST','uri':util[_0xdc7b('0x1d')](_0xdc7b('0x1e'),_0x1d1614[_0xdc7b('0x1f')]),'form':{'operation':_0xdc7b('0x20'),'sessionName':_0x33a669[_0xdc7b('0x22')],'elementType':'Contacts','element':JSON['stringify']({'lastname':_0x273574,'phone':_0x12062b,'assigned_user_id':'\x20'})},'json':!![]})[_0xdc7b('0x24')](function(_0x4e8e0d){logger[_0xdc7b('0x15')](_0xdc7b('0x3e'));return BPromise[_0xdc7b('0x2f')]({'id':_0x4e8e0d[_0xdc7b('0x30')]['id'],'name':_0x4e8e0d['result'][_0xdc7b('0x3c')],'phone':_0x4e8e0d[_0xdc7b('0x30')][_0xdc7b('0x3f')]});})[_0xdc7b('0x27')](function(_0x925a40){var _0x1fa5ac=_0x925a40[_0xdc7b('0x34')]||0x1f4;logger[_0xdc7b('0x26')](_0xdc7b('0x28'),'getEndUser',_0x1fa5ac,JSON[_0xdc7b('0x23')](_0x925a40));});}});}function getConnection(_0x259dbe){var _0x227c08=_0x259dbe[_0xdc7b('0x21')];var _0x414cff=_0x259dbe[_0xdc7b('0x40')];return request({'method':'GET','uri':util[_0xdc7b('0x1d')](_0xdc7b('0x1e'),_0x259dbe['remoteUri']),'qs':{'operation':_0xdc7b('0x41'),'username':_0x227c08},'json':!![]})[_0xdc7b('0x24')](function(_0x3cc6ab){if(_0x3cc6ab[_0xdc7b('0x25')]){return request({'method':_0xdc7b('0x1c'),'uri':util[_0xdc7b('0x1d')](_0xdc7b('0x1e'),_0x259dbe[_0xdc7b('0x1f')]),'form':{'operation':'login','username':_0x227c08,'accessKey':md5(_0x3cc6ab[_0xdc7b('0x30')][_0xdc7b('0x42')]+_0x414cff)},'json':!![]});}})[_0xdc7b('0x24')](function(_0x17aa7f){if(_0x17aa7f[_0xdc7b('0x25')]){return BPromise['resolve'](_0x17aa7f[_0xdc7b('0x30')]);}else{throw new Error(util[_0xdc7b('0x1d')](_0xdc7b('0x43'),_0x259dbe['id']));}})[_0xdc7b('0x27')](function(_0x23cd18){var _0xa889cd=_0x23cd18[_0xdc7b('0x34')]||0x1f4;logger[_0xdc7b('0x26')](_0xdc7b('0x28'),_0xdc7b('0x44'),_0xa889cd,JSON[_0xdc7b('0x23')](_0x23cd18));});}function request(_0x219ac1){logger[_0xdc7b('0x15')](_0xdc7b('0x45'),JSON[_0xdc7b('0x23')](_0x219ac1));return rp(_0x219ac1);}exports['queue']=function(_0x55aee1,_0x465c0b,_0x5ea5b9,_0x5e94ee,_0x2af4e3,_0x370025){var _0x1e2bb6,_0x3d6c33,_0x3261c6,_0x289373;_0x370025[_0xdc7b('0x1f')]=intUtil[_0xdc7b('0x46')](_0x370025[_0xdc7b('0x1f')]);if(_0x2af4e3&&_0x2af4e3[_0xdc7b('0x47')]){logger[_0xdc7b('0x15')](_0xdc7b('0x48'),_0xdc7b('0x49'));_0x465c0b[_0xdc7b('0x4a')]=util[_0xdc7b('0x1d')](_0xdc7b('0x4b'),_0x370025[_0xdc7b('0x4c')],_0x465c0b[_0xdc7b('0x4d')],md5(_0x465c0b[_0xdc7b('0x4d')]));}else{_0x465c0b[_0xdc7b('0x4a')]='';}return getConnection(_0x370025)[_0xdc7b('0x24')](function(_0x95730d){_0x289373=_0x95730d;return getUser(_0x370025,_0x5e94ee['email'],_0x289373);})[_0xdc7b('0x24')](function(_0x164e23){_0x1e2bb6=_0x164e23;logger[_0xdc7b('0x15')](_0xdc7b('0x4e'),_0x1e2bb6['id']);return getEndUser(_0x370025,_0x465c0b[_0xdc7b('0x4f')],_0x465c0b[_0xdc7b('0x50')],_0x289373);})[_0xdc7b('0x24')](function(_0x32ee30){_0x3d6c33=_0x32ee30;logger[_0xdc7b('0x15')](_0xdc7b('0x51'),_0x3d6c33['id']);return createTicket(_0x370025,_0x1e2bb6,_0x3d6c33,_0x5ea5b9,_0x465c0b,_0x5ea5b9[_0xdc7b('0x52')],_0x289373);})[_0xdc7b('0x24')](function(_0x257601){_0x3261c6=_0x257601;logger[_0xdc7b('0x15')](_0xdc7b('0x53'));logger[_0xdc7b('0x15')]('The\x20Ticket\x20ID\x20is:',_0x3261c6['id']);var _0x5ec356=util[_0xdc7b('0x1d')](_0xdc7b('0x54'),_0x370025[_0xdc7b('0x1f')],_['split'](_0x3261c6['id'],'x')[0x1]);logger[_0xdc7b('0x15')](_0xdc7b('0x48'),_0xdc7b('0x55'));emit(util['format'](_0xdc7b('0x56'),_0x5e94ee[_0xdc7b('0x13')]),_0xdc7b('0x57'),{'uri':_0x5ec356});})['catch'](function(_0x16c398){logger['error'](_0xdc7b('0x48'),JSON[_0xdc7b('0x23')](_0x16c398));});};exports[_0xdc7b('0x58')]=function(_0x223a79,_0x1de53f,_0x22bb49,_0x53a428,_0x2a0970,_0x37dd08,_0x55d714){var _0x5574f0,_0x4d8c53,_0x17554e,_0x53719f;_0x37dd08[_0xdc7b('0x1f')]=intUtil[_0xdc7b('0x46')](_0x37dd08[_0xdc7b('0x1f')]);_0x37dd08[_0xdc7b('0x4c')]=intUtil[_0xdc7b('0x46')](_0x37dd08[_0xdc7b('0x4c')]);if(_0x55d714&&_0x55d714[_0xdc7b('0x59')]&&_0x55d714[_0xdc7b('0x59')]!==_0xdc7b('0x5a')){logger[_0xdc7b('0x15')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x1de53f['recordingURL']=util['format'](_0xdc7b('0x4b'),_0x37dd08[_0xdc7b('0x4c')],_0x1de53f[_0xdc7b('0x4d')],md5(_0x1de53f['uniqueid']));}return getConnection(_0x37dd08)[_0xdc7b('0x24')](function(_0x261d89){_0x53719f=_0x261d89;return getUser(_0x37dd08,_0x53a428['email'],_0x53719f);})[_0xdc7b('0x24')](function(_0x2f989c){_0x5574f0=_0x2f989c;logger['info'](_0xdc7b('0x4e'),_0x5574f0['id']);return getEndUser(_0x37dd08,_0x1de53f[_0xdc7b('0x5b')],_0x1de53f[_0xdc7b('0x5c')],_0x53719f);})['then'](function(_0x1e9abc){_0x4d8c53=_0x1e9abc;logger[_0xdc7b('0x15')](_0xdc7b('0x51'),_0x4d8c53['id']);return createTicket(_0x37dd08,_0x5574f0,_0x4d8c53,_0x22bb49,_0x1de53f,_0x22bb49['Fields'],_0x53719f);})['then'](function(_0x36ce6d){_0x17554e=_0x36ce6d;logger[_0xdc7b('0x15')]('Ticket\x20created!');logger['info'](_0xdc7b('0x5d'),_0x17554e['id']);var _0x3e4b92=util['format']('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x37dd08[_0xdc7b('0x1f')],_['split'](_0x17554e['id'],'x')[0x1]);logger[_0xdc7b('0x15')](_0xdc7b('0x5e'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xdc7b('0x1d')]('user:%s',_0x53a428[_0xdc7b('0x13')]),_0xdc7b('0x57'),{'uri':_0x3e4b92});})[_0xdc7b('0x27')](function(_0x12fbf8){logger[_0xdc7b('0x26')]('[OUTBOUND]',JSON[_0xdc7b('0x23')](_0x12fbf8));});};exports[_0xdc7b('0x5f')]=function(_0x10ed66,_0x1df25c,_0x5f4a12,_0x565554,_0x356080,_0x121251){var _0x402584,_0x49dad1,_0xe2fc41,_0x149dda;_0x121251[_0xdc7b('0x1f')]=intUtil[_0xdc7b('0x46')](_0x121251['remoteUri']);_0x121251[_0xdc7b('0x4c')]=intUtil[_0xdc7b('0x46')](_0x121251[_0xdc7b('0x4c')]);if(_0x356080&&_0x356080[_0xdc7b('0x47')]){logger['info']('['+_0x1df25c[_0xdc7b('0x60')][_0xdc7b('0x61')]()+']',_0xdc7b('0x49'));_0x1df25c[_0xdc7b('0x4a')]=util[_0xdc7b('0x1d')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x121251['serverUrl'],_0x1df25c['uniqueid'],md5(_0x1df25c[_0xdc7b('0x4d')]));}else{_0x1df25c[_0xdc7b('0x4a')]='';}return getConnection(_0x121251)[_0xdc7b('0x24')](function(_0x25c173){_0x149dda=_0x25c173;return getUser(_0x121251,'',_0x149dda);})['then'](function(_0x2315cb){_0x402584=_0x2315cb;logger[_0xdc7b('0x15')](_0xdc7b('0x4e'),_0x402584['id']);return getEndUser(_0x121251,_0x1df25c['calleridname'],_0x1df25c[_0xdc7b('0x50')],_0x149dda);})[_0xdc7b('0x24')](function(_0x7e4a0c){_0x49dad1=_0x7e4a0c;logger[_0xdc7b('0x15')](_0xdc7b('0x51'),_0x49dad1['id']);return createTicket(_0x121251,_0x402584,_0x49dad1,_0x5f4a12,_0x1df25c,_0x5f4a12[_0xdc7b('0x52')],_0x149dda);})[_0xdc7b('0x24')](function(_0x125b1f){_0xe2fc41=_0x125b1f;logger[_0xdc7b('0x15')](_0xdc7b('0x53'));logger[_0xdc7b('0x15')](_0xdc7b('0x5d'),_0xe2fc41['id']);})['catch'](function(_0x193a6f){logger[_0xdc7b('0x26')]('['+_0x1df25c[_0xdc7b('0x60')]['toUpperCase']()+']',JSON['stringify'](_0x193a6f));});};