afdc7204403915cb7dfb1bfeb3abb511d3ab62a1
[motion2.git] / server / api / smsMessage / smsMessage.model.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 _0x9469=['bluebird','path','rimraf','./smsMessage.attributes','SmsMessage','sms_messages','messageId','fti_sms_messages','FULLTEXT','models','direction','toLowerCase','out','secret','isNil','UserId','SmsInteraction','findOne','SmsInteractionId','then','update','catch','error','SmsAccount','SmsAccountId','twilio','accountSid','authToken','phone','messages','create','sid','inspect','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','skebby','https://api.skebby.it/API/v1.0/REST/','username','smsMethod','login?username=','&password=','password','split','sms','POST','user_key','session_key','internal_order_id','deliveryReport','Missing\x20parameters:\x20username,\x20password','connectel','body','read','clicksend','xCALLY\x20Motion','format','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','data','queued_count','head','message_id','clickSend','plivo','authId','senderString','remote','/api/sms/messages/','token','https://api.plivo.com/v1/Account/%s/Message/','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','IBSSO\x20','Missing\x20parameters:\x20base_url','csc','crypto','apiKey','login','sender','timestamp','keys','sort','createHash','hex','GET','/external/get/send.php?','id_sms','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','application/json','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment'];(function(_0x399da2,_0x3fa505){var _0x3408f6=function(_0x3c6a45){while(--_0x3c6a45){_0x399da2['push'](_0x399da2['shift']());}};_0x3408f6(++_0x3fa505);}(_0x9469,0xdc));var _0x9946=function(_0x32e1da,_0x489d1e){_0x32e1da=_0x32e1da-0x0;var _0x5e29c8=_0x9469[_0x32e1da];return _0x5e29c8;};'use strict';var _=require(_0x9946('0x0'));var util=require(_0x9946('0x1'));var logger=require('../../config/logger')(_0x9946('0x2'));var moment=require(_0x9946('0x3'));var BPromise=require(_0x9946('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9946('0x5'));var rimraf=require(_0x9946('0x6'));var config=require('../../config/environment');var attributes=require(_0x9946('0x7'));module['exports']=function(_0x549f59,_0x487162){return _0x549f59['define'](_0x9946('0x8'),attributes,{'tableName':_0x9946('0x9'),'paranoid':![],'indexes':[{'name':_0x9946('0xa'),'fields':[_0x9946('0xa')]},{'name':_0x9946('0xb'),'fields':['body'],'type':_0x9946('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x48f4c4,_0x24f0ae,_0x2073b5){var _0x1550c8=_0x549f59[_0x9946('0xd')];var _0xb8401b=_0x48f4c4['get']({'plain':!![]});if(_0xb8401b[_0x9946('0xe')][_0x9946('0xf')]()==='in'||_0xb8401b[_0x9946('0xe')][_0x9946('0xf')]()===_0x9946('0x10')&&!_0xb8401b[_0x9946('0x11')]&&!_[_0x9946('0x12')](_0xb8401b[_0x9946('0x13')])){_0x1550c8[_0x9946('0x14')][_0x9946('0x15')]({'where':{'id':_0xb8401b[_0x9946('0x16')]}})[_0x9946('0x17')](function(_0x54427b){if(_0x54427b){_0x54427b[_0x9946('0x18')]({'lastMsgAt':_0xb8401b['createdAt'],'lastMsgDirection':_0xb8401b['direction'][_0x9946('0xf')]()});}})[_0x9946('0x19')](function(_0x2ad155){console[_0x9946('0x1a')](_0x2ad155);});}if(_0xb8401b['direction']==='out'&&!_0xb8401b[_0x9946('0x11')]){var _0x2f11f0;_0x1550c8[_0x9946('0x1b')]['find']({'where':{'id':_0xb8401b[_0x9946('0x1c')]},'raw':!![]})[_0x9946('0x17')](function(_0x11dbe4){_0x2f11f0=_0x11dbe4;if(_0x2f11f0&&_0x2f11f0['type']){switch(_0x2f11f0['type']){case _0x9946('0x1d'):var _0x1c1410=require(_0x9946('0x1d'));if(_0x2f11f0[_0x9946('0x1e')]&&_0x2f11f0[_0x9946('0x1f')]&&_0x2f11f0[_0x9946('0x20')]){var _0x514105=new _0x1c1410(_0x2f11f0[_0x9946('0x1e')],_0x2f11f0[_0x9946('0x1f')]);_0x514105[_0x9946('0x21')][_0x9946('0x22')]({'body':_0xb8401b['body'],'to':_0xb8401b[_0x9946('0x20')],'from':_0x2f11f0[_0x9946('0x20')],'statusCallback':_0x2f11f0['remote']+'/api/sms/messages/'+_0xb8401b['id']+'/status?token='+_0x2f11f0['token']})[_0x9946('0x17')](function(_0x21e1a3){if(_0x21e1a3[_0x9946('0x23')]){return _0x48f4c4[_0x9946('0x18')]({'messageId':_0x21e1a3[_0x9946('0x23')]});}})['catch'](function(_0xc7a883){logger[_0x9946('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x9946('0x1d'),util[_0x9946('0x24')](_0xc7a883,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x9946('0x25'),_0x9946('0x26'),_0x9946('0x1d'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case _0x9946('0x27'):var _0x240f98=_0x9946('0x28');if(_0x2f11f0[_0x9946('0x29')]&&_0x2f11f0['password']){var _0x4a2a37={'recipient':[_0xb8401b[_0x9946('0x20')]],'message':_0xb8401b['body'],'message_type':_0x2f11f0[_0x9946('0x2a')]};if(_0x2f11f0['smsMethod']&&_0x2f11f0['smsMethod']!=='SI'){_0x4a2a37['sender']=_0x2f11f0[_0x9946('0x20')];}var _0x49470b={'url':_0x240f98+_0x9946('0x2b')+_0x2f11f0[_0x9946('0x29')]+_0x9946('0x2c')+_0x2f11f0[_0x9946('0x2d')],'method':'GET'};rp(_0x49470b)[_0x9946('0x17')](function(_0x1d0fa){var _0x1c3272=_0x1d0fa[_0x9946('0x2e')](';');var _0x3d0438={'user_key':_0x1c3272[0x0],'session_key':_0x1c3272[0x1]};_0x49470b={'url':_0x240f98+_0x9946('0x2f'),'method':_0x9946('0x30'),'headers':{'user_key':_0x3d0438[_0x9946('0x31')],'Session_key':_0x3d0438[_0x9946('0x32')]},'json':!![],'body':_0x4a2a37};return rp(_0x49470b);})[_0x9946('0x17')](function(_0x235a7e){if(_0x235a7e['total_sent']>=0x1){var _0x4678fb={'messageId':_0x235a7e[_0x9946('0x33')]};if(_0x2f11f0[_0x9946('0x2a')]!=='GP'||!_0x2f11f0[_0x9946('0x34')]){_0x4678fb['read']=!![];}return _0x48f4c4[_0x9946('0x18')](_0x4678fb);}else{return logger[_0x9946('0x1a')](_0x9946('0x25'),_0x9946('0x26'),_0x9946('0x27'),util[_0x9946('0x24')](_0x235a7e,{'showHidden':![],'depth':null}));}})['catch'](function(_0x30d161){return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x9946('0x26'),_0x9946('0x27'),util['inspect'](_0x30d161,{'showHidden':![],'depth':null}));});}else{logger[_0x9946('0x1a')](_0x9946('0x25'),_0x9946('0x26'),'skebby',_0x9946('0x35'));}break;case _0x9946('0x36'):if(_0x2f11f0[_0x9946('0x1f')]){var _0x5c53c3={'recipient':_0xb8401b[_0x9946('0x20')],'message':_0xb8401b[_0x9946('0x37')],'sender':_0x2f11f0['senderString']||_0x2f11f0[_0x9946('0x20')],'authorization':_0x2f11f0[_0x9946('0x1f')]};var _0x24f0ae={'method':_0x9946('0x30'),'uri':'https://smsapi.connectel.se/api/send/','body':_0x5c53c3,'json':!![]};rp(_0x24f0ae)[_0x9946('0x17')](function(_0x25a64d){var _0x1d66f8={'messageId':_0x25a64d['requestid']};if(!_0x2f11f0[_0x9946('0x34')]){_0x1d66f8[_0x9946('0x38')]=!![];}return _0x48f4c4['update'](_0x1d66f8);})[_0x9946('0x19')](function(_0x402219){logger[_0x9946('0x1a')](_0x9946('0x25'),_0x9946('0x26'),_0x9946('0x36'),util[_0x9946('0x24')](_0x402219,{'showHidden':![],'depth':null}));});}else{logger[_0x9946('0x1a')](_0x9946('0x25'),_0x9946('0x26'),_0x9946('0x36'),'Missing\x20parameters:\x20authToken');}break;case _0x9946('0x39'):if(_0x2f11f0[_0x9946('0x29')]&&_0x2f11f0[_0x9946('0x2d')]){var _0x5c53c3={'messages':[{'source':_0x9946('0x3a'),'to':_0xb8401b['phone'],'body':_0xb8401b[_0x9946('0x37')],'from':_0x2f11f0['senderString']||_0x2f11f0[_0x9946('0x20')]}]};var _0x4e948c=util[_0x9946('0x3b')]('%s:%s',_0x2f11f0[_0x9946('0x29')],_0x2f11f0['password']);var _0x24f0ae={'method':'POST','uri':_0x9946('0x3c'),'body':_0x5c53c3,'headers':{'Authorization':util[_0x9946('0x3b')](_0x9946('0x3d'),new Buffer(_0x4e948c)[_0x9946('0x3e')](_0x9946('0x3f')))},'json':!![]};rp(_0x24f0ae)['then'](function(_0x436cd2){if(_0x436cd2['http_code']>=0xc8&&_0x436cd2['http_code']<=0xce){if(_0x436cd2[_0x9946('0x40')]&&_0x436cd2[_0x9946('0x40')][_0x9946('0x41')]>0x0){var _0x3b2150=_[_0x9946('0x42')](_0x436cd2['data'][_0x9946('0x21')]);var _0x2b5687={'messageId':_0x3b2150[_0x9946('0x43')]};if(!_0x2f11f0[_0x9946('0x34')]){_0x2b5687[_0x9946('0x38')]=!![];}return _0x48f4c4[_0x9946('0x18')](_0x2b5687);}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x9946('0x26'),_0x9946('0x44'),util[_0x9946('0x24')](_0x436cd2,{'showHidden':![],'depth':null}));}}else{logger['error'](_0x9946('0x25'),_0x9946('0x26'),'clickSend',util[_0x9946('0x24')](_0x436cd2,{'showHidden':![],'depth':null}));}})[_0x9946('0x19')](function(_0x56f761){logger[_0x9946('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x9946('0x26'),_0x9946('0x44'),util[_0x9946('0x24')](_0x56f761,{'showHidden':![],'depth':null}));});}else{logger[_0x9946('0x1a')](_0x9946('0x25'),_0x9946('0x26'),_0x9946('0x44'),_0x9946('0x35'));}break;case _0x9946('0x45'):if(_0x2f11f0[_0x9946('0x46')]&&_0x2f11f0[_0x9946('0x1f')]){var _0x5c53c3={'dst':_0xb8401b[_0x9946('0x20')],'text':_0xb8401b[_0x9946('0x37')],'src':_0x2f11f0[_0x9946('0x47')]||_0x2f11f0['phone'],'url':_0x2f11f0[_0x9946('0x48')]+_0x9946('0x49')+_0xb8401b['id']+'/status?token='+_0x2f11f0[_0x9946('0x4a')]};var _0x4e948c=util[_0x9946('0x3b')]('%s:%s',_0x2f11f0[_0x9946('0x46')],_0x2f11f0['authToken']);var _0x24f0ae={'method':_0x9946('0x30'),'uri':util[_0x9946('0x3b')](_0x9946('0x4b'),_0x2f11f0[_0x9946('0x46')]),'body':_0x5c53c3,'headers':{'Authorization':util['format']('Basic\x20%s',new Buffer(_0x4e948c)[_0x9946('0x3e')](_0x9946('0x3f')))},'json':!![]};rp(_0x24f0ae)['then'](function(_0x3c0b6a){var _0x2ce3fb={'messageId':_0x3c0b6a[_0x9946('0x4c')][0x0]};return _0x48f4c4['update'](_0x2ce3fb);})[_0x9946('0x19')](function(_0x21cecf){logger[_0x9946('0x1a')](_0x9946('0x25'),_0x9946('0x26'),_0x9946('0x45'),util[_0x9946('0x24')](_0x21cecf,{'showHidden':![],'depth':null}));});}else{logger[_0x9946('0x1a')](_0x9946('0x25'),_0x9946('0x26'),_0x9946('0x45'),_0x9946('0x4d'));}break;case _0x9946('0x4e'):if(_0x2f11f0[_0x9946('0x29')]&&_0x2f11f0[_0x9946('0x2d')]){if(_0x2f11f0[_0x9946('0x4f')]){var _0x216351={'method':_0x9946('0x30'),'uri':_0x2f11f0['baseUrl']+'/auth/1/session','body':{'username':_0x2f11f0['username'],'password':_0x2f11f0[_0x9946('0x2d')]},'json':!![]};return rp(_0x216351)['then'](function(_0x4612b3){var _0x5462ef={'method':_0x9946('0x30'),'uri':_0x2f11f0['baseUrl']+'/sms/2/text/advanced','body':{'messages':[{'from':_0x2f11f0[_0x9946('0x20')],'destinations':[{'to':_0xb8401b[_0x9946('0x20')]}],'text':_0xb8401b['body'],'notifyUrl':_0x2f11f0[_0x9946('0x48')]+_0x9946('0x49')+_0xb8401b['id']+'/status?token='+_0x2f11f0[_0x9946('0x4a')],'notifyContentType':'application/json','callbackData':_0x2f11f0[_0x9946('0x20')]+';'+_0xb8401b[_0x9946('0x37')]}]},'headers':{'Authorization':_0x9946('0x50')+_0x4612b3[_0x9946('0x4a')]},'json':!![]};return rp(_0x5462ef)[_0x9946('0x17')](function(_0xcb21ce){if(_0xcb21ce['messages']){var _0x56ba90={'messageId':_0xcb21ce[_0x9946('0x21')][0x0]['messageId']};if(!_0x2f11f0[_0x9946('0x34')]){_0x56ba90[_0x9946('0x38')]=!![];}return _0x48f4c4[_0x9946('0x18')](_0x56ba90);}else{return logger[_0x9946('0x1a')](_0x9946('0x25'),_0x9946('0x26'),_0x9946('0x4e'),util[_0x9946('0x24')](_0xcb21ce,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x30dae2){return logger['error'](_0x9946('0x25'),_0x9946('0x26'),_0x9946('0x4e'),util['inspect'](_0x30dae2,{'showHidden':![],'depth':null}));});}else{logger[_0x9946('0x1a')](_0x9946('0x25'),_0x9946('0x26'),_0x9946('0x4e'),_0x9946('0x51'));}}else{logger[_0x9946('0x1a')](_0x9946('0x25'),_0x9946('0x26'),_0x9946('0x4e'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x9946('0x52'):var _0x2e74c5=require(_0x9946('0x53'));if(_0x2f11f0[_0x9946('0x54')]){var _0x3fb4c0={};_0x3fb4c0[_0x9946('0x55')]=_0x2f11f0[_0x9946('0x29')];_0x3fb4c0[_0x9946('0x20')]=_0xb8401b['phone'];_0x3fb4c0[_0x9946('0x56')]=_0x2f11f0[_0x9946('0x20')];_0x3fb4c0['text']=_0xb8401b[_0x9946('0x37')];_0x3fb4c0[_0x9946('0x57')]=+new Date();var _0x1e71d3='';var _0x5e98ac='';var _0x2c0e35=Object[_0x9946('0x58')](_0x3fb4c0);_0x2c0e35[_0x9946('0x59')]();for(var _0x1379dc=0x0;_0x1379dc<_0x2c0e35['length'];_0x1379dc++){if(_0x1e71d3!=''){_0x1e71d3+='&';}_0x1e71d3+=_0x2c0e35[_0x1379dc]+'='+encodeURIComponent(_0x3fb4c0[_0x2c0e35[_0x1379dc]]);_0x5e98ac+=_0x3fb4c0[_0x2c0e35[_0x1379dc]];}_0x5e98ac+=_0x2f11f0[_0x9946('0x54')];_0x5e98ac=_0x2e74c5[_0x9946('0x5a')]('md5')[_0x9946('0x18')](_0x5e98ac)['digest'](_0x9946('0x5b'));if(_0x1e71d3!==''){_0x1e71d3+='&';}_0x1e71d3+='signature='+_0x5e98ac;var _0x49470b={'method':_0x9946('0x5c'),'uri':_0x2f11f0[_0x9946('0x4f')]+_0x9946('0x5d')+_0x1e71d3,'json':!![]};return rp(_0x49470b)[_0x9946('0x17')](function(_0xe1ab0){var _0x3fbcf1=Object[_0x9946('0x58')](_0xe1ab0);if(_0xe1ab0[_0x3fbcf1[0x0]]['error']&&parseInt(_0xe1ab0[_0x3fbcf1[0x0]]['error'])===0x0){var _0x39fb47={'messageId':_0xe1ab0[_0x3fbcf1[0x0]][_0x9946('0x5e')]};if(!_0x2f11f0['deliveryReport']){_0x39fb47[_0x9946('0x38')]=!![];}return _0x48f4c4[_0x9946('0x18')](_0x39fb47);}else{return logger[_0x9946('0x1a')](_0x9946('0x25'),'afterCreate',_0x9946('0x52'),util[_0x9946('0x24')](_0xe1ab0['error'],{'showHidden':![],'depth':null}));}})[_0x9946('0x19')](function(_0x11f49d){return logger[_0x9946('0x1a')](_0x9946('0x25'),_0x9946('0x26'),'csc',util['inspect'](_0x11f49d,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x9946('0x26'),_0x9946('0x52'),_0x9946('0x5f'));}break;case _0x9946('0x60'):if(_0x2f11f0[_0x9946('0x54')]){var _0x188afb={'method':_0x9946('0x30'),'uri':_0x9946('0x61'),'headers':{'Authorization':_0x2f11f0['apiKey']},'body':{'content':_0xb8401b[_0x9946('0x37')],'to':[_0xb8401b['phone']],'from':_0x2f11f0[_0x9946('0x20')],'binary':![],'clientMessageId':_0x9946('0x62'),'charset':_0x9946('0x63')},'json':!![]};rp(_0x188afb)[_0x9946('0x17')](function(_0x4e4c3c){if(!_0x4e4c3c[_0x9946('0x1a')]){var _0x11894b={'messageId':_0x4e4c3c[_0x9946('0x21')][0x0][_0x9946('0x64')]};if(!_0x2f11f0['deliveryReport']){_0x11894b[_0x9946('0x38')]=!![];}return _0x48f4c4[_0x9946('0x18')](_0x11894b);}else{return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x9946('0x60'),util[_0x9946('0x24')](_0x4e4c3c['error'],{'showHidden':![],'depth':null}));}})[_0x9946('0x19')](function(_0x1527bc){return logger[_0x9946('0x1a')](_0x9946('0x25'),_0x9946('0x26'),'clickatell',util[_0x9946('0x24')](_0x1527bc,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x9946('0x25'),_0x9946('0x26'),_0x9946('0x60'),_0x9946('0x5f'));}break;case _0x9946('0x65'):if(_0x2f11f0[_0x9946('0x54')]){var _0x2f0c3a={};var _0x49470b={'method':_0x9946('0x30'),'uri':_0x9946('0x66'),'headers':{'Authorization':_0x9946('0x67')+_0x2f11f0[_0x9946('0x54')],'Content-Type':_0x9946('0x68')},'body':{'from':_0x2f11f0[_0x9946('0x20')],'to':_0xb8401b['phone'],'text':_0xb8401b['body']},'json':!![]};return rp(_0x49470b)[_0x9946('0x17')](function(_0xad31f2){if(_0xad31f2['code']==0xca){_0x2f0c3a[_0x9946('0x69')]=_0xad31f2;var _0x3a487c={'method':_0x9946('0x30'),'uri':_0x9946('0x6a'),'headers':{'Authorization':'Bearer\x20'+_0x2f11f0[_0x9946('0x54')],'Content-Type':_0x9946('0x68')},'body':{'refid':_0x2f0c3a[_0x9946('0x69')][_0x9946('0x6b')]},'json':!![]};return rp(_0x3a487c)[_0x9946('0x17')](function(_0x31962f){_0x2f0c3a['status']=_0x31962f;var _0x391d5f={'messageId':_0x2f0c3a[_0x9946('0x69')][_0x9946('0x6b')],'read':!![]};return _0x48f4c4['update'](_0x391d5f);});}else{return logger[_0x9946('0x1a')](_0x9946('0x25'),_0x9946('0x26'),_0x9946('0x65'),util['inspect'](_0xad31f2,{'showHidden':![],'depth':null}));}})[_0x9946('0x19')](function(_0x54c37e){return logger[_0x9946('0x1a')](_0x9946('0x25'),_0x9946('0x26'),_0x9946('0x65'),util[_0x9946('0x24')](_0x54c37e,{'showHidden':![],'depth':null}));});}else{return logger[_0x9946('0x1a')](_0x9946('0x25'),_0x9946('0x26'),'intelepeer',_0x9946('0x6c'));}break;}}})[_0x9946('0x6d')](function(){_0x2073b5();});}else{_0x2073b5();}}},'charset':_0x9946('0x6e'),'collate':_0x9946('0x6f')});};