Built motion from commit 351e7f9c.|2.6.31
[motion2.git] / server / services / ami / fax / index.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 _0xb3bf=['notify','error','\x20notify\x20','stringify','catch','merge','pick','response','reason','AttachmentId','logger','[Fax][Message][Error][Updated]','updateStatus','update','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','deleteChannelAfterTimeout','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','SUCCESS','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','send','FaxAccountId','Fax\x20received','[Fax][execOriginate][failure]','checkAfterSend','Trunk','Trunk\x20Reachable','format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','execute','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','execOriginate','ext','isNil','active','SIP/%s','checkTrunk','isTrunkReachable','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','Empty\x20path','Is\x20Valid','exports','util','lodash','bluebird','uuid','path','tiff2pdf','fax','./util/util','../rpc/faxAccount','../rpc/attachment','channels','faxAccounts','trunks','actions','newchannel','syncNewchannel','bind','varset','syncNewState','newexten','syncNewExten','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','hangup','syncHangup','originateresponse','syncOriginateResponse','prototype','context','hasOwnProperty','exten','uniqueid','name','info','\x20syncNewchannel\x20','channel','syncVarSet','variable','value','channelstate','channelstatedesc','operation','status','localstationid','filename','remotestationid','pagestransferred','resolution','calleridnum','message','parse','.pdf','application/pdf','then'];(function(_0x5c4f6b,_0x2cdfce){var _0x104c4e=function(_0x31171b){while(--_0x31171b){_0x5c4f6b['push'](_0x5c4f6b['shift']());}};_0x104c4e(++_0x2cdfce);}(_0xb3bf,0x1f3));var _0xfb3b=function(_0x13734a,_0x26885c){_0x13734a=_0x13734a-0x0;var _0x37b5ce=_0xb3bf[_0x13734a];return _0x37b5ce;};'use strict';var util=require(_0xfb3b('0x0'));var _=require(_0xfb3b('0x1'));var BPromise=require(_0xfb3b('0x2'));var uuid=require(_0xfb3b('0x3'));var moment=require('moment');var path=require(_0xfb3b('0x4'));var tiff2pdf=require(_0xfb3b('0x5'));var gs=require('./util/gs');var logger=require('../../../config/logger')(_0xfb3b('0x6'));var ami=require('../ami');var rpcDb=require('./rpcDb');var Channel=require('./channel');var ut=require(_0xfb3b('0x7'));var Action=require('./action');var faxAccount=require(_0xfb3b('0x8'));var attachment=require(_0xfb3b('0x9'));var faxMessage=require('../rpc/faxMessage');function Fax(_0x3f04a4){this[_0xfb3b('0xa')]={};this['faxAccounts']=_0x3f04a4[_0xfb3b('0xb')];this[_0xfb3b('0xc')]=_0x3f04a4[_0xfb3b('0xc')];this[_0xfb3b('0xd')]={};ami['on'](_0xfb3b('0xe'),this[_0xfb3b('0xf')][_0xfb3b('0x10')](this));ami['on'](_0xfb3b('0x11'),this['syncVarSet'][_0xfb3b('0x10')](this));ami['on']('newstate',this[_0xfb3b('0x12')]['bind'](this));ami['on'](_0xfb3b('0x13'),this[_0xfb3b('0x14')][_0xfb3b('0x10')](this));ami['on'](_0xfb3b('0x15'),this[_0xfb3b('0x16')]['bind'](this));ami['on'](_0xfb3b('0x17'),this[_0xfb3b('0x18')][_0xfb3b('0x10')](this));ami['on'](_0xfb3b('0x19'),this[_0xfb3b('0x1a')]['bind'](this));ami['on'](_0xfb3b('0x1b'),this[_0xfb3b('0x1c')][_0xfb3b('0x10')](this));}Fax[_0xfb3b('0x1d')]['syncNewchannel']=function(_0x38caff){if(_0x38caff[_0xfb3b('0x1e')]==='from-voip-provider'){for(var _0x1f4f9e in this[_0xfb3b('0xb')]){if(this[_0xfb3b('0xb')][_0xfb3b('0x1f')](_0x1f4f9e)){if(_0x38caff[_0xfb3b('0x20')]===this[_0xfb3b('0xb')][_0x1f4f9e]['localstationid']){this[_0xfb3b('0xa')][_0x38caff[_0xfb3b('0x21')]]={};this['channels'][_0x38caff[_0xfb3b('0x21')]]['channel']=_0x38caff['channel'];this[_0xfb3b('0xa')][_0x38caff[_0xfb3b('0x21')]]['id']=this['faxAccounts'][_0x1f4f9e]['id'];this[_0xfb3b('0xa')][_0x38caff[_0xfb3b('0x21')]][_0xfb3b('0x22')]=this['faxAccounts'][_0x1f4f9e]['name'];logger[_0xfb3b('0x23')](_0x38caff[_0xfb3b('0x21')],_0xfb3b('0x24'));}}}}if(this[_0xfb3b('0xd')][_0x38caff['uniqueid']]){this[_0xfb3b('0xa')][_0x38caff[_0xfb3b('0x21')]]={};this[_0xfb3b('0xa')][_0x38caff[_0xfb3b('0x21')]][_0xfb3b('0x25')]=_0x38caff['channel'];logger['info'](_0x38caff[_0xfb3b('0x21')],_0xfb3b('0x24'));}};Fax[_0xfb3b('0x1d')][_0xfb3b('0x26')]=function(_0x374791){if(this[_0xfb3b('0xa')][_0x374791['uniqueid']]){for(var _0x45cf0b in _0x374791[_0xfb3b('0x27')]){if(_0x374791[_0xfb3b('0x27')]['hasOwnProperty'](_0x45cf0b)){this[_0xfb3b('0xa')][_0x374791[_0xfb3b('0x21')]][_0x45cf0b]=_0x374791[_0xfb3b('0x28')];}}}};Fax[_0xfb3b('0x1d')][_0xfb3b('0x12')]=function(_0x299cb5){if(this['channels'][_0x299cb5[_0xfb3b('0x21')]]){this[_0xfb3b('0xa')][_0x299cb5[_0xfb3b('0x21')]][_0xfb3b('0x29')]=_0x299cb5[_0xfb3b('0x29')];this[_0xfb3b('0xa')][_0x299cb5['uniqueid']][_0xfb3b('0x2a')]=_0x299cb5[_0xfb3b('0x2a')];}};Fax['prototype'][_0xfb3b('0x14')]=function(_0x1b08da){if(this[_0xfb3b('0xa')][_0x1b08da[_0xfb3b('0x21')]]){for(var _0x512639 in _0x1b08da[_0xfb3b('0x27')]){if(_0x1b08da[_0xfb3b('0x27')][_0xfb3b('0x1f')](_0x512639)){this[_0xfb3b('0xa')][_0x1b08da[_0xfb3b('0x21')]][_0x512639]=_0x1b08da['value'];}}}};Fax[_0xfb3b('0x1d')][_0xfb3b('0x16')]=function(_0x1bcd75){if(this[_0xfb3b('0xa')][_0x1bcd75[_0xfb3b('0x21')]]){this['channels'][_0x1bcd75[_0xfb3b('0x21')]][_0xfb3b('0x2b')]=_0x1bcd75[_0xfb3b('0x2b')];this['channels'][_0x1bcd75[_0xfb3b('0x21')]][_0xfb3b('0x2c')]=_0x1bcd75[_0xfb3b('0x2c')];this[_0xfb3b('0xa')][_0x1bcd75[_0xfb3b('0x21')]][_0xfb3b('0x2d')]=_0x1bcd75['localstationid'];this[_0xfb3b('0xa')][_0x1bcd75[_0xfb3b('0x21')]][_0xfb3b('0x2e')]=_0x1bcd75[_0xfb3b('0x2e')];logger[_0xfb3b('0x23')](_0x1bcd75[_0xfb3b('0x21')],'\x20syncFaxStatus\x20');}};Fax[_0xfb3b('0x1d')][_0xfb3b('0x18')]=function(_0xb4e2d6){var _0x4a301e=this;if(this[_0xfb3b('0xa')][_0xb4e2d6[_0xfb3b('0x21')]]){var _0x1b1af3=this[_0xfb3b('0xa')][_0xb4e2d6[_0xfb3b('0x21')]]['id'];this[_0xfb3b('0xa')][_0xb4e2d6[_0xfb3b('0x21')]][_0xfb3b('0x2f')]=_0xb4e2d6[_0xfb3b('0x2f')];this[_0xfb3b('0xa')][_0xb4e2d6[_0xfb3b('0x21')]]['pagestransferred']=_0xb4e2d6[_0xfb3b('0x30')];this[_0xfb3b('0xa')][_0xb4e2d6[_0xfb3b('0x21')]]['localstationid']=_0xb4e2d6['localstationid'];this['channels'][_0xb4e2d6[_0xfb3b('0x21')]]['resolution']=_0xb4e2d6[_0xfb3b('0x31')];this['channels'][_0xb4e2d6[_0xfb3b('0x21')]]['transferrate']=_0xb4e2d6['transferrate'];this[_0xfb3b('0xa')][_0xb4e2d6[_0xfb3b('0x21')]][_0xfb3b('0x2e')]=_0xb4e2d6['filename'];this['channels'][_0xb4e2d6[_0xfb3b('0x21')]][_0xfb3b('0x32')]=_0xb4e2d6['calleridnum'];if(this['channels'][_0xb4e2d6[_0xfb3b('0x21')]][_0xfb3b('0x30')]>0x0){tiff2pdf(_0xb4e2d6[_0xfb3b('0x2e')],'/var/opt/motion2/server/files/attachments/',function(_0x2623aa){logger[_0xfb3b('0x23')](_0xb4e2d6[_0xfb3b('0x21')],'\x20result\x20conversion\x20file\x20',_0x2623aa[_0xfb3b('0x33')]);attachment['create']({'name':path[_0xfb3b('0x34')](_0xb4e2d6[_0xfb3b('0x2e')])['name'],'basename':path[_0xfb3b('0x34')](_0xb4e2d6[_0xfb3b('0x2e')])[_0xfb3b('0x22')]+_0xfb3b('0x35'),'type':_0xfb3b('0x36')})[_0xfb3b('0x37')](function(_0x1608d1){faxAccount[_0xfb3b('0x38')](_0x1b1af3,{'from':_0xb4e2d6[_0xfb3b('0x32')],'mapKey':_0xfb3b('0x6'),'body':path[_0xfb3b('0x34')](_0xb4e2d6['filename'])[_0xfb3b('0x22')]+'.pdf','AttachmentId':_0x1608d1['id']})['catch'](function(_0x45f9fd){logger[_0xfb3b('0x39')](_0xb4e2d6['uniqueid'],_0xfb3b('0x3a'),JSON[_0xfb3b('0x3b')](_0x45f9fd));});})[_0xfb3b('0x3c')](function(_0x46eed9){logger[_0xfb3b('0x39')](_0xb4e2d6[_0xfb3b('0x21')],'\x20receiveFax\x20',JSON[_0xfb3b('0x3b')](_0x46eed9));});});}logger[_0xfb3b('0x23')](_0xb4e2d6[_0xfb3b('0x21')],'\x20receiveFax\x20');}};Fax[_0xfb3b('0x1d')][_0xfb3b('0x1c')]=function(_0x53a8f9){if(this[_0xfb3b('0xd')][_0x53a8f9[_0xfb3b('0x21')]]){_[_0xfb3b('0x3d')](this[_0xfb3b('0xa')][_0x53a8f9[_0xfb3b('0x21')]],_[_0xfb3b('0x3e')](_0x53a8f9,[_0xfb3b('0x3f'),_0xfb3b('0x40')]));}};function updateStatus(_0x438478){if(_0x438478[_0xfb3b('0x41')]){faxMessage['update'](_0x438478[_0xfb3b('0x41')],{'failMessage':'SENDING\x20FAILED\x20'})[_0xfb3b('0x37')](function(_0x5d7ae2){ut[_0xfb3b('0x42')](_0xfb3b('0x43'),_0x5d7ae2);})[_0xfb3b('0x3c')](function(_0x50efad){ut[_0xfb3b('0x42')]('[Fax][Message][Error][NoUpdate1]',_0x50efad);});}else{ut['logger']('[Fax][Message][Error][NoUpdate2]');}}Fax[_0xfb3b('0x1d')][_0xfb3b('0x44')]=function(_0x42572d,_0x3066a9,_0x345232){var _0x21798c=this;var _0x233c7d={};if(_0x3066a9){_0x233c7d={'read':_0x3066a9};}else{_0x233c7d={'failMessage':_0x345232};}if(this[_0xfb3b('0xd')][_0x42572d]['AttachmentId']){faxMessage[_0xfb3b('0x45')](this['actions'][_0x42572d]['AttachmentId'],_0x233c7d)['then'](function(_0x32f100){ut[_0xfb3b('0x42')](_0xfb3b('0x46'),_0x32f100);})[_0xfb3b('0x3c')](function(_0x57564d){ut[_0xfb3b('0x42')](_0xfb3b('0x47'),_0x57564d);})[_0xfb3b('0x48')](function(){delete _0x21798c[_0xfb3b('0xa')][_0x42572d];delete _0x21798c['actions'][_0x42572d];});}else{ut[_0xfb3b('0x42')](_0xfb3b('0x49'));this[_0xfb3b('0x4a')](_0x42572d);delete this[_0xfb3b('0xd')][_0x42572d];}};Fax[_0xfb3b('0x1d')][_0xfb3b('0x1a')]=function(_0x18ac65){var _0x56c113=this;if(this[_0xfb3b('0xa')][_0x18ac65[_0xfb3b('0x21')]]){if(this[_0xfb3b('0xd')][_0x18ac65[_0xfb3b('0x21')]]){this[_0xfb3b('0xa')][_0x18ac65[_0xfb3b('0x21')]]['id']=this[_0xfb3b('0xd')][_0x18ac65[_0xfb3b('0x21')]]['id'];this['channels'][_0x18ac65[_0xfb3b('0x21')]][_0xfb3b('0x22')]=this[_0xfb3b('0xd')][_0x18ac65[_0xfb3b('0x21')]][_0xfb3b('0x22')];}logger[_0xfb3b('0x23')](_0x18ac65['uniqueid'],this[_0xfb3b('0xd')][_0x18ac65['uniqueid']]?_0xfb3b('0x4b'):_0xfb3b('0x4c'),JSON[_0xfb3b('0x3b')](this[_0xfb3b('0xa')][_0x18ac65[_0xfb3b('0x21')]]));if(this['actions'][_0x18ac65[_0xfb3b('0x21')]]){if(this[_0xfb3b('0xa')][_0x18ac65[_0xfb3b('0x21')]][_0xfb3b('0x4d')]>0x0&&this[_0xfb3b('0xa')][_0x18ac65[_0xfb3b('0x21')]][_0xfb3b('0x15')]===_0xfb3b('0x4e')){this['updateStatus'](_0x18ac65[_0xfb3b('0x21')],!![]);}else{this[_0xfb3b('0x44')](_0x18ac65[_0xfb3b('0x21')],![],this[_0xfb3b('0xa')][_0x18ac65[_0xfb3b('0x21')]][_0xfb3b('0x4f')]?_0xfb3b('0x50')+this[_0xfb3b('0xa')][_0x18ac65[_0xfb3b('0x21')]][_0xfb3b('0x4f')]:_0xfb3b('0x51'));}}}};Fax[_0xfb3b('0x1d')][_0xfb3b('0x52')]=function(_0x386746){var _0x3f1aac=this;return new BPromise(function(_0x1a7c9f,_0x1a6647){_0x3f1aac['execOriginate'](_0x386746,_0x3f1aac[_0xfb3b('0xb')][_0x386746[_0xfb3b('0x53')]])['then'](function(_0x5acdeb){ut['logger']('[Fax][execOriginate][success]',_0x5acdeb);_0x1a7c9f(ut['message'](_0xfb3b('0x54')));})['catch'](function(_0x346ecd){ut[_0xfb3b('0x42')](_0xfb3b('0x55'),_0x346ecd);updateStatus(_0x386746);_0x1a6647(ut['message']('Fax\x20failed'));});});};Fax[_0xfb3b('0x1d')][_0xfb3b('0x56')]=function(_0x379eda){var _0x45bf01=this;return new BPromise(function(_0x1670e8,_0x4bd79c){var _0x3c5304=_0x45bf01['checkTrunk'](_0x45bf01[_0xfb3b('0xb')][_0x379eda[_0xfb3b('0x53')]][_0xfb3b('0x57')],_0x379eda);if(_0x3c5304['isValid']){_0x1670e8(ut[_0xfb3b('0x33')](_0xfb3b('0x58')));}else{_0x4bd79c(ut['message'](_0x3c5304[_0xfb3b('0x33')]));}});};function originate(_0x58cb43,_0x256d7f,_0xc292e0){return new BPromise(function(_0x27c42b,_0x439403){if(_0xc292e0){var _0x22e386=util[_0xfb3b('0x59')](_0xfb3b('0x5a'),path[_0xfb3b('0x34')](_0x58cb43[_0xfb3b('0x4')])[_0xfb3b('0x22')],_0x58cb43['path']);gs[_0xfb3b('0x5b')](_0x22e386)[_0xfb3b('0x37')](function(){_0x58cb43[_0xfb3b('0x4')]=util['format']('%s/%s.tif',path[_0xfb3b('0x34')](_0x58cb43['path'])[_0xfb3b('0x5c')],path[_0xfb3b('0x34')](_0x58cb43[_0xfb3b('0x4')])[_0xfb3b('0x22')]);_0x256d7f[_0xfb3b('0x5d')]=_0x58cb43[_0xfb3b('0x4')];ut[_0xfb3b('0x42')](_0xfb3b('0x5e'),'');ami[_0xfb3b('0x5f')](ut['variablesAction'](_0x58cb43,_0x256d7f))[_0xfb3b('0x37')](function(_0x1959ea){_0x27c42b(_0x1959ea);})[_0xfb3b('0x3c')](function(_0x2d318d){_0x439403(_0x2d318d);});})['catch'](function(_0x5b13db){_0x439403(_0x5b13db);});}else{ami[_0xfb3b('0x5f')](ut[_0xfb3b('0x60')](_0x58cb43,_0x256d7f))[_0xfb3b('0x37')](function(_0x8d0821){_0x27c42b(_0x8d0821);})['catch'](function(_0x2af280){_0x439403(_0x2af280);});}});}Fax[_0xfb3b('0x1d')][_0xfb3b('0x61')]=function(_0x27631f,_0xb7bee8){var _0x34d09c=this;return new BPromise(function(_0x261ec8,_0x5cca3e){var _0x5f2e67=uuid['v4']();var _0x2358a0=ut['addVariables'](_0x27631f,_0xb7bee8);_0x34d09c[_0xfb3b('0xd')][_0x5f2e67]=new Action(_0x5f2e67,_0xb7bee8,_0x27631f);var _0x19d2fe=_0x34d09c['actions'][_0x5f2e67];if(path['parse'](_0x27631f[_0xfb3b('0x4')])[_0xfb3b('0x62')]===_0xfb3b('0x35')){originate(_0x19d2fe,_0x2358a0,!![])[_0xfb3b('0x37')](function(_0x1a67d5){_0x261ec8(_0x1a67d5);})['catch'](function(_0x1b3586){_0x5cca3e(_0x1b3586);});}else{originate(_0x19d2fe,_0x2358a0,![])[_0xfb3b('0x37')](function(_0x427b2f){_0x261ec8(_0x427b2f);})[_0xfb3b('0x3c')](function(_0x326034){_0x5cca3e(_0x326034);});}});};Fax[_0xfb3b('0x1d')]['isTrunkReachable']=function(_0x429f83){return!_[_0xfb3b('0x63')](_0x429f83)&&!_['isNil'](_0x429f83['name'])&&!_[_0xfb3b('0x63')](_0x429f83[_0xfb3b('0x64')])&&_0x429f83[_0xfb3b('0x64')]&&!_[_0xfb3b('0x63')](this[_0xfb3b('0xc')][util['format'](_0xfb3b('0x65'),_0x429f83[_0xfb3b('0x22')])])&&!_['isNil'](this[_0xfb3b('0xc')][util[_0xfb3b('0x59')](_0xfb3b('0x65'),_0x429f83[_0xfb3b('0x22')])]['status'])&&(this[_0xfb3b('0xc')][util[_0xfb3b('0x59')](_0xfb3b('0x65'),_0x429f83[_0xfb3b('0x22')])][_0xfb3b('0x2c')]==='reachable'||this['trunks'][util[_0xfb3b('0x59')](_0xfb3b('0x65'),_0x429f83[_0xfb3b('0x22')])][_0xfb3b('0x2c')]==='unmonitored');};Fax[_0xfb3b('0x1d')][_0xfb3b('0x66')]=function(_0x5af648,_0x3f37a7){if(!this[_0xfb3b('0x67')](_0x5af648)){ut[_0xfb3b('0x42')]('[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]',_[_0xfb3b('0x63')](_0x5af648)?'':_0x5af648[_0xfb3b('0x22')]+_0xfb3b('0x68'));return{'isValid':![],'message':_0xfb3b('0x69')};}if(_[_0xfb3b('0x63')](_0x3f37a7[_0xfb3b('0x6')])){ut[_0xfb3b('0x42')](_0xfb3b('0x6a'),JSON[_0xfb3b('0x3b')](_0x3f37a7));return{'isValid':![],'message':_0xfb3b('0x6b')};}if(_[_0xfb3b('0x63')](_0x3f37a7[_0xfb3b('0x4')])){ut['logger']('[Fax][checkTrunk][Empty\x20path]',JSON[_0xfb3b('0x3b')](_0x3f37a7));return{'isValid':![],'message':_0xfb3b('0x6c')};}return{'isValid':!![],'message':_0xfb3b('0x6d')};};Fax[_0xfb3b('0x1d')][_0xfb3b('0x4a')]=function(_0x34fdfe,_0x323622=0x2710){if(this[_0xfb3b('0xa')][_0x34fdfe]){setTimeout(()=>{delete this[_0xfb3b('0xa')][_0x34fdfe];},_0x323622);}};module[_0xfb3b('0x6e')]=Fax;