Built motion from commit b0a9a629.|2.6.33
[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 _0x7272=['send','FaxAccountId','[Fax][execOriginate][failure]','checkTrunk','Trunk','isValid','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','%s/%s.tif','Convert\x20pdf\x20to\x20tif','Action','variablesAction','execOriginate','addVariables','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','unmonitored','\x20Trunk\x20is\x20not\x20active','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','deleteChannelAfterTimeout','exports','util','bluebird','uuid','moment','path','fax','../ami','./rpcDb','./util/util','./action','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','trunks','actions','newchannel','syncNewchannel','bind','varset','syncVarSet','newstate','newexten','syncNewExten','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','syncHangup','originateresponse','syncOriginateResponse','from-voip-provider','exten','localstationid','uniqueid','channel','name','info','\x20syncNewchannel\x20','variable','hasOwnProperty','syncNewState','channelstate','channelstatedesc','prototype','value','operation','status','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','filename','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','parse','.pdf','then','notify','catch','error','\x20notify\x20','stringify','\x20receiveFax\x20','pick','reason','AttachmentId','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','update','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','SUCCESS','SENDING\x20FAILED:\x20','faxstatusstring','SENDING\x20FAILED'];(function(_0xcf22a8,_0x35d51c){var _0x1137eb=function(_0x22bdf6){while(--_0x22bdf6){_0xcf22a8['push'](_0xcf22a8['shift']());}};_0x1137eb(++_0x35d51c);}(_0x7272,0x96));var _0x2727=function(_0x59f55b,_0x438555){_0x59f55b=_0x59f55b-0x0;var _0x2421b3=_0x7272[_0x59f55b];return _0x2421b3;};'use strict';var util=require(_0x2727('0x0'));var _=require('lodash');var BPromise=require(_0x2727('0x1'));var uuid=require(_0x2727('0x2'));var moment=require(_0x2727('0x3'));var path=require(_0x2727('0x4'));var tiff2pdf=require('tiff2pdf');var gs=require('./util/gs');var logger=require('../../../config/logger')(_0x2727('0x5'));var ami=require(_0x2727('0x6'));var rpcDb=require(_0x2727('0x7'));var Channel=require('./channel');var ut=require(_0x2727('0x8'));var Action=require(_0x2727('0x9'));var faxAccount=require(_0x2727('0xa'));var attachment=require(_0x2727('0xb'));var faxMessage=require(_0x2727('0xc'));function Fax(_0x2b5472){this[_0x2727('0xd')]={};this[_0x2727('0xe')]=_0x2b5472[_0x2727('0xe')];this[_0x2727('0xf')]=_0x2b5472[_0x2727('0xf')];this[_0x2727('0x10')]={};ami['on'](_0x2727('0x11'),this[_0x2727('0x12')][_0x2727('0x13')](this));ami['on'](_0x2727('0x14'),this[_0x2727('0x15')][_0x2727('0x13')](this));ami['on'](_0x2727('0x16'),this['syncNewState'][_0x2727('0x13')](this));ami['on'](_0x2727('0x17'),this[_0x2727('0x18')]['bind'](this));ami['on'](_0x2727('0x19'),this[_0x2727('0x1a')][_0x2727('0x13')](this));ami['on'](_0x2727('0x1b'),this[_0x2727('0x1c')][_0x2727('0x13')](this));ami['on']('hangup',this[_0x2727('0x1d')][_0x2727('0x13')](this));ami['on'](_0x2727('0x1e'),this[_0x2727('0x1f')][_0x2727('0x13')](this));}Fax['prototype'][_0x2727('0x12')]=function(_0x5caa4a){if(_0x5caa4a['context']===_0x2727('0x20')){for(var _0x348f00 in this[_0x2727('0xe')]){if(this[_0x2727('0xe')]['hasOwnProperty'](_0x348f00)){if(_0x5caa4a[_0x2727('0x21')]===this[_0x2727('0xe')][_0x348f00][_0x2727('0x22')]){this[_0x2727('0xd')][_0x5caa4a[_0x2727('0x23')]]={};this[_0x2727('0xd')][_0x5caa4a[_0x2727('0x23')]][_0x2727('0x24')]=_0x5caa4a[_0x2727('0x24')];this[_0x2727('0xd')][_0x5caa4a['uniqueid']]['id']=this['faxAccounts'][_0x348f00]['id'];this[_0x2727('0xd')][_0x5caa4a[_0x2727('0x23')]][_0x2727('0x25')]=this[_0x2727('0xe')][_0x348f00]['name'];logger[_0x2727('0x26')](_0x5caa4a[_0x2727('0x23')],_0x2727('0x27'));}}}}if(this[_0x2727('0x10')][_0x5caa4a[_0x2727('0x23')]]){this[_0x2727('0xd')][_0x5caa4a[_0x2727('0x23')]]={};this[_0x2727('0xd')][_0x5caa4a[_0x2727('0x23')]]['channel']=_0x5caa4a[_0x2727('0x24')];logger[_0x2727('0x26')](_0x5caa4a[_0x2727('0x23')],'\x20syncNewchannel\x20');}};Fax['prototype']['syncVarSet']=function(_0x49184c){if(this[_0x2727('0xd')][_0x49184c[_0x2727('0x23')]]){for(var _0x4568f0 in _0x49184c[_0x2727('0x28')]){if(_0x49184c[_0x2727('0x28')][_0x2727('0x29')](_0x4568f0)){this[_0x2727('0xd')][_0x49184c[_0x2727('0x23')]][_0x4568f0]=_0x49184c['value'];}}}};Fax['prototype'][_0x2727('0x2a')]=function(_0x4791ee){if(this[_0x2727('0xd')][_0x4791ee['uniqueid']]){this[_0x2727('0xd')][_0x4791ee['uniqueid']][_0x2727('0x2b')]=_0x4791ee[_0x2727('0x2b')];this[_0x2727('0xd')][_0x4791ee[_0x2727('0x23')]][_0x2727('0x2c')]=_0x4791ee['channelstatedesc'];}};Fax[_0x2727('0x2d')][_0x2727('0x18')]=function(_0x48eaa2){if(this['channels'][_0x48eaa2[_0x2727('0x23')]]){for(var _0x9db77f in _0x48eaa2[_0x2727('0x28')]){if(_0x48eaa2['variable'][_0x2727('0x29')](_0x9db77f)){this[_0x2727('0xd')][_0x48eaa2['uniqueid']][_0x9db77f]=_0x48eaa2[_0x2727('0x2e')];}}}};Fax[_0x2727('0x2d')][_0x2727('0x1a')]=function(_0x5c2da5){if(this[_0x2727('0xd')][_0x5c2da5['uniqueid']]){this['channels'][_0x5c2da5[_0x2727('0x23')]][_0x2727('0x2f')]=_0x5c2da5[_0x2727('0x2f')];this[_0x2727('0xd')][_0x5c2da5['uniqueid']]['status']=_0x5c2da5[_0x2727('0x30')];this[_0x2727('0xd')][_0x5c2da5['uniqueid']][_0x2727('0x22')]=_0x5c2da5[_0x2727('0x22')];this[_0x2727('0xd')][_0x5c2da5[_0x2727('0x23')]]['filename']=_0x5c2da5['filename'];logger['info'](_0x5c2da5[_0x2727('0x23')],_0x2727('0x31'));}};Fax[_0x2727('0x2d')][_0x2727('0x1c')]=function(_0x3fad81){var _0x14f780=this;if(this[_0x2727('0xd')][_0x3fad81[_0x2727('0x23')]]){var _0x4d7e35=this[_0x2727('0xd')][_0x3fad81['uniqueid']]['id'];this['channels'][_0x3fad81['uniqueid']]['remotestationid']=_0x3fad81[_0x2727('0x32')];this[_0x2727('0xd')][_0x3fad81[_0x2727('0x23')]][_0x2727('0x33')]=_0x3fad81[_0x2727('0x33')];this['channels'][_0x3fad81['uniqueid']]['localstationid']=_0x3fad81[_0x2727('0x22')];this['channels'][_0x3fad81['uniqueid']][_0x2727('0x34')]=_0x3fad81[_0x2727('0x34')];this['channels'][_0x3fad81[_0x2727('0x23')]][_0x2727('0x35')]=_0x3fad81[_0x2727('0x35')];this[_0x2727('0xd')][_0x3fad81['uniqueid']][_0x2727('0x36')]=_0x3fad81['filename'];this[_0x2727('0xd')][_0x3fad81[_0x2727('0x23')]]['calleridnum']=_0x3fad81[_0x2727('0x37')];if(this['channels'][_0x3fad81['uniqueid']]['pagestransferred']>0x0){tiff2pdf(_0x3fad81[_0x2727('0x36')],_0x2727('0x38'),function(_0x37bb4e){logger[_0x2727('0x26')](_0x3fad81[_0x2727('0x23')],_0x2727('0x39'),_0x37bb4e[_0x2727('0x3a')]);attachment['create']({'name':path['parse'](_0x3fad81[_0x2727('0x36')])[_0x2727('0x25')],'basename':path[_0x2727('0x3b')](_0x3fad81[_0x2727('0x36')])[_0x2727('0x25')]+_0x2727('0x3c'),'type':'application/pdf'})[_0x2727('0x3d')](function(_0x2f4c77){faxAccount[_0x2727('0x3e')](_0x4d7e35,{'from':_0x3fad81['calleridnum'],'mapKey':_0x2727('0x5'),'body':path[_0x2727('0x3b')](_0x3fad81[_0x2727('0x36')])[_0x2727('0x25')]+_0x2727('0x3c'),'AttachmentId':_0x2f4c77['id']})[_0x2727('0x3f')](function(_0x125ee0){logger[_0x2727('0x40')](_0x3fad81[_0x2727('0x23')],_0x2727('0x41'),JSON[_0x2727('0x42')](_0x125ee0));});})[_0x2727('0x3f')](function(_0x2a3d8f){logger[_0x2727('0x40')](_0x3fad81[_0x2727('0x23')],_0x2727('0x43'),JSON[_0x2727('0x42')](_0x2a3d8f));});});}logger[_0x2727('0x26')](_0x3fad81[_0x2727('0x23')],_0x2727('0x43'));}};Fax[_0x2727('0x2d')]['syncOriginateResponse']=function(_0xc52879){if(this[_0x2727('0x10')][_0xc52879[_0x2727('0x23')]]){_['merge'](this['channels'][_0xc52879[_0x2727('0x23')]],_[_0x2727('0x44')](_0xc52879,['response',_0x2727('0x45')]));}};function updateStatus(_0x3b8d2c){if(_0x3b8d2c[_0x2727('0x46')]){faxMessage['update'](_0x3b8d2c[_0x2727('0x46')],{'failMessage':_0x2727('0x47')})[_0x2727('0x3d')](function(_0x4626fb){ut[_0x2727('0x48')](_0x2727('0x49'),_0x4626fb);})[_0x2727('0x3f')](function(_0x5e6028){ut[_0x2727('0x48')](_0x2727('0x4a'),_0x5e6028);});}else{ut[_0x2727('0x48')](_0x2727('0x4b'));}}Fax['prototype'][_0x2727('0x4c')]=function(_0x4828a2,_0x3fd14b,_0x3595fa){var _0x357aee=this;var _0x333f07={};if(_0x3fd14b){_0x333f07={'read':_0x3fd14b};}else{_0x333f07={'failMessage':_0x3595fa};}if(this[_0x2727('0x10')][_0x4828a2][_0x2727('0x46')]){faxMessage[_0x2727('0x4d')](this[_0x2727('0x10')][_0x4828a2][_0x2727('0x46')],_0x333f07)[_0x2727('0x3d')](function(_0x62282d){ut[_0x2727('0x48')](_0x2727('0x4e'),_0x62282d);})[_0x2727('0x3f')](function(_0x1b8868){ut['logger'](_0x2727('0x4f'),_0x1b8868);})[_0x2727('0x50')](function(){delete _0x357aee[_0x2727('0xd')][_0x4828a2];delete _0x357aee['actions'][_0x4828a2];});}else{ut[_0x2727('0x48')]('[Fax][Message][NoUpdate2]');this['deleteChannelAfterTimeout'](_0x4828a2);delete this[_0x2727('0x10')][_0x4828a2];}};Fax[_0x2727('0x2d')][_0x2727('0x1d')]=function(_0x1aec2c){var _0x451b6f=this;if(this[_0x2727('0xd')][_0x1aec2c[_0x2727('0x23')]]){if(this['actions'][_0x1aec2c[_0x2727('0x23')]]){this[_0x2727('0xd')][_0x1aec2c['uniqueid']]['id']=this[_0x2727('0x10')][_0x1aec2c[_0x2727('0x23')]]['id'];this[_0x2727('0xd')][_0x1aec2c[_0x2727('0x23')]]['name']=this[_0x2727('0x10')][_0x1aec2c['uniqueid']]['name'];}logger['info'](_0x1aec2c[_0x2727('0x23')],this['actions'][_0x1aec2c[_0x2727('0x23')]]?_0x2727('0x51'):_0x2727('0x52'),JSON[_0x2727('0x42')](this[_0x2727('0xd')][_0x1aec2c['uniqueid']]));if(this[_0x2727('0x10')][_0x1aec2c[_0x2727('0x23')]]){if(this[_0x2727('0xd')][_0x1aec2c[_0x2727('0x23')]][_0x2727('0x53')]>0x0&&this['channels'][_0x1aec2c[_0x2727('0x23')]][_0x2727('0x19')]===_0x2727('0x54')){this[_0x2727('0x4c')](_0x1aec2c['uniqueid'],!![]);}else{this['updateStatus'](_0x1aec2c[_0x2727('0x23')],![],this['channels'][_0x1aec2c[_0x2727('0x23')]]['faxstatusstring']?_0x2727('0x55')+this[_0x2727('0xd')][_0x1aec2c[_0x2727('0x23')]][_0x2727('0x56')]:_0x2727('0x57'));}}}};Fax[_0x2727('0x2d')][_0x2727('0x58')]=function(_0x54a056){var _0x187803=this;return new BPromise(function(_0x5bce2e,_0x361609){_0x187803['execOriginate'](_0x54a056,_0x187803['faxAccounts'][_0x54a056[_0x2727('0x59')]])['then'](function(_0x9bf076){ut['logger']('[Fax][execOriginate][success]',_0x9bf076);_0x5bce2e(ut[_0x2727('0x3a')]('Fax\x20received'));})[_0x2727('0x3f')](function(_0x4f3352){ut[_0x2727('0x48')](_0x2727('0x5a'),_0x4f3352);updateStatus(_0x54a056);_0x361609(ut[_0x2727('0x3a')]('Fax\x20failed'));});});};Fax['prototype']['checkAfterSend']=function(_0x186441){var _0x32e9f8=this;return new BPromise(function(_0x1debb6,_0x2d704b){var _0x32e0e0=_0x32e9f8[_0x2727('0x5b')](_0x32e9f8[_0x2727('0xe')][_0x186441[_0x2727('0x59')]][_0x2727('0x5c')],_0x186441);if(_0x32e0e0[_0x2727('0x5d')]){_0x1debb6(ut['message'](_0x2727('0x5e')));}else{_0x2d704b(ut[_0x2727('0x3a')](_0x32e0e0[_0x2727('0x3a')]));}});};function originate(_0x19120f,_0x1576cc,_0xa434d9){return new BPromise(function(_0xf720d,_0x31f846){if(_0xa434d9){var _0x35d7c6=util[_0x2727('0x5f')](_0x2727('0x60'),path[_0x2727('0x3b')](_0x19120f[_0x2727('0x4')])[_0x2727('0x25')],_0x19120f['path']);gs[_0x2727('0x61')](_0x35d7c6)[_0x2727('0x3d')](function(){_0x19120f['path']=util[_0x2727('0x5f')](_0x2727('0x62'),path[_0x2727('0x3b')](_0x19120f['path'])['dir'],path['parse'](_0x19120f[_0x2727('0x4')])[_0x2727('0x25')]);_0x1576cc['XMF-PATH']=_0x19120f[_0x2727('0x4')];ut[_0x2727('0x48')](_0x2727('0x63'),'');ami[_0x2727('0x64')](ut[_0x2727('0x65')](_0x19120f,_0x1576cc))['then'](function(_0x378957){_0xf720d(_0x378957);})[_0x2727('0x3f')](function(_0x1ef063){_0x31f846(_0x1ef063);});})[_0x2727('0x3f')](function(_0x58f849){_0x31f846(_0x58f849);});}else{ami[_0x2727('0x64')](ut['variablesAction'](_0x19120f,_0x1576cc))['then'](function(_0x31535d){_0xf720d(_0x31535d);})[_0x2727('0x3f')](function(_0x1bf1c4){_0x31f846(_0x1bf1c4);});}});}Fax['prototype'][_0x2727('0x66')]=function(_0x36fe97,_0x3adb1d){var _0x382e94=this;return new BPromise(function(_0x2049e7,_0x113e9d){var _0x28833e=uuid['v4']();var _0x23c94b=ut[_0x2727('0x67')](_0x36fe97,_0x3adb1d);_0x382e94[_0x2727('0x10')][_0x28833e]=new Action(_0x28833e,_0x3adb1d,_0x36fe97);var _0x4cd092=_0x382e94[_0x2727('0x10')][_0x28833e];if(path['parse'](_0x36fe97[_0x2727('0x4')])[_0x2727('0x68')]===_0x2727('0x3c')){originate(_0x4cd092,_0x23c94b,!![])[_0x2727('0x3d')](function(_0x4ad6ce){_0x2049e7(_0x4ad6ce);})['catch'](function(_0x2f4635){_0x113e9d(_0x2f4635);});}else{originate(_0x4cd092,_0x23c94b,![])[_0x2727('0x3d')](function(_0x235fdc){_0x2049e7(_0x235fdc);})[_0x2727('0x3f')](function(_0x523308){_0x113e9d(_0x523308);});}});};Fax[_0x2727('0x2d')][_0x2727('0x69')]=function(_0x42f983){return!_[_0x2727('0x6a')](_0x42f983)&&!_[_0x2727('0x6a')](_0x42f983[_0x2727('0x25')])&&!_['isNil'](_0x42f983[_0x2727('0x6b')])&&_0x42f983[_0x2727('0x6b')]&&!_['isNil'](this[_0x2727('0xf')][util[_0x2727('0x5f')](_0x2727('0x6c'),_0x42f983[_0x2727('0x25')])])&&!_[_0x2727('0x6a')](this['trunks'][util[_0x2727('0x5f')]('SIP/%s',_0x42f983['name'])][_0x2727('0x30')])&&(this[_0x2727('0xf')][util['format'](_0x2727('0x6c'),_0x42f983[_0x2727('0x25')])]['status']===_0x2727('0x6d')||this[_0x2727('0xf')][util['format']('SIP/%s',_0x42f983[_0x2727('0x25')])][_0x2727('0x30')]===_0x2727('0x6e'));};Fax['prototype'][_0x2727('0x5b')]=function(_0x48cb5e,_0x122f7){if(!this[_0x2727('0x69')](_0x48cb5e)){ut[_0x2727('0x48')]('[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]',_[_0x2727('0x6a')](_0x48cb5e)?'':_0x48cb5e[_0x2727('0x25')]+_0x2727('0x6f'));return{'isValid':![],'message':'Trunk\x20not\x20working\x20correctly'};}if(_[_0x2727('0x6a')](_0x122f7['fax'])){ut[_0x2727('0x48')](_0x2727('0x70'),JSON[_0x2727('0x42')](_0x122f7));return{'isValid':![],'message':_0x2727('0x71')};}if(_['isNil'](_0x122f7[_0x2727('0x4')])){ut[_0x2727('0x48')](_0x2727('0x72'),JSON[_0x2727('0x42')](_0x122f7));return{'isValid':![],'message':_0x2727('0x73')};}return{'isValid':!![],'message':_0x2727('0x74')};};Fax['prototype'][_0x2727('0x75')]=function(_0x3773f6,_0x12a02b=0x2710){if(this[_0x2727('0xd')][_0x3773f6]){setTimeout(()=>{delete this['channels'][_0x3773f6];},_0x12a02b);}};module[_0x2727('0x76')]=Fax;