89b2e9a0d728cc1bd25e7e2d2303e565f4698eee
[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 _0x5fa1=['finally','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./smsMessage.attributes','exports','define','SmsMessage','messageId','fti_sms_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','SmsInteraction','findOne','update','createdAt','catch','SmsAccount','find','SmsAccountId','then','type','twilio','authToken','phone','accountSid','messages','remote','/api/sms/messages/','/status?token=','sid','error','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','https://api.skebby.it/API/v1.0/REST/','username','password','smsMethod','sender','login?username=','&password=','GET','split','sms','session_key','internal_order_id','senderString','requestid','connectel','xCALLY\x20Motion','%s:%s','POST','https://rest.clicksend.com/v3/sms/send','format','Basic\x20%s','toString','base64','data','head','message_id','deliveryReport','clickSend','Missing\x20parameters:\x20username,\x20password','authId','token','message_uuid','plivo','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','read','Missing\x20parameters:\x20base_url','crypto','apiKey','timestamp','keys','sort','length','createHash','md5','hex','id_sms','csc','Missing\x20parameters:\x20apiKey','clickatell','uuid','UTF-8','apiMessageId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','message','refid'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5fa1,0x74));var _0x15fa=function(_0x280a80,_0x226d8e){_0x280a80=_0x280a80-0x0;var _0x119553=_0x5fa1[_0x280a80];return _0x119553;};'use strict';var _=require(_0x15fa('0x0'));var util=require(_0x15fa('0x1'));var logger=require(_0x15fa('0x2'))(_0x15fa('0x3'));var moment=require('moment');var BPromise=require(_0x15fa('0x4'));var rp=require(_0x15fa('0x5'));var fs=require('fs');var path=require(_0x15fa('0x6'));var rimraf=require(_0x15fa('0x7'));var config=require(_0x15fa('0x8'));var attributes=require(_0x15fa('0x9'));module[_0x15fa('0xa')]=function(_0xdb6986,_0x16bfb1){return _0xdb6986[_0x15fa('0xb')](_0x15fa('0xc'),attributes,{'tableName':'sms_messages','paranoid':![],'indexes':[{'name':'messageId','fields':[_0x15fa('0xd')]},{'name':_0x15fa('0xe'),'fields':[_0x15fa('0xf')],'type':_0x15fa('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4767fb,_0x5e35ec,_0x38a997){var _0x1a6e99=_0xdb6986[_0x15fa('0x11')];var _0x1a37ea=_0x4767fb[_0x15fa('0x12')]({'plain':!![]});if(_0x1a37ea[_0x15fa('0x13')][_0x15fa('0x14')]()==='in'||_0x1a37ea[_0x15fa('0x13')][_0x15fa('0x14')]()===_0x15fa('0x15')&&!_0x1a37ea[_0x15fa('0x16')]&&!_[_0x15fa('0x17')](_0x1a37ea[_0x15fa('0x18')])){_0x1a6e99[_0x15fa('0x19')][_0x15fa('0x1a')]({'where':{'id':_0x1a37ea['SmsInteractionId']}})['then'](function(_0x1fd61f){if(_0x1fd61f){_0x1fd61f[_0x15fa('0x1b')]({'lastMsgAt':_0x1a37ea[_0x15fa('0x1c')],'lastMsgDirection':_0x1a37ea[_0x15fa('0x13')][_0x15fa('0x14')]()});}})[_0x15fa('0x1d')](function(_0x4da26c){console['error'](_0x4da26c);});}if(_0x1a37ea[_0x15fa('0x13')]===_0x15fa('0x15')&&!_0x1a37ea[_0x15fa('0x16')]){var _0x1ee8e3;_0x1a6e99[_0x15fa('0x1e')][_0x15fa('0x1f')]({'where':{'id':_0x1a37ea[_0x15fa('0x20')]},'raw':!![]})[_0x15fa('0x21')](function(_0x3e9bfe){_0x1ee8e3=_0x3e9bfe;if(_0x1ee8e3&&_0x1ee8e3['type']){switch(_0x1ee8e3[_0x15fa('0x22')]){case _0x15fa('0x23'):var _0x310777=require(_0x15fa('0x23'));if(_0x1ee8e3['accountSid']&&_0x1ee8e3[_0x15fa('0x24')]&&_0x1ee8e3[_0x15fa('0x25')]){var _0xe69e17=new _0x310777(_0x1ee8e3[_0x15fa('0x26')],_0x1ee8e3['authToken']);_0xe69e17[_0x15fa('0x27')]['create']({'body':_0x1a37ea[_0x15fa('0xf')],'to':_0x1a37ea['phone'],'from':_0x1ee8e3[_0x15fa('0x25')],'statusCallback':_0x1ee8e3[_0x15fa('0x28')]+_0x15fa('0x29')+_0x1a37ea['id']+_0x15fa('0x2a')+_0x1ee8e3['token']})['then'](function(_0x69f7ce){if(_0x69f7ce['sid']){return _0x4767fb['update']({'messageId':_0x69f7ce[_0x15fa('0x2b')]});}})[_0x15fa('0x1d')](function(_0x515e99){logger[_0x15fa('0x2c')](_0x15fa('0x2d'),_0x15fa('0x2e'),_0x15fa('0x23'),util[_0x15fa('0x2f')](_0x515e99,{'showHidden':![],'depth':null}));});}else{logger[_0x15fa('0x2c')](_0x15fa('0x2d'),_0x15fa('0x2e'),_0x15fa('0x23'),_0x15fa('0x30'));}break;case _0x15fa('0x31'):var _0x1486e8=_0x15fa('0x32');if(_0x1ee8e3[_0x15fa('0x33')]&&_0x1ee8e3[_0x15fa('0x34')]){var _0x5694c7={'recipient':[_0x1a37ea[_0x15fa('0x25')]],'message':_0x1a37ea[_0x15fa('0xf')],'message_type':_0x1ee8e3[_0x15fa('0x35')]};if(_0x1ee8e3[_0x15fa('0x35')]&&_0x1ee8e3[_0x15fa('0x35')]!=='SI'){_0x5694c7[_0x15fa('0x36')]=_0x1ee8e3[_0x15fa('0x25')];}var _0x194a30={'url':_0x1486e8+_0x15fa('0x37')+_0x1ee8e3[_0x15fa('0x33')]+_0x15fa('0x38')+_0x1ee8e3[_0x15fa('0x34')],'method':_0x15fa('0x39')};rp(_0x194a30)['then'](function(_0x561d39){var _0x2744f9=_0x561d39[_0x15fa('0x3a')](';');var _0x2ef2c1={'user_key':_0x2744f9[0x0],'session_key':_0x2744f9[0x1]};_0x194a30={'url':_0x1486e8+_0x15fa('0x3b'),'method':'POST','headers':{'user_key':_0x2ef2c1['user_key'],'Session_key':_0x2ef2c1[_0x15fa('0x3c')]},'json':!![],'body':_0x5694c7};return rp(_0x194a30);})[_0x15fa('0x21')](function(_0x1716c0){if(_0x1716c0['total_sent']>=0x1){var _0x36ca67={'messageId':_0x1716c0[_0x15fa('0x3d')]};if(_0x1ee8e3[_0x15fa('0x35')]!=='GP'||!_0x1ee8e3['deliveryReport']){_0x36ca67['read']=!![];}return _0x4767fb[_0x15fa('0x1b')](_0x36ca67);}else{return logger[_0x15fa('0x2c')](_0x15fa('0x2d'),_0x15fa('0x2e'),_0x15fa('0x31'),util[_0x15fa('0x2f')](_0x1716c0,{'showHidden':![],'depth':null}));}})[_0x15fa('0x1d')](function(_0x4b55ac){return logger['error'](_0x15fa('0x2d'),_0x15fa('0x2e'),_0x15fa('0x31'),util[_0x15fa('0x2f')](_0x4b55ac,{'showHidden':![],'depth':null}));});}else{logger[_0x15fa('0x2c')](_0x15fa('0x2d'),'afterCreate',_0x15fa('0x31'),'Missing\x20parameters:\x20username,\x20password');}break;case'connectel':if(_0x1ee8e3[_0x15fa('0x24')]){var _0x30e1de={'recipient':_0x1a37ea[_0x15fa('0x25')],'message':_0x1a37ea[_0x15fa('0xf')],'sender':_0x1ee8e3[_0x15fa('0x3e')]||_0x1ee8e3['phone'],'authorization':_0x1ee8e3[_0x15fa('0x24')]};var _0x5e35ec={'method':'POST','uri':'https://smsapi.connectel.se/api/send/','body':_0x30e1de,'json':!![]};rp(_0x5e35ec)[_0x15fa('0x21')](function(_0x559535){var _0x2af678={'messageId':_0x559535[_0x15fa('0x3f')]};if(!_0x1ee8e3['deliveryReport']){_0x2af678['read']=!![];}return _0x4767fb[_0x15fa('0x1b')](_0x2af678);})[_0x15fa('0x1d')](function(_0x576758){logger['error'](_0x15fa('0x2d'),_0x15fa('0x2e'),_0x15fa('0x40'),util['inspect'](_0x576758,{'showHidden':![],'depth':null}));});}else{logger[_0x15fa('0x2c')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x15fa('0x2e'),_0x15fa('0x40'),'Missing\x20parameters:\x20authToken');}break;case'clicksend':if(_0x1ee8e3[_0x15fa('0x33')]&&_0x1ee8e3[_0x15fa('0x34')]){var _0x30e1de={'messages':[{'source':_0x15fa('0x41'),'to':_0x1a37ea[_0x15fa('0x25')],'body':_0x1a37ea[_0x15fa('0xf')],'from':_0x1ee8e3[_0x15fa('0x3e')]||_0x1ee8e3['phone']}]};var _0x36c60b=util['format'](_0x15fa('0x42'),_0x1ee8e3[_0x15fa('0x33')],_0x1ee8e3[_0x15fa('0x34')]);var _0x5e35ec={'method':_0x15fa('0x43'),'uri':_0x15fa('0x44'),'body':_0x30e1de,'headers':{'Authorization':util[_0x15fa('0x45')](_0x15fa('0x46'),new Buffer(_0x36c60b)[_0x15fa('0x47')](_0x15fa('0x48')))},'json':!![]};rp(_0x5e35ec)['then'](function(_0x27bace){if(_0x27bace['http_code']>=0xc8&&_0x27bace['http_code']<=0xce){if(_0x27bace[_0x15fa('0x49')]&&_0x27bace['data']['queued_count']>0x0){var _0x3cdc07=_[_0x15fa('0x4a')](_0x27bace[_0x15fa('0x49')][_0x15fa('0x27')]);var _0xa8b19d={'messageId':_0x3cdc07[_0x15fa('0x4b')]};if(!_0x1ee8e3[_0x15fa('0x4c')]){_0xa8b19d['read']=!![];}return _0x4767fb['update'](_0xa8b19d);}else{logger[_0x15fa('0x2c')](_0x15fa('0x2d'),_0x15fa('0x2e'),'clickSend',util[_0x15fa('0x2f')](_0x27bace,{'showHidden':![],'depth':null}));}}else{logger[_0x15fa('0x2c')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x15fa('0x2e'),_0x15fa('0x4d'),util[_0x15fa('0x2f')](_0x27bace,{'showHidden':![],'depth':null}));}})[_0x15fa('0x1d')](function(_0x540e36){logger[_0x15fa('0x2c')](_0x15fa('0x2d'),'afterCreate','clickSend',util[_0x15fa('0x2f')](_0x540e36,{'showHidden':![],'depth':null}));});}else{logger[_0x15fa('0x2c')](_0x15fa('0x2d'),_0x15fa('0x2e'),_0x15fa('0x4d'),_0x15fa('0x4e'));}break;case'plivo':if(_0x1ee8e3[_0x15fa('0x4f')]&&_0x1ee8e3[_0x15fa('0x24')]){var _0x30e1de={'dst':_0x1a37ea[_0x15fa('0x25')],'text':_0x1a37ea[_0x15fa('0xf')],'src':_0x1ee8e3[_0x15fa('0x3e')]||_0x1ee8e3[_0x15fa('0x25')],'url':_0x1ee8e3[_0x15fa('0x28')]+_0x15fa('0x29')+_0x1a37ea['id']+'/status?token='+_0x1ee8e3[_0x15fa('0x50')]};var _0x36c60b=util[_0x15fa('0x45')](_0x15fa('0x42'),_0x1ee8e3[_0x15fa('0x4f')],_0x1ee8e3[_0x15fa('0x24')]);var _0x5e35ec={'method':_0x15fa('0x43'),'uri':util['format']('https://api.plivo.com/v1/Account/%s/Message/',_0x1ee8e3['authId']),'body':_0x30e1de,'headers':{'Authorization':util[_0x15fa('0x45')]('Basic\x20%s',new Buffer(_0x36c60b)[_0x15fa('0x47')](_0x15fa('0x48')))},'json':!![]};rp(_0x5e35ec)['then'](function(_0x1ced9c){var _0x3ec417={'messageId':_0x1ced9c[_0x15fa('0x51')][0x0]};return _0x4767fb['update'](_0x3ec417);})[_0x15fa('0x1d')](function(_0x5ecb40){logger['error'](_0x15fa('0x2d'),'afterCreate','plivo',util[_0x15fa('0x2f')](_0x5ecb40,{'showHidden':![],'depth':null}));});}else{logger[_0x15fa('0x2c')](_0x15fa('0x2d'),_0x15fa('0x2e'),_0x15fa('0x52'),_0x15fa('0x53'));}break;case _0x15fa('0x54'):if(_0x1ee8e3[_0x15fa('0x33')]&&_0x1ee8e3[_0x15fa('0x34')]){if(_0x1ee8e3[_0x15fa('0x55')]){var _0x5ce314={'method':_0x15fa('0x43'),'uri':_0x1ee8e3[_0x15fa('0x55')]+_0x15fa('0x56'),'body':{'username':_0x1ee8e3['username'],'password':_0x1ee8e3[_0x15fa('0x34')]},'json':!![]};return rp(_0x5ce314)[_0x15fa('0x21')](function(_0x5bba14){var _0x2169fe={'method':_0x15fa('0x43'),'uri':_0x1ee8e3['baseUrl']+_0x15fa('0x57'),'body':{'messages':[{'from':_0x1ee8e3[_0x15fa('0x25')],'destinations':[{'to':_0x1a37ea['phone']}],'text':_0x1a37ea[_0x15fa('0xf')],'notifyUrl':_0x1ee8e3[_0x15fa('0x28')]+'/api/sms/messages/'+_0x1a37ea['id']+_0x15fa('0x2a')+_0x1ee8e3[_0x15fa('0x50')],'notifyContentType':_0x15fa('0x58'),'callbackData':_0x1ee8e3[_0x15fa('0x25')]+';'+_0x1a37ea[_0x15fa('0xf')]}]},'headers':{'Authorization':'IBSSO\x20'+_0x5bba14[_0x15fa('0x50')]},'json':!![]};return rp(_0x2169fe)['then'](function(_0x48da50){if(_0x48da50[_0x15fa('0x27')]){var _0x51a29d={'messageId':_0x48da50[_0x15fa('0x27')][0x0][_0x15fa('0xd')]};if(!_0x1ee8e3['deliveryReport']){_0x51a29d[_0x15fa('0x59')]=!![];}return _0x4767fb[_0x15fa('0x1b')](_0x51a29d);}else{return logger[_0x15fa('0x2c')](_0x15fa('0x2d'),'afterCreate',_0x15fa('0x54'),util[_0x15fa('0x2f')](_0x48da50,{'showHidden':![],'depth':null}));}});})[_0x15fa('0x1d')](function(_0x2e1bcf){return logger[_0x15fa('0x2c')](_0x15fa('0x2d'),'afterCreate',_0x15fa('0x54'),util['inspect'](_0x2e1bcf,{'showHidden':![],'depth':null}));});}else{logger[_0x15fa('0x2c')](_0x15fa('0x2d'),_0x15fa('0x2e'),_0x15fa('0x54'),_0x15fa('0x5a'));}}else{logger[_0x15fa('0x2c')](_0x15fa('0x2d'),_0x15fa('0x2e'),_0x15fa('0x54'),_0x15fa('0x4e'));}break;case'csc':var _0x41c0bd=require(_0x15fa('0x5b'));if(_0x1ee8e3[_0x15fa('0x5c')]){var _0x451356={};_0x451356['login']=_0x1ee8e3[_0x15fa('0x33')];_0x451356['phone']=_0x1a37ea[_0x15fa('0x25')];_0x451356[_0x15fa('0x36')]=_0x1ee8e3[_0x15fa('0x25')];_0x451356['text']=_0x1a37ea[_0x15fa('0xf')];_0x451356[_0x15fa('0x5d')]=+new Date();var _0x93b9d='';var _0x13dfc2='';var _0x20ef37=Object[_0x15fa('0x5e')](_0x451356);_0x20ef37[_0x15fa('0x5f')]();for(var _0x57b916=0x0;_0x57b916<_0x20ef37[_0x15fa('0x60')];_0x57b916++){if(_0x93b9d!=''){_0x93b9d+='&';}_0x93b9d+=_0x20ef37[_0x57b916]+'='+encodeURIComponent(_0x451356[_0x20ef37[_0x57b916]]);_0x13dfc2+=_0x451356[_0x20ef37[_0x57b916]];}_0x13dfc2+=_0x1ee8e3[_0x15fa('0x5c')];_0x13dfc2=_0x41c0bd[_0x15fa('0x61')](_0x15fa('0x62'))['update'](_0x13dfc2)['digest'](_0x15fa('0x63'));if(_0x93b9d!==''){_0x93b9d+='&';}_0x93b9d+='signature='+_0x13dfc2;var _0x194a30={'method':_0x15fa('0x39'),'uri':_0x1ee8e3[_0x15fa('0x55')]+'/external/get/send.php?'+_0x93b9d,'json':!![]};return rp(_0x194a30)[_0x15fa('0x21')](function(_0x1358ac){var _0x1cbb2b=Object[_0x15fa('0x5e')](_0x1358ac);if(_0x1358ac[_0x1cbb2b[0x0]][_0x15fa('0x2c')]&&parseInt(_0x1358ac[_0x1cbb2b[0x0]][_0x15fa('0x2c')])===0x0){var _0x115677={'messageId':_0x1358ac[_0x1cbb2b[0x0]][_0x15fa('0x64')]};if(!_0x1ee8e3['deliveryReport']){_0x115677[_0x15fa('0x59')]=!![];}return _0x4767fb[_0x15fa('0x1b')](_0x115677);}else{return logger[_0x15fa('0x2c')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x15fa('0x65'),util[_0x15fa('0x2f')](_0x1358ac[_0x15fa('0x2c')],{'showHidden':![],'depth':null}));}})[_0x15fa('0x1d')](function(_0x4d3cda){return logger[_0x15fa('0x2c')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x15fa('0x65'),util[_0x15fa('0x2f')](_0x4d3cda,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x15fa('0x2d'),_0x15fa('0x2e'),_0x15fa('0x65'),_0x15fa('0x66'));}break;case _0x15fa('0x67'):if(_0x1ee8e3['apiKey']){var _0x2eb597={'method':'POST','uri':'https://platform.clickatell.com/messages','headers':{'Authorization':_0x1ee8e3[_0x15fa('0x5c')]},'body':{'content':_0x1a37ea[_0x15fa('0xf')],'to':[_0x1a37ea[_0x15fa('0x25')]],'from':_0x1ee8e3['phone'],'binary':![],'clientMessageId':_0x15fa('0x68'),'charset':_0x15fa('0x69')},'json':!![]};rp(_0x2eb597)[_0x15fa('0x21')](function(_0x35df3c){if(!_0x35df3c[_0x15fa('0x2c')]){var _0x355a3c={'messageId':_0x35df3c[_0x15fa('0x27')][0x0][_0x15fa('0x6a')]};if(!_0x1ee8e3[_0x15fa('0x4c')]){_0x355a3c[_0x15fa('0x59')]=!![];}return _0x4767fb[_0x15fa('0x1b')](_0x355a3c);}else{return logger[_0x15fa('0x2c')](_0x15fa('0x2d'),_0x15fa('0x2e'),_0x15fa('0x67'),util['inspect'](_0x35df3c[_0x15fa('0x2c')],{'showHidden':![],'depth':null}));}})[_0x15fa('0x1d')](function(_0x537418){return logger['error'](_0x15fa('0x2d'),'afterCreate','clickatell',util[_0x15fa('0x2f')](_0x537418,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x15fa('0x2d'),'afterCreate','clickatell',_0x15fa('0x66'));}break;case _0x15fa('0x6b'):if(_0x1ee8e3['apiKey']){var _0x989702={};var _0x194a30={'method':'POST','uri':_0x15fa('0x6c'),'headers':{'Authorization':_0x15fa('0x6d')+_0x1ee8e3[_0x15fa('0x5c')],'Content-Type':'application/json'},'body':{'from':_0x1ee8e3['phone'],'to':_0x1a37ea[_0x15fa('0x25')],'text':_0x1a37ea[_0x15fa('0xf')]},'json':!![]};return rp(_0x194a30)[_0x15fa('0x21')](function(_0x11367b){if(_0x11367b['code']==0xca){_0x989702[_0x15fa('0x6e')]=_0x11367b;var _0x2afad2={'method':'POST','uri':'https://api.intelepeer.com/_rest/v4/app/sms/mdr','headers':{'Authorization':_0x15fa('0x6d')+_0x1ee8e3[_0x15fa('0x5c')],'Content-Type':_0x15fa('0x58')},'body':{'refid':_0x989702['message'][_0x15fa('0x6f')]},'json':!![]};return rp(_0x2afad2)['then'](function(_0x14bb24){_0x989702['status']=_0x14bb24;var _0x216726={'messageId':_0x989702[_0x15fa('0x6e')][_0x15fa('0x6f')],'read':!![]};return _0x4767fb[_0x15fa('0x1b')](_0x216726);});}else{return logger[_0x15fa('0x2c')](_0x15fa('0x2d'),_0x15fa('0x2e'),'intelepeer',util['inspect'](_0x11367b,{'showHidden':![],'depth':null}));}})[_0x15fa('0x1d')](function(_0x24b554){return logger[_0x15fa('0x2c')](_0x15fa('0x2d'),_0x15fa('0x2e'),_0x15fa('0x6b'),util['inspect'](_0x24b554,{'showHidden':![],'depth':null}));});}else{return logger[_0x15fa('0x2c')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x15fa('0x2e'),'intelepeer','Token\x20not\x20received');}break;}}})[_0x15fa('0x70')](function(){_0x38a997();});}else{_0x38a997();}}},'charset':'utf8mb4','collate':_0x15fa('0x71')});};