b5aca0ce1ecacee2110a5359d8badec857f47bc8
[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 _0x13f6=['application/pdf','then','notify','error','\x20notify\x20','stringify','catch','\x20receiveFax\x20','merge','response','reason','update','logger','[Fax][Message][Error][NoUpdate2]','updateStatus','AttachmentId','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','SUCCESS','SENDING\x20FAILED:\x20','faxstatusstring','SENDING\x20FAILED','send','execOriginate','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','Fax\x20failed','checkAfterSend','checkTrunk','Trunk','Trunk\x20Reachable','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','dir','XMF-PATH','Action','variablesAction','addVariables','isNil','active','format','SIP/%s','status','unmonitored','isTrunkReachable','[Fax][checkTrunk][Trunk\x20not\x20work]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20Fax]','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','util','lodash','moment','path','tiff2pdf','../../../config/logger','fax','../ami','./channel','./util/util','channels','faxAccounts','trunks','actions','newchannel','bind','varset','syncVarSet','newstate','syncNewState','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','hangup','syncHangup','syncOriginateResponse','syncNewchannel','from-voip-provider','hasOwnProperty','exten','localstationid','channel','uniqueid','name','info','\x20syncNewchannel\x20','prototype','variable','channelstate','channelstatedesc','syncNewExten','value','operation','filename','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','.pdf'];(function(_0x4a3b44,_0x28850d){var _0x41d5da=function(_0x294114){while(--_0x294114){_0x4a3b44['push'](_0x4a3b44['shift']());}};_0x41d5da(++_0x28850d);}(_0x13f6,0x124));var _0x613f=function(_0x3d8abb,_0x4fb513){_0x3d8abb=_0x3d8abb-0x0;var _0x41266c=_0x13f6[_0x3d8abb];return _0x41266c;};'use strict';var util=require(_0x613f('0x0'));var _=require(_0x613f('0x1'));var BPromise=require('bluebird');var uuid=require('uuid');var moment=require(_0x613f('0x2'));var path=require(_0x613f('0x3'));var tiff2pdf=require(_0x613f('0x4'));var gs=require('./util/gs');var logger=require(_0x613f('0x5'))(_0x613f('0x6'));var ami=require(_0x613f('0x7'));var rpcDb=require('./rpcDb');var Channel=require(_0x613f('0x8'));var ut=require(_0x613f('0x9'));var Action=require('./action');var faxAccount=require('../rpc/faxAccount');var attachment=require('../rpc/attachment');var faxMessage=require('../rpc/faxMessage');function Fax(_0x2d5973){this[_0x613f('0xa')]={};this[_0x613f('0xb')]=_0x2d5973[_0x613f('0xb')];this['trunks']=_0x2d5973[_0x613f('0xc')];this[_0x613f('0xd')]={};ami['on'](_0x613f('0xe'),this['syncNewchannel'][_0x613f('0xf')](this));ami['on'](_0x613f('0x10'),this[_0x613f('0x11')]['bind'](this));ami['on'](_0x613f('0x12'),this[_0x613f('0x13')]['bind'](this));ami['on']('newexten',this['syncNewExten'][_0x613f('0xf')](this));ami['on'](_0x613f('0x14'),this[_0x613f('0x15')][_0x613f('0xf')](this));ami['on'](_0x613f('0x16'),this[_0x613f('0x17')][_0x613f('0xf')](this));ami['on'](_0x613f('0x18'),this[_0x613f('0x19')][_0x613f('0xf')](this));ami['on']('originateresponse',this[_0x613f('0x1a')]['bind'](this));}Fax['prototype'][_0x613f('0x1b')]=function(_0x2f244d){if(_0x2f244d['context']===_0x613f('0x1c')){for(var _0x4f9dae in this[_0x613f('0xb')]){if(this[_0x613f('0xb')][_0x613f('0x1d')](_0x4f9dae)){if(_0x2f244d[_0x613f('0x1e')]===this[_0x613f('0xb')][_0x4f9dae][_0x613f('0x1f')]){this['channels'][_0x2f244d['uniqueid']]={};this[_0x613f('0xa')][_0x2f244d['uniqueid']]['channel']=_0x2f244d[_0x613f('0x20')];this[_0x613f('0xa')][_0x2f244d['uniqueid']]['id']=this[_0x613f('0xb')][_0x4f9dae]['id'];this[_0x613f('0xa')][_0x2f244d[_0x613f('0x21')]]['name']=this['faxAccounts'][_0x4f9dae][_0x613f('0x22')];logger[_0x613f('0x23')](_0x2f244d[_0x613f('0x21')],'\x20syncNewchannel\x20');}}}}if(this[_0x613f('0xd')][_0x2f244d[_0x613f('0x21')]]){this[_0x613f('0xa')][_0x2f244d[_0x613f('0x21')]]={};this[_0x613f('0xa')][_0x2f244d['uniqueid']][_0x613f('0x20')]=_0x2f244d[_0x613f('0x20')];logger['info'](_0x2f244d[_0x613f('0x21')],_0x613f('0x24'));}};Fax[_0x613f('0x25')]['syncVarSet']=function(_0x53e32b){if(this['channels'][_0x53e32b[_0x613f('0x21')]]){for(var _0x594c28 in _0x53e32b[_0x613f('0x26')]){if(_0x53e32b[_0x613f('0x26')]['hasOwnProperty'](_0x594c28)){this[_0x613f('0xa')][_0x53e32b[_0x613f('0x21')]][_0x594c28]=_0x53e32b['value'];}}}};Fax['prototype']['syncNewState']=function(_0x24be7c){if(this[_0x613f('0xa')][_0x24be7c[_0x613f('0x21')]]){this['channels'][_0x24be7c[_0x613f('0x21')]][_0x613f('0x27')]=_0x24be7c[_0x613f('0x27')];this[_0x613f('0xa')][_0x24be7c['uniqueid']][_0x613f('0x28')]=_0x24be7c[_0x613f('0x28')];}};Fax[_0x613f('0x25')][_0x613f('0x29')]=function(_0x10fa2b){if(this[_0x613f('0xa')][_0x10fa2b['uniqueid']]){for(var _0x2ab751 in _0x10fa2b[_0x613f('0x26')]){if(_0x10fa2b[_0x613f('0x26')]['hasOwnProperty'](_0x2ab751)){this[_0x613f('0xa')][_0x10fa2b['uniqueid']][_0x2ab751]=_0x10fa2b[_0x613f('0x2a')];}}}};Fax[_0x613f('0x25')][_0x613f('0x15')]=function(_0x28c06c){if(this[_0x613f('0xa')][_0x28c06c[_0x613f('0x21')]]){this['channels'][_0x28c06c[_0x613f('0x21')]][_0x613f('0x2b')]=_0x28c06c[_0x613f('0x2b')];this[_0x613f('0xa')][_0x28c06c[_0x613f('0x21')]]['status']=_0x28c06c['status'];this['channels'][_0x28c06c[_0x613f('0x21')]][_0x613f('0x1f')]=_0x28c06c[_0x613f('0x1f')];this[_0x613f('0xa')][_0x28c06c['uniqueid']][_0x613f('0x2c')]=_0x28c06c[_0x613f('0x2c')];logger['info'](_0x28c06c[_0x613f('0x21')],'\x20syncFaxStatus\x20');}};Fax[_0x613f('0x25')]['syncReceiveFax']=function(_0x36dfd4){var _0x4cf8a6=this;if(this[_0x613f('0xa')][_0x36dfd4[_0x613f('0x21')]]){var _0x46842f=this['channels'][_0x36dfd4[_0x613f('0x21')]]['id'];this[_0x613f('0xa')][_0x36dfd4[_0x613f('0x21')]][_0x613f('0x2d')]=_0x36dfd4[_0x613f('0x2d')];this[_0x613f('0xa')][_0x36dfd4[_0x613f('0x21')]][_0x613f('0x2e')]=_0x36dfd4[_0x613f('0x2e')];this[_0x613f('0xa')][_0x36dfd4['uniqueid']][_0x613f('0x1f')]=_0x36dfd4[_0x613f('0x1f')];this[_0x613f('0xa')][_0x36dfd4[_0x613f('0x21')]][_0x613f('0x2f')]=_0x36dfd4[_0x613f('0x2f')];this[_0x613f('0xa')][_0x36dfd4['uniqueid']][_0x613f('0x30')]=_0x36dfd4[_0x613f('0x30')];this[_0x613f('0xa')][_0x36dfd4[_0x613f('0x21')]][_0x613f('0x2c')]=_0x36dfd4[_0x613f('0x2c')];this[_0x613f('0xa')][_0x36dfd4['uniqueid']][_0x613f('0x31')]=_0x36dfd4[_0x613f('0x31')];if(this[_0x613f('0xa')][_0x36dfd4[_0x613f('0x21')]][_0x613f('0x2e')]>0x0){tiff2pdf(_0x36dfd4[_0x613f('0x2c')],_0x613f('0x32'),function(_0x8067d){logger[_0x613f('0x23')](_0x36dfd4[_0x613f('0x21')],_0x613f('0x33'),_0x8067d[_0x613f('0x34')]);attachment[_0x613f('0x35')]({'name':path['parse'](_0x36dfd4[_0x613f('0x2c')])[_0x613f('0x22')],'basename':path[_0x613f('0x36')](_0x36dfd4[_0x613f('0x2c')])['name']+_0x613f('0x37'),'type':_0x613f('0x38')})[_0x613f('0x39')](function(_0x16b288){faxAccount[_0x613f('0x3a')](_0x46842f,{'from':_0x36dfd4[_0x613f('0x31')],'mapKey':_0x613f('0x6'),'body':path[_0x613f('0x36')](_0x36dfd4[_0x613f('0x2c')])[_0x613f('0x22')]+'.pdf','AttachmentId':_0x16b288['id']})['catch'](function(_0x1bccad){logger[_0x613f('0x3b')](_0x36dfd4['uniqueid'],_0x613f('0x3c'),JSON[_0x613f('0x3d')](_0x1bccad));});})[_0x613f('0x3e')](function(_0x2a60bd){logger[_0x613f('0x3b')](_0x36dfd4[_0x613f('0x21')],_0x613f('0x3f'),JSON[_0x613f('0x3d')](_0x2a60bd));});});}logger[_0x613f('0x23')](_0x36dfd4[_0x613f('0x21')],_0x613f('0x3f'));}};Fax[_0x613f('0x25')][_0x613f('0x1a')]=function(_0x17f8e5){if(this[_0x613f('0xd')][_0x17f8e5[_0x613f('0x21')]]){_[_0x613f('0x40')](this[_0x613f('0xa')][_0x17f8e5['uniqueid']],_['pick'](_0x17f8e5,[_0x613f('0x41'),_0x613f('0x42')]));}};function updateStatus(_0x5f0f73){if(_0x5f0f73['AttachmentId']){faxMessage[_0x613f('0x43')](_0x5f0f73['AttachmentId'],{'failMessage':'SENDING\x20FAILED\x20'})[_0x613f('0x39')](function(_0x323ff7){ut[_0x613f('0x44')]('[Fax][Message][Error][Updated]',_0x323ff7);})[_0x613f('0x3e')](function(_0x150b36){ut['logger']('[Fax][Message][Error][NoUpdate1]',_0x150b36);});}else{ut[_0x613f('0x44')](_0x613f('0x45'));}}Fax[_0x613f('0x25')][_0x613f('0x46')]=function(_0x3f7ead,_0x395357,_0x24d162){var _0x5e849a=this;var _0x4c6096={};if(_0x395357){_0x4c6096={'read':_0x395357};}else{_0x4c6096={'failMessage':_0x24d162};}if(this[_0x613f('0xd')][_0x3f7ead]['AttachmentId']){faxMessage['update'](this[_0x613f('0xd')][_0x3f7ead][_0x613f('0x47')],_0x4c6096)[_0x613f('0x39')](function(_0x59d6bb){ut[_0x613f('0x44')](_0x613f('0x48'),_0x59d6bb);})[_0x613f('0x3e')](function(_0x2f4791){ut[_0x613f('0x44')](_0x613f('0x49'),_0x2f4791);})[_0x613f('0x4a')](function(){delete _0x5e849a['channels'][_0x3f7ead];delete _0x5e849a[_0x613f('0xd')][_0x3f7ead];});}else{ut['logger'](_0x613f('0x4b'));delete this[_0x613f('0xa')][_0x3f7ead];delete this[_0x613f('0xd')][_0x3f7ead];}};Fax[_0x613f('0x25')][_0x613f('0x19')]=function(_0x1df0c8){var _0x2161f6=this;if(this[_0x613f('0xa')][_0x1df0c8[_0x613f('0x21')]]){if(this[_0x613f('0xd')][_0x1df0c8[_0x613f('0x21')]]){this[_0x613f('0xa')][_0x1df0c8[_0x613f('0x21')]]['id']=this['actions'][_0x1df0c8['uniqueid']]['id'];this[_0x613f('0xa')][_0x1df0c8['uniqueid']][_0x613f('0x22')]=this[_0x613f('0xd')][_0x1df0c8[_0x613f('0x21')]][_0x613f('0x22')];}logger[_0x613f('0x23')](_0x1df0c8[_0x613f('0x21')],this[_0x613f('0xd')][_0x1df0c8[_0x613f('0x21')]]?_0x613f('0x4c'):_0x613f('0x4d'),JSON[_0x613f('0x3d')](this['channels'][_0x1df0c8[_0x613f('0x21')]]));if(this[_0x613f('0xd')][_0x1df0c8[_0x613f('0x21')]]){if(this[_0x613f('0xa')][_0x1df0c8['uniqueid']][_0x613f('0x4e')]>0x0&&this[_0x613f('0xa')][_0x1df0c8['uniqueid']]['faxstatus']===_0x613f('0x4f')){this['updateStatus'](_0x1df0c8['uniqueid'],!![]);}else{this['updateStatus'](_0x1df0c8[_0x613f('0x21')],![],this['channels'][_0x1df0c8['uniqueid']]['faxstatusstring']?_0x613f('0x50')+this[_0x613f('0xa')][_0x1df0c8['uniqueid']][_0x613f('0x51')]:_0x613f('0x52'));}}}};Fax[_0x613f('0x25')][_0x613f('0x53')]=function(_0x5b8712){var _0x24f25c=this;return new BPromise(function(_0x3d69e0,_0x5d0ab7){_0x24f25c[_0x613f('0x54')](_0x5b8712,_0x24f25c[_0x613f('0xb')][_0x5b8712[_0x613f('0x55')]])[_0x613f('0x39')](function(_0x1d28d5){ut[_0x613f('0x44')](_0x613f('0x56'),_0x1d28d5);_0x3d69e0(ut[_0x613f('0x34')](_0x613f('0x57')));})[_0x613f('0x3e')](function(_0x14f418){ut[_0x613f('0x44')]('[Fax][execOriginate][failure]',_0x14f418);updateStatus(_0x5b8712);_0x5d0ab7(ut[_0x613f('0x34')](_0x613f('0x58')));});});};Fax[_0x613f('0x25')][_0x613f('0x59')]=function(_0x2dc6a4){var _0x2d9b65=this;return new BPromise(function(_0x4e2002,_0x273596){var _0x1f64fc=_0x2d9b65[_0x613f('0x5a')](_0x2d9b65[_0x613f('0xb')][_0x2dc6a4[_0x613f('0x55')]][_0x613f('0x5b')],_0x2dc6a4);if(_0x1f64fc['isValid']){_0x4e2002(ut['message'](_0x613f('0x5c')));}else{_0x273596(ut[_0x613f('0x34')](_0x1f64fc[_0x613f('0x34')]));}});};function originate(_0xddcd6,_0x4f28c7,_0x11d2f4){return new BPromise(function(_0x29e5c8,_0x3d8777){if(_0x11d2f4){var _0x3403f8=util['format'](_0x613f('0x5d'),path[_0x613f('0x36')](_0xddcd6[_0x613f('0x3')])[_0x613f('0x22')],_0xddcd6[_0x613f('0x3')]);gs[_0x613f('0x5e')](_0x3403f8)[_0x613f('0x39')](function(){_0xddcd6[_0x613f('0x3')]=util['format'](_0x613f('0x5f'),path[_0x613f('0x36')](_0xddcd6[_0x613f('0x3')])[_0x613f('0x60')],path[_0x613f('0x36')](_0xddcd6[_0x613f('0x3')])[_0x613f('0x22')]);_0x4f28c7[_0x613f('0x61')]=_0xddcd6[_0x613f('0x3')];ut[_0x613f('0x44')]('Convert\x20pdf\x20to\x20tif','');ami[_0x613f('0x62')](ut[_0x613f('0x63')](_0xddcd6,_0x4f28c7))[_0x613f('0x39')](function(_0x29dc94){_0x29e5c8(_0x29dc94);})[_0x613f('0x3e')](function(_0x418f53){_0x3d8777(_0x418f53);});})[_0x613f('0x3e')](function(_0x2e28a7){_0x3d8777(_0x2e28a7);});}else{ami[_0x613f('0x62')](ut[_0x613f('0x63')](_0xddcd6,_0x4f28c7))[_0x613f('0x39')](function(_0x5d4a48){_0x29e5c8(_0x5d4a48);})[_0x613f('0x3e')](function(_0x1739ac){_0x3d8777(_0x1739ac);});}});}Fax[_0x613f('0x25')][_0x613f('0x54')]=function(_0x205957,_0x2de316){var _0x100ce5=this;return new BPromise(function(_0x21dd66,_0x393433){var _0x2ae55b=uuid['v4']();var _0x7689c7=ut[_0x613f('0x64')](_0x205957,_0x2de316);_0x100ce5['actions'][_0x2ae55b]=new Action(_0x2ae55b,_0x2de316,_0x205957);var _0x30c62f=_0x100ce5[_0x613f('0xd')][_0x2ae55b];if(path['parse'](_0x205957[_0x613f('0x3')])['ext']===_0x613f('0x37')){originate(_0x30c62f,_0x7689c7,!![])['then'](function(_0x49cb13){_0x21dd66(_0x49cb13);})[_0x613f('0x3e')](function(_0x33ae40){_0x393433(_0x33ae40);});}else{originate(_0x30c62f,_0x7689c7,![])[_0x613f('0x39')](function(_0x397932){_0x21dd66(_0x397932);})[_0x613f('0x3e')](function(_0x41abff){_0x393433(_0x41abff);});}});};Fax[_0x613f('0x25')]['isTrunkReachable']=function(_0x1f2179){return!_[_0x613f('0x65')](_0x1f2179)&&!_[_0x613f('0x65')](_0x1f2179[_0x613f('0x22')])&&!_[_0x613f('0x65')](_0x1f2179['active'])&&_0x1f2179[_0x613f('0x66')]&&!_[_0x613f('0x65')](this['trunks'][util[_0x613f('0x67')](_0x613f('0x68'),_0x1f2179[_0x613f('0x22')])])&&!_['isNil'](this['trunks'][util['format'](_0x613f('0x68'),_0x1f2179[_0x613f('0x22')])]['status'])&&(this[_0x613f('0xc')][util[_0x613f('0x67')](_0x613f('0x68'),_0x1f2179['name'])][_0x613f('0x69')]==='reachable'||this[_0x613f('0xc')][util['format']('SIP/%s',_0x1f2179[_0x613f('0x22')])][_0x613f('0x69')]===_0x613f('0x6a'));};Fax[_0x613f('0x25')][_0x613f('0x5a')]=function(_0x42a59b,_0x107126){if(!this[_0x613f('0x6b')](_0x42a59b)){ut[_0x613f('0x44')](_0x613f('0x6c'),_[_0x613f('0x65')](_0x42a59b)?'':_0x42a59b['name']+_0x613f('0x6d'));return{'isValid':![],'message':_0x613f('0x6e')};}if(_[_0x613f('0x65')](_0x107126[_0x613f('0x6')])){ut[_0x613f('0x44')](_0x613f('0x6f'),JSON[_0x613f('0x3d')](_0x107126));return{'isValid':![],'message':'Empty\x20Fax'};}if(_[_0x613f('0x65')](_0x107126[_0x613f('0x3')])){ut[_0x613f('0x44')](_0x613f('0x70'),JSON['stringify'](_0x107126));return{'isValid':![],'message':_0x613f('0x71')};}return{'isValid':!![],'message':_0x613f('0x72')};};module[_0x613f('0x73')]=Fax;