Built motion from commit (unavailable).|2.2.5
[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 _0xe706=['%s/webservice.php','remoteUri','create','sessionName','success','result','format','stringify','error','catch','query','test','statusCode','[vTiger],\x20%s,\x20%s,\x20%s','Getting\x20agent\x20with\x20email','GET','admin','then','resolve','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','username','getUser','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','Enduser\x20created.','getEndUser','accessKey','token','getConnection','[HTTP]','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','email','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','split','user:%s','trigger:browser:url','stripTrailingSlash','recordingFormat','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','abandoned','[ABANDONED]','lodash','request-promise','bluebird','util','ioredis','./util','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','emit','length','forEach','type','string','content','toString','variable','variableName','idField','customVariable','name','Variable','info','Creating\x20new\x20ticket...','merge','Normal','Open','getString','Subjects','Descriptions','POST'];(function(_0x5acb9d,_0x5e24f9){var _0x5aed9e=function(_0x17a736){while(--_0x17a736){_0x5acb9d['push'](_0x5acb9d['shift']());}};_0x5aed9e(++_0x5e24f9);}(_0xe706,0xa3));var _0x6e70=function(_0x1f42bc,_0x208463){_0x1f42bc=_0x1f42bc-0x0;var _0x23f159=_0xe706[_0x1f42bc];return _0x23f159;};'use strict';var _=require(_0x6e70('0x0'));var rp=require(_0x6e70('0x1'));var BPromise=require(_0x6e70('0x2'));var md5=require('md5');var util=require(_0x6e70('0x3'));var Redis=require(_0x6e70('0x4'));var intUtil=require(_0x6e70('0x5'));var config=require(_0x6e70('0x6'));var logger=require(_0x6e70('0x7'))(_0x6e70('0x8'));config[_0x6e70('0x9')]=_[_0x6e70('0xa')](config[_0x6e70('0x9')],{'host':_0x6e70('0xb'),'port':0x18eb});var io=require(_0x6e70('0xc'))(new Redis(config[_0x6e70('0x9')]));function emit(_0x45a2d4,_0x188ed3,_0x3c4843){io['to'](_0x45a2d4)[_0x6e70('0xd')](_0x188ed3,_0x3c4843);}function getCustomFields(_0x954545,_0x25e61c){var _0x100eb7={};if(_0x954545[_0x6e70('0xe')]>0x0){_[_0x6e70('0xf')](_0x954545,function(_0x3f474a){if(_0x3f474a[_0x6e70('0x10')]===_0x6e70('0x11')&&_0x3f474a['idField']){_0x100eb7[_0x3f474a['idField']]=_0x3f474a[_0x6e70('0x12')][_0x6e70('0x13')]();}else if(_0x3f474a[_0x6e70('0x10')]===_0x6e70('0x14')&&_0x3f474a[_0x6e70('0x15')]&&_0x3f474a[_0x6e70('0x16')]&&_0x25e61c[_0x3f474a[_0x6e70('0x15')]]){_0x100eb7[_0x3f474a[_0x6e70('0x16')]]=_0x25e61c[_0x3f474a['variableName']]['toString']();}else if(_0x3f474a['type']===_0x6e70('0x17')&&_0x3f474a['Variable']&&_0x3f474a['Variable'][_0x6e70('0x18')]&&_0x3f474a[_0x6e70('0x16')]&&_0x25e61c[_0x3f474a['Variable'][_0x6e70('0x18')]['toLowerCase']()]){_0x100eb7[_0x3f474a[_0x6e70('0x16')]]=_0x25e61c[_0x3f474a[_0x6e70('0x19')]['name']['toLowerCase']()][_0x6e70('0x13')]();}});}return _0x100eb7;}function createTicket(_0x5ea7a5,_0x28a21f,_0x173afe,_0x53acdc,_0x497d61,_0xc238ba,_0x208e21){logger[_0x6e70('0x1a')](_0x6e70('0x1b'));var _0x3af484=_[_0x6e70('0x1c')]({'parent_id':'','assigned_user_id':_0x28a21f['id'],'ticketpriorities':_0x6e70('0x1d'),'ticketstatus':_0x6e70('0x1e'),'ticket_title':intUtil[_0x6e70('0x1f')](_0x53acdc[_0x6e70('0x20')],_0x497d61,'\x20'),'description':intUtil['getString'](_0x53acdc[_0x6e70('0x21')],_0x497d61,'\x0a'),'contact_id':_0x173afe['id']},getCustomFields(_0xc238ba,_0x497d61));var _0x344b65={'method':_0x6e70('0x22'),'uri':util['format'](_0x6e70('0x23'),_0x5ea7a5[_0x6e70('0x24')]),'form':{'operation':_0x6e70('0x25'),'username':'admin','sessionName':_0x208e21[_0x6e70('0x26')],'elementType':'HelpDesk','element':JSON['stringify'](_0x3af484)},'json':!![]};return request(_0x344b65)['then'](function(_0x41e352){if(_0x41e352[_0x6e70('0x27')]){return BPromise['resolve']({'id':_0x41e352[_0x6e70('0x28')]['id']});}else{throw new Error(util[_0x6e70('0x29')]('Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s',JSON[_0x6e70('0x2a')](_0x41e352[_0x6e70('0x2b')])));}})[_0x6e70('0x2c')](function(_0x4a67ac){var _0x54a5fe=req[_0x6e70('0x2d')][_0x6e70('0x2e')]?0x1f4:_0x4a67ac[_0x6e70('0x2f')]||0x1f4;logger[_0x6e70('0x2b')](_0x6e70('0x30'),'createTicket',_0x54a5fe,JSON[_0x6e70('0x2a')](_0x4a67ac));});}function getUser(_0x406f29,_0xecf336,_0x2864a0){logger[_0x6e70('0x1a')](_0x6e70('0x31'),_0xecf336);return request({'method':_0x6e70('0x32'),'uri':util[_0x6e70('0x29')](_0x6e70('0x23'),_0x406f29[_0x6e70('0x24')]),'qs':{'operation':'query','username':_0x6e70('0x33'),'sessionName':_0x2864a0['sessionName'],'query':util[_0x6e70('0x29')]('SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;',_0xecf336)},'json':!![]})[_0x6e70('0x34')](function(_0x2722e8){if(_0x2722e8[_0x6e70('0x27')]&&_0x2722e8['result'][_0x6e70('0xe')]){logger[_0x6e70('0x1a')]('Agent\x20found!');return BPromise[_0x6e70('0x35')]({'id':_0x2722e8[_0x6e70('0x28')][0x0]['id'],'email':_0x2722e8['result'][0x0][_0x6e70('0x36')],'name':_0x2722e8[_0x6e70('0x28')][0x0][_0x6e70('0x37')]+'\x20'+_0x2722e8[_0x6e70('0x28')][_0x6e70('0x38')]});}else{logger[_0x6e70('0x1a')](_0x6e70('0x39'));return BPromise[_0x6e70('0x35')]({'id':_0x2864a0[_0x6e70('0x3a')],'email':_0x406f29[_0x6e70('0x3b')],'name':'admin'});}})[_0x6e70('0x2c')](function(_0x4795a0){var _0x23cd1a=req[_0x6e70('0x2d')][_0x6e70('0x2e')]?0x1f4:_0x4795a0[_0x6e70('0x2f')]||0x1f4;logger[_0x6e70('0x2b')](_0x6e70('0x30'),_0x6e70('0x3c'),_0x23cd1a,JSON[_0x6e70('0x2a')](_0x4795a0));});}function getEndUser(_0x80bebb,_0x198dd1,_0x2a5444,_0x23d5e2){logger[_0x6e70('0x1a')]('Searching\x20end\x20user\x20with\x20phone',_0x2a5444);return request({'method':'GET','uri':util['format'](_0x6e70('0x23'),_0x80bebb[_0x6e70('0x24')]),'qs':{'operation':_0x6e70('0x2d'),'username':_0x6e70('0x33'),'sessionName':_0x23d5e2[_0x6e70('0x26')],'query':util[_0x6e70('0x29')]('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;',_0x2a5444,_0x2a5444,_0x2a5444,_0x2a5444,_0x2a5444)},'json':!![]})[_0x6e70('0x34')](function(_0x9e7ad2){if(_0x9e7ad2[_0x6e70('0x27')]&&_0x9e7ad2[_0x6e70('0x28')][_0x6e70('0xe')]){logger[_0x6e70('0x1a')](_0x6e70('0x3d'));return BPromise[_0x6e70('0x35')]({'id':_0x9e7ad2['result'][0x0]['id'],'name':_0x9e7ad2[_0x6e70('0x28')][0x0][_0x6e70('0x3e')]+'\x20'+_0x9e7ad2[_0x6e70('0x28')][0x0][_0x6e70('0x3f')],'phone':_0x2a5444});}else{logger[_0x6e70('0x1a')](_0x6e70('0x40'));return request({'method':_0x6e70('0x22'),'uri':util['format']('%s/webservice.php',_0x80bebb['remoteUri']),'form':{'operation':_0x6e70('0x25'),'sessionName':_0x23d5e2[_0x6e70('0x26')],'elementType':_0x6e70('0x41'),'element':JSON[_0x6e70('0x2a')]({'lastname':_0x198dd1,'phone':_0x2a5444,'assigned_user_id':'\x20'})},'json':!![]})[_0x6e70('0x34')](function(_0x49e068){logger[_0x6e70('0x1a')](_0x6e70('0x42'));return BPromise[_0x6e70('0x35')]({'id':_0x49e068['result']['id'],'name':_0x49e068['result']['lastname'],'phone':_0x49e068[_0x6e70('0x28')]['phone']});})[_0x6e70('0x2c')](function(_0x39913a){var _0x3fed21=req[_0x6e70('0x2d')]['test']?0x1f4:_0x39913a[_0x6e70('0x2f')]||0x1f4;logger['error'](_0x6e70('0x30'),_0x6e70('0x43'),_0x3fed21,JSON[_0x6e70('0x2a')](_0x39913a));});}});}function getConnection(_0x3478e2){var _0x5bbc3a=_0x3478e2[_0x6e70('0x3b')];var _0x44b637=_0x3478e2[_0x6e70('0x44')];return request({'method':_0x6e70('0x32'),'uri':util[_0x6e70('0x29')](_0x6e70('0x23'),_0x3478e2[_0x6e70('0x24')]),'qs':{'operation':'getchallenge','username':_0x5bbc3a},'json':!![]})[_0x6e70('0x34')](function(_0x3884a4){if(_0x3884a4[_0x6e70('0x27')]){return request({'method':_0x6e70('0x22'),'uri':util[_0x6e70('0x29')](_0x6e70('0x23'),_0x3478e2[_0x6e70('0x24')]),'form':{'operation':'login','username':_0x6e70('0x33'),'accessKey':md5(_0x3884a4['result'][_0x6e70('0x45')]+_0x44b637)},'json':!![]});}})[_0x6e70('0x34')](function(_0x4b351e){if(_0x4b351e['success']){return BPromise[_0x6e70('0x35')](_0x4b351e[_0x6e70('0x28')]);}else{throw new Error(util[_0x6e70('0x29')]('Account\x20%d\x20is\x20not\x20valid',_0x3478e2['id']));}})['catch'](function(_0x238ebb){var _0x11ac3d=req[_0x6e70('0x2d')][_0x6e70('0x2e')]?0x1f4:_0x238ebb[_0x6e70('0x2f')]||0x1f4;logger[_0x6e70('0x2b')]('[vTiger],\x20%s,\x20%s,\x20%s',_0x6e70('0x46'),_0x11ac3d,JSON[_0x6e70('0x2a')](_0x238ebb));});}function request(_0x219f4){logger[_0x6e70('0x1a')](_0x6e70('0x47'),JSON['stringify'](_0x219f4));return rp(_0x219f4);}exports['queue']=function(_0x2c5538,_0x2e3ea6,_0x34fdba,_0x15f994,_0x810e6a,_0x5dd73e){var _0x41bd0b,_0x232366,_0x1fa320,_0x23ebfb;_0x5dd73e[_0x6e70('0x24')]=intUtil['stripTrailingSlash'](_0x5dd73e[_0x6e70('0x24')]);if(_0x810e6a&&_0x810e6a[_0x6e70('0x48')]){logger[_0x6e70('0x1a')](_0x6e70('0x49'),_0x6e70('0x4a'));_0x2e3ea6[_0x6e70('0x4b')]=util['format'](_0x6e70('0x4c'),_0x5dd73e[_0x6e70('0x4d')],_0x2e3ea6['uniqueid'],md5(_0x2e3ea6[_0x6e70('0x4e')]));}else{_0x2e3ea6[_0x6e70('0x4b')]='';}return getConnection(_0x5dd73e)['then'](function(_0x3cfaa9){_0x23ebfb=_0x3cfaa9;return getUser(_0x5dd73e,_0x15f994?_0x15f994[_0x6e70('0x4f')]:'',_0x23ebfb);})[_0x6e70('0x34')](function(_0x46d536){_0x41bd0b=_0x46d536;logger[_0x6e70('0x1a')]('The\x20User\x20ID\x20is:',_0x41bd0b['id']);return getEndUser(_0x5dd73e,_0x2e3ea6[_0x6e70('0x50')],_0x2e3ea6[_0x6e70('0x51')],_0x23ebfb);})[_0x6e70('0x34')](function(_0x13be81){_0x232366=_0x13be81;logger[_0x6e70('0x1a')](_0x6e70('0x52'),_0x232366['id']);return createTicket(_0x5dd73e,_0x41bd0b,_0x232366,_0x34fdba,_0x2e3ea6,_0x34fdba[_0x6e70('0x53')],_0x23ebfb);})[_0x6e70('0x34')](function(_0x6043cd){_0x1fa320=_0x6043cd;logger[_0x6e70('0x1a')](_0x6e70('0x54'));logger[_0x6e70('0x1a')](_0x6e70('0x55'),_0x1fa320['id']);var _0x1fd9a6=util[_0x6e70('0x29')](_0x6e70('0x56'),_0x5dd73e[_0x6e70('0x24')],_[_0x6e70('0x57')](_0x1fa320['id'],'x')[0x1]);logger[_0x6e70('0x1a')](_0x6e70('0x49'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x6e70('0x29')](_0x6e70('0x58'),_0x15f994[_0x6e70('0x18')]),_0x6e70('0x59'),{'uri':_0x1fd9a6});})[_0x6e70('0x2c')](function(_0x3880dd){logger['error'](_0x6e70('0x49'),JSON[_0x6e70('0x2a')](_0x3880dd));});};exports['outbound']=function(_0x246ea2,_0x692205,_0x459a30,_0x590f7f,_0x51f268,_0x2f9be4,_0xd6bccd){var _0x2d0203,_0x41a861,_0x10d299,_0x739946;_0x2f9be4[_0x6e70('0x24')]=intUtil['stripTrailingSlash'](_0x2f9be4['remoteUri']);_0x2f9be4[_0x6e70('0x4d')]=intUtil[_0x6e70('0x5a')](_0x2f9be4[_0x6e70('0x4d')]);if(_0xd6bccd&&_0xd6bccd[_0x6e70('0x5b')]&&_0xd6bccd['recordingFormat']!=='none'){logger[_0x6e70('0x1a')](_0x6e70('0x5c'),'Recording\x20is\x20enabled!');_0x692205['recordingURL']=util[_0x6e70('0x29')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2f9be4[_0x6e70('0x4d')],_0x692205[_0x6e70('0x4e')],md5(_0x692205[_0x6e70('0x4e')]));}return getConnection(_0x2f9be4)[_0x6e70('0x34')](function(_0x64ea5b){_0x739946=_0x64ea5b;return getUser(_0x2f9be4,_0x590f7f?_0x590f7f[_0x6e70('0x4f')]:'',_0x739946);})[_0x6e70('0x34')](function(_0x6ab1d6){_0x2d0203=_0x6ab1d6;logger['info'](_0x6e70('0x5d'),_0x2d0203['id']);return getEndUser(_0x2f9be4,_0x692205[_0x6e70('0x5e')],_0x692205[_0x6e70('0x5f')],_0x739946);})[_0x6e70('0x34')](function(_0x7aa313){_0x41a861=_0x7aa313;logger['info']('The\x20Enduser\x20ID\x20is:',_0x41a861['id']);return createTicket(_0x2f9be4,_0x2d0203,_0x41a861,_0x459a30,_0x692205,_0x459a30['Fields'],_0x739946);})[_0x6e70('0x34')](function(_0xd91b9){_0x10d299=_0xd91b9;logger[_0x6e70('0x1a')]('Ticket\x20created!');logger['info'](_0x6e70('0x55'),_0x10d299['id']);var _0x3dae08=util[_0x6e70('0x29')](_0x6e70('0x56'),_0x2f9be4[_0x6e70('0x24')],_[_0x6e70('0x57')](_0x10d299['id'],'x')[0x1]);logger['info'](_0x6e70('0x5c'),_0x6e70('0x60'));emit(util[_0x6e70('0x29')](_0x6e70('0x58'),_0x590f7f['name']),_0x6e70('0x59'),{'uri':_0x3dae08});})['catch'](function(_0x5b4046){logger[_0x6e70('0x2b')](_0x6e70('0x5c'),JSON[_0x6e70('0x2a')](_0x5b4046));});};exports[_0x6e70('0x61')]=function(_0x326584,_0x2be0fc,_0x4b5b19,_0x370eeb,_0x152003,_0x186550){var _0x18e64c,_0x20f977,_0x13c092,_0x363722;_0x186550[_0x6e70('0x24')]=intUtil[_0x6e70('0x5a')](_0x186550[_0x6e70('0x24')]);_0x186550['serverUrl']=intUtil[_0x6e70('0x5a')](_0x186550[_0x6e70('0x4d')]);if(_0x152003&&_0x152003[_0x6e70('0x48')]){logger['info']('[ABANDONED]',_0x6e70('0x4a'));_0x2be0fc[_0x6e70('0x4b')]=util[_0x6e70('0x29')](_0x6e70('0x4c'),_0x186550[_0x6e70('0x4d')],_0x2be0fc['uniqueid'],md5(_0x2be0fc['uniqueid']));}else{_0x2be0fc[_0x6e70('0x4b')]='';}return getConnection(_0x186550)[_0x6e70('0x34')](function(_0x56d4d9){_0x363722=_0x56d4d9;return getUser(_0x186550,_0x370eeb?_0x370eeb[_0x6e70('0x4f')]:'',_0x363722);})[_0x6e70('0x34')](function(_0xf7a034){_0x18e64c=_0xf7a034;logger[_0x6e70('0x1a')](_0x6e70('0x5d'),_0x18e64c['id']);return getEndUser(_0x186550,_0x2be0fc[_0x6e70('0x50')],_0x2be0fc[_0x6e70('0x51')],_0x363722);})[_0x6e70('0x34')](function(_0x3650e9){_0x20f977=_0x3650e9;logger[_0x6e70('0x1a')](_0x6e70('0x52'),_0x20f977['id']);return createTicket(_0x186550,_0x18e64c,_0x20f977,_0x4b5b19,_0x2be0fc,_0x4b5b19[_0x6e70('0x53')],_0x363722);})[_0x6e70('0x34')](function(_0x2473e8){_0x13c092=_0x2473e8;logger['info']('Ticket\x20created!');logger[_0x6e70('0x1a')]('The\x20Ticket\x20ID\x20is:',_0x13c092['id']);})[_0x6e70('0x2c')](function(_0x4b2d40){logger['error'](_0x6e70('0x62'),JSON['stringify'](_0x4b2d40));});};