08d69b61d4b329d6c8b4cbcb751fe81a36a472e3
[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 _0x78e0=['clicksend','xCALLY\x20Motion','format','%s:%s','https://rest.clicksend.com/v3/sms/send','base64','http_code','data','queued_count','message_id','clickSend','plivo','authId','token','https://api.plivo.com/v1/Account/%s/Message/','toString','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','baseUrl','/auth/1/session','/sms/2/text/advanced','IBSSO\x20','infobip','Missing\x20parameters:\x20base_url','Missing\x20parameters:\x20username,\x20password','csc','crypto','apiKey','login','text','keys','sort','length','createHash','md5','hex','/external/get/send.php?','id_sms','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','uuid','apiMessageId','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','application/json','https://api.intelepeer.com/_rest/v4/app/sms/mdr','message','status','intelepeer','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./smsMessage.attributes','exports','SmsMessage','sms_messages','messageId','fti_sms_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','findOne','update','createdAt','catch','error','SmsAccount','find','SmsAccountId','then','type','twilio','accountSid','authToken','phone','messages','create','remote','/api/sms/messages/','/status?token=','sid','SmsMessage,\x20%s,\x20%s,\x20%s','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','username','password','smsMethod','sender','login?username=','&password=','split','POST','user_key','session_key','internal_order_id','deliveryReport','read','afterCreate','senderString','https://smsapi.connectel.se/api/send/','requestid','connectel','Missing\x20parameters:\x20authToken'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x78e0,0x124));var _0x078e=function(_0x1cc925,_0x4c59a1){_0x1cc925=_0x1cc925-0x0;var _0x5a2e6c=_0x78e0[_0x1cc925];return _0x5a2e6c;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x078e('0x0'))('api');var moment=require(_0x078e('0x1'));var BPromise=require(_0x078e('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x078e('0x3'));var rimraf=require(_0x078e('0x4'));var config=require(_0x078e('0x5'));var attributes=require(_0x078e('0x6'));module[_0x078e('0x7')]=function(_0x380f6b,_0x1668ab){return _0x380f6b['define'](_0x078e('0x8'),attributes,{'tableName':_0x078e('0x9'),'paranoid':![],'indexes':[{'name':_0x078e('0xa'),'fields':['messageId']},{'name':_0x078e('0xb'),'fields':[_0x078e('0xc')],'type':_0x078e('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1be92d,_0x19a90f,_0x1d2be1){var _0xb0eba4=_0x380f6b[_0x078e('0xe')];var _0x455bb6=_0x1be92d[_0x078e('0xf')]({'plain':!![]});if(_0x455bb6[_0x078e('0x10')][_0x078e('0x11')]()==='in'||_0x455bb6[_0x078e('0x10')][_0x078e('0x11')]()===_0x078e('0x12')&&!_0x455bb6[_0x078e('0x13')]&&!_[_0x078e('0x14')](_0x455bb6[_0x078e('0x15')])){_0xb0eba4['SmsInteraction'][_0x078e('0x16')]({'where':{'id':_0x455bb6['SmsInteractionId']}})['then'](function(_0x120f07){if(_0x120f07){_0x120f07[_0x078e('0x17')]({'lastMsgAt':_0x455bb6[_0x078e('0x18')],'lastMsgDirection':_0x455bb6[_0x078e('0x10')][_0x078e('0x11')]()});}})[_0x078e('0x19')](function(_0x331c1b){console[_0x078e('0x1a')](_0x331c1b);});}if(_0x455bb6['direction']===_0x078e('0x12')&&!_0x455bb6[_0x078e('0x13')]){var _0x1ac0b6;_0xb0eba4[_0x078e('0x1b')][_0x078e('0x1c')]({'where':{'id':_0x455bb6[_0x078e('0x1d')]},'raw':!![]})[_0x078e('0x1e')](function(_0x566f56){_0x1ac0b6=_0x566f56;if(_0x1ac0b6&&_0x1ac0b6[_0x078e('0x1f')]){switch(_0x1ac0b6[_0x078e('0x1f')]){case _0x078e('0x20'):var _0x3ee040=require(_0x078e('0x20'));if(_0x1ac0b6[_0x078e('0x21')]&&_0x1ac0b6[_0x078e('0x22')]&&_0x1ac0b6[_0x078e('0x23')]){var _0x40962f=new _0x3ee040(_0x1ac0b6[_0x078e('0x21')],_0x1ac0b6[_0x078e('0x22')]);_0x40962f[_0x078e('0x24')][_0x078e('0x25')]({'body':_0x455bb6[_0x078e('0xc')],'to':_0x455bb6[_0x078e('0x23')],'from':_0x1ac0b6[_0x078e('0x23')],'statusCallback':_0x1ac0b6[_0x078e('0x26')]+_0x078e('0x27')+_0x455bb6['id']+_0x078e('0x28')+_0x1ac0b6['token']})['then'](function(_0x481552){if(_0x481552[_0x078e('0x29')]){return _0x1be92d[_0x078e('0x17')]({'messageId':_0x481552['sid']});}})['catch'](function(_0x145da7){logger[_0x078e('0x1a')](_0x078e('0x2a'),'afterCreate',_0x078e('0x20'),util[_0x078e('0x2b')](_0x145da7,{'showHidden':![],'depth':null}));});}else{logger[_0x078e('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x078e('0x20'),_0x078e('0x2c'));}break;case _0x078e('0x2d'):var _0x3bb94d='https://api.skebby.it/API/v1.0/REST/';if(_0x1ac0b6[_0x078e('0x2e')]&&_0x1ac0b6[_0x078e('0x2f')]){var _0x421b4a={'recipient':[_0x455bb6[_0x078e('0x23')]],'message':_0x455bb6[_0x078e('0xc')],'message_type':_0x1ac0b6[_0x078e('0x30')]};if(_0x1ac0b6[_0x078e('0x30')]&&_0x1ac0b6[_0x078e('0x30')]!=='SI'){_0x421b4a[_0x078e('0x31')]=_0x1ac0b6[_0x078e('0x23')];}var _0x397bb3={'url':_0x3bb94d+_0x078e('0x32')+_0x1ac0b6[_0x078e('0x2e')]+_0x078e('0x33')+_0x1ac0b6[_0x078e('0x2f')],'method':'GET'};rp(_0x397bb3)[_0x078e('0x1e')](function(_0x28520f){var _0x203bd9=_0x28520f[_0x078e('0x34')](';');var _0x2fd92e={'user_key':_0x203bd9[0x0],'session_key':_0x203bd9[0x1]};_0x397bb3={'url':_0x3bb94d+'sms','method':_0x078e('0x35'),'headers':{'user_key':_0x2fd92e[_0x078e('0x36')],'Session_key':_0x2fd92e[_0x078e('0x37')]},'json':!![],'body':_0x421b4a};return rp(_0x397bb3);})[_0x078e('0x1e')](function(_0x119dfb){if(_0x119dfb['total_sent']>=0x1){var _0x33f623={'messageId':_0x119dfb[_0x078e('0x38')]};if(_0x1ac0b6['smsMethod']!=='GP'||!_0x1ac0b6[_0x078e('0x39')]){_0x33f623[_0x078e('0x3a')]=!![];}return _0x1be92d['update'](_0x33f623);}else{return logger[_0x078e('0x1a')](_0x078e('0x2a'),_0x078e('0x3b'),'skebby',util[_0x078e('0x2b')](_0x119dfb,{'showHidden':![],'depth':null}));}})['catch'](function(_0x2ee093){return logger[_0x078e('0x1a')](_0x078e('0x2a'),_0x078e('0x3b'),_0x078e('0x2d'),util['inspect'](_0x2ee093,{'showHidden':![],'depth':null}));});}else{logger[_0x078e('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x078e('0x3b'),'skebby','Missing\x20parameters:\x20username,\x20password');}break;case'connectel':if(_0x1ac0b6[_0x078e('0x22')]){var _0x18acc2={'recipient':_0x455bb6[_0x078e('0x23')],'message':_0x455bb6[_0x078e('0xc')],'sender':_0x1ac0b6[_0x078e('0x3c')]||_0x1ac0b6[_0x078e('0x23')],'authorization':_0x1ac0b6[_0x078e('0x22')]};var _0x19a90f={'method':_0x078e('0x35'),'uri':_0x078e('0x3d'),'body':_0x18acc2,'json':!![]};rp(_0x19a90f)[_0x078e('0x1e')](function(_0x14b9fe){var _0x286aec={'messageId':_0x14b9fe[_0x078e('0x3e')]};if(!_0x1ac0b6[_0x078e('0x39')]){_0x286aec[_0x078e('0x3a')]=!![];}return _0x1be92d[_0x078e('0x17')](_0x286aec);})[_0x078e('0x19')](function(_0x47043d){logger['error'](_0x078e('0x2a'),'afterCreate',_0x078e('0x3f'),util[_0x078e('0x2b')](_0x47043d,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x078e('0x2a'),_0x078e('0x3b'),_0x078e('0x3f'),_0x078e('0x40'));}break;case _0x078e('0x41'):if(_0x1ac0b6[_0x078e('0x2e')]&&_0x1ac0b6[_0x078e('0x2f')]){var _0x18acc2={'messages':[{'source':_0x078e('0x42'),'to':_0x455bb6['phone'],'body':_0x455bb6['body'],'from':_0x1ac0b6[_0x078e('0x3c')]||_0x1ac0b6[_0x078e('0x23')]}]};var _0x7ac536=util[_0x078e('0x43')](_0x078e('0x44'),_0x1ac0b6[_0x078e('0x2e')],_0x1ac0b6[_0x078e('0x2f')]);var _0x19a90f={'method':_0x078e('0x35'),'uri':_0x078e('0x45'),'body':_0x18acc2,'headers':{'Authorization':util[_0x078e('0x43')]('Basic\x20%s',new Buffer(_0x7ac536)['toString'](_0x078e('0x46')))},'json':!![]};rp(_0x19a90f)[_0x078e('0x1e')](function(_0x5b46b2){if(_0x5b46b2[_0x078e('0x47')]>=0xc8&&_0x5b46b2[_0x078e('0x47')]<=0xce){if(_0x5b46b2[_0x078e('0x48')]&&_0x5b46b2['data'][_0x078e('0x49')]>0x0){var _0x15671e=_['head'](_0x5b46b2[_0x078e('0x48')][_0x078e('0x24')]);var _0x5f3922={'messageId':_0x15671e[_0x078e('0x4a')]};if(!_0x1ac0b6[_0x078e('0x39')]){_0x5f3922[_0x078e('0x3a')]=!![];}return _0x1be92d[_0x078e('0x17')](_0x5f3922);}else{logger['error'](_0x078e('0x2a'),_0x078e('0x3b'),_0x078e('0x4b'),util[_0x078e('0x2b')](_0x5b46b2,{'showHidden':![],'depth':null}));}}else{logger[_0x078e('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x078e('0x3b'),_0x078e('0x4b'),util[_0x078e('0x2b')](_0x5b46b2,{'showHidden':![],'depth':null}));}})[_0x078e('0x19')](function(_0x1b8545){logger[_0x078e('0x1a')](_0x078e('0x2a'),_0x078e('0x3b'),_0x078e('0x4b'),util[_0x078e('0x2b')](_0x1b8545,{'showHidden':![],'depth':null}));});}else{logger[_0x078e('0x1a')](_0x078e('0x2a'),'afterCreate',_0x078e('0x4b'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x078e('0x4c'):if(_0x1ac0b6[_0x078e('0x4d')]&&_0x1ac0b6[_0x078e('0x22')]){var _0x18acc2={'dst':_0x455bb6[_0x078e('0x23')],'text':_0x455bb6[_0x078e('0xc')],'src':_0x1ac0b6[_0x078e('0x3c')]||_0x1ac0b6[_0x078e('0x23')],'url':_0x1ac0b6[_0x078e('0x26')]+'/api/sms/messages/'+_0x455bb6['id']+'/status?token='+_0x1ac0b6[_0x078e('0x4e')]};var _0x7ac536=util[_0x078e('0x43')](_0x078e('0x44'),_0x1ac0b6['authId'],_0x1ac0b6[_0x078e('0x22')]);var _0x19a90f={'method':_0x078e('0x35'),'uri':util[_0x078e('0x43')](_0x078e('0x4f'),_0x1ac0b6['authId']),'body':_0x18acc2,'headers':{'Authorization':util['format']('Basic\x20%s',new Buffer(_0x7ac536)[_0x078e('0x50')](_0x078e('0x46')))},'json':!![]};rp(_0x19a90f)[_0x078e('0x1e')](function(_0x7f0f31){var _0x562e60={'messageId':_0x7f0f31[_0x078e('0x51')][0x0]};return _0x1be92d['update'](_0x562e60);})[_0x078e('0x19')](function(_0x31d0d9){logger[_0x078e('0x1a')](_0x078e('0x2a'),_0x078e('0x3b'),_0x078e('0x4c'),util[_0x078e('0x2b')](_0x31d0d9,{'showHidden':![],'depth':null}));});}else{logger[_0x078e('0x1a')](_0x078e('0x2a'),_0x078e('0x3b'),'plivo',_0x078e('0x52'));}break;case'infobip':if(_0x1ac0b6[_0x078e('0x2e')]&&_0x1ac0b6[_0x078e('0x2f')]){if(_0x1ac0b6['baseUrl']){var _0x34c24c={'method':_0x078e('0x35'),'uri':_0x1ac0b6[_0x078e('0x53')]+_0x078e('0x54'),'body':{'username':_0x1ac0b6[_0x078e('0x2e')],'password':_0x1ac0b6[_0x078e('0x2f')]},'json':!![]};return rp(_0x34c24c)[_0x078e('0x1e')](function(_0x5ea6f8){var _0xd22001={'method':_0x078e('0x35'),'uri':_0x1ac0b6[_0x078e('0x53')]+_0x078e('0x55'),'body':{'messages':[{'from':_0x1ac0b6[_0x078e('0x23')],'destinations':[{'to':_0x455bb6[_0x078e('0x23')]}],'text':_0x455bb6['body'],'notifyUrl':_0x1ac0b6[_0x078e('0x26')]+_0x078e('0x27')+_0x455bb6['id']+_0x078e('0x28')+_0x1ac0b6['token'],'notifyContentType':'application/json','callbackData':_0x1ac0b6[_0x078e('0x23')]+';'+_0x455bb6[_0x078e('0xc')]}]},'headers':{'Authorization':_0x078e('0x56')+_0x5ea6f8[_0x078e('0x4e')]},'json':!![]};return rp(_0xd22001)[_0x078e('0x1e')](function(_0x3ee7bb){if(_0x3ee7bb[_0x078e('0x24')]){var _0x22940e={'messageId':_0x3ee7bb['messages'][0x0]['messageId']};if(!_0x1ac0b6[_0x078e('0x39')]){_0x22940e[_0x078e('0x3a')]=!![];}return _0x1be92d[_0x078e('0x17')](_0x22940e);}else{return logger['error'](_0x078e('0x2a'),'afterCreate',_0x078e('0x57'),util[_0x078e('0x2b')](_0x3ee7bb,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x3027bf){return logger[_0x078e('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x078e('0x3b'),_0x078e('0x57'),util['inspect'](_0x3027bf,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x078e('0x2a'),_0x078e('0x3b'),_0x078e('0x57'),_0x078e('0x58'));}}else{logger['error'](_0x078e('0x2a'),'afterCreate',_0x078e('0x57'),_0x078e('0x59'));}break;case _0x078e('0x5a'):var _0x14ecc0=require(_0x078e('0x5b'));if(_0x1ac0b6[_0x078e('0x5c')]){var _0x458149={};_0x458149[_0x078e('0x5d')]=_0x1ac0b6[_0x078e('0x2e')];_0x458149['phone']=_0x455bb6[_0x078e('0x23')];_0x458149[_0x078e('0x31')]=_0x1ac0b6[_0x078e('0x23')];_0x458149[_0x078e('0x5e')]=_0x455bb6['body'];_0x458149['timestamp']=+new Date();var _0x190051='';var _0x13f4a9='';var _0x1d4c6b=Object[_0x078e('0x5f')](_0x458149);_0x1d4c6b[_0x078e('0x60')]();for(var _0x1994de=0x0;_0x1994de<_0x1d4c6b[_0x078e('0x61')];_0x1994de++){if(_0x190051!=''){_0x190051+='&';}_0x190051+=_0x1d4c6b[_0x1994de]+'='+encodeURIComponent(_0x458149[_0x1d4c6b[_0x1994de]]);_0x13f4a9+=_0x458149[_0x1d4c6b[_0x1994de]];}_0x13f4a9+=_0x1ac0b6[_0x078e('0x5c')];_0x13f4a9=_0x14ecc0[_0x078e('0x62')](_0x078e('0x63'))[_0x078e('0x17')](_0x13f4a9)['digest'](_0x078e('0x64'));if(_0x190051!==''){_0x190051+='&';}_0x190051+='signature='+_0x13f4a9;var _0x397bb3={'method':'GET','uri':_0x1ac0b6[_0x078e('0x53')]+_0x078e('0x65')+_0x190051,'json':!![]};return rp(_0x397bb3)['then'](function(_0x44ea5b){var _0x3a8cd6=Object['keys'](_0x44ea5b);if(_0x44ea5b[_0x3a8cd6[0x0]][_0x078e('0x1a')]&&parseInt(_0x44ea5b[_0x3a8cd6[0x0]][_0x078e('0x1a')])===0x0){var _0x1960c3={'messageId':_0x44ea5b[_0x3a8cd6[0x0]][_0x078e('0x66')]};if(!_0x1ac0b6[_0x078e('0x39')]){_0x1960c3[_0x078e('0x3a')]=!![];}return _0x1be92d[_0x078e('0x17')](_0x1960c3);}else{return logger[_0x078e('0x1a')](_0x078e('0x2a'),_0x078e('0x3b'),_0x078e('0x5a'),util[_0x078e('0x2b')](_0x44ea5b[_0x078e('0x1a')],{'showHidden':![],'depth':null}));}})[_0x078e('0x19')](function(_0x271ad5){return logger[_0x078e('0x1a')](_0x078e('0x2a'),_0x078e('0x3b'),_0x078e('0x5a'),util[_0x078e('0x2b')](_0x271ad5,{'showHidden':![],'depth':null}));});}else{logger[_0x078e('0x1a')](_0x078e('0x2a'),_0x078e('0x3b'),_0x078e('0x5a'),_0x078e('0x67'));}break;case _0x078e('0x68'):if(_0x1ac0b6[_0x078e('0x5c')]){var _0x2921f4={'method':_0x078e('0x35'),'uri':_0x078e('0x69'),'headers':{'Authorization':_0x1ac0b6[_0x078e('0x5c')]},'body':{'content':_0x455bb6[_0x078e('0xc')],'to':[_0x455bb6[_0x078e('0x23')]],'from':_0x1ac0b6[_0x078e('0x23')],'binary':![],'clientMessageId':_0x078e('0x6a'),'charset':'UTF-8'},'json':!![]};rp(_0x2921f4)['then'](function(_0x36aebf){if(!_0x36aebf['error']){var _0x3feec9={'messageId':_0x36aebf[_0x078e('0x24')][0x0][_0x078e('0x6b')]};if(!_0x1ac0b6[_0x078e('0x39')]){_0x3feec9[_0x078e('0x3a')]=!![];}return _0x1be92d[_0x078e('0x17')](_0x3feec9);}else{return logger['error'](_0x078e('0x2a'),_0x078e('0x3b'),'clickatell',util['inspect'](_0x36aebf[_0x078e('0x1a')],{'showHidden':![],'depth':null}));}})[_0x078e('0x19')](function(_0x1f5924){return logger[_0x078e('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x078e('0x68'),util[_0x078e('0x2b')](_0x1f5924,{'showHidden':![],'depth':null}));});}else{logger[_0x078e('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x078e('0x3b'),_0x078e('0x68'),_0x078e('0x67'));}break;case'intelepeer':if(_0x1ac0b6[_0x078e('0x5c')]){var _0x352d8e={};var _0x397bb3={'method':_0x078e('0x35'),'uri':_0x078e('0x6c'),'headers':{'Authorization':_0x078e('0x6d')+_0x1ac0b6[_0x078e('0x5c')],'Content-Type':_0x078e('0x6e')},'body':{'from':_0x1ac0b6[_0x078e('0x23')],'to':_0x455bb6[_0x078e('0x23')],'text':_0x455bb6['body']},'json':!![]};return rp(_0x397bb3)[_0x078e('0x1e')](function(_0x7d7a51){if(_0x7d7a51['code']==0xca){_0x352d8e['message']=_0x7d7a51;var _0x37ccf0={'method':_0x078e('0x35'),'uri':_0x078e('0x6f'),'headers':{'Authorization':'Bearer\x20'+_0x1ac0b6[_0x078e('0x5c')],'Content-Type':_0x078e('0x6e')},'body':{'refid':_0x352d8e[_0x078e('0x70')]['refid']},'json':!![]};return rp(_0x37ccf0)[_0x078e('0x1e')](function(_0x195ce3){_0x352d8e[_0x078e('0x71')]=_0x195ce3;var _0x261d76={'messageId':_0x352d8e[_0x078e('0x70')]['refid'],'read':!![]};return _0x1be92d[_0x078e('0x17')](_0x261d76);});}else{return logger[_0x078e('0x1a')](_0x078e('0x2a'),_0x078e('0x3b'),_0x078e('0x72'),util[_0x078e('0x2b')](_0x7d7a51,{'showHidden':![],'depth':null}));}})['catch'](function(_0x5a1bfd){return logger['error'](_0x078e('0x2a'),_0x078e('0x3b'),'intelepeer',util['inspect'](_0x5a1bfd,{'showHidden':![],'depth':null}));});}else{return logger[_0x078e('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x078e('0x3b'),_0x078e('0x72'),_0x078e('0x73'));}break;}}})[_0x078e('0x74')](function(){_0x1d2be1();});}else{_0x1d2be1();}}},'charset':_0x078e('0x75'),'collate':_0x078e('0x76')});};