9757df3086ce72d1d676a798ae26ae60764ddd65
[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 _0x75ed=['../../config/environment','./smsMessage.attributes','exports','SmsMessage','messageId','body','models','get','direction','toLowerCase','out','secret','isNil','findOne','SmsInteractionId','update','catch','error','find','SmsAccountId','then','type','twilio','accountSid','authToken','phone','messages','create','remote','/api/sms/messages/','/status?token=','token','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','https://api.skebby.it/API/v1.0/REST/','password','smsMethod','sender','login?username=','username','sms','POST','user_key','session_key','total_sent','internal_order_id','deliveryReport','read','skebby','Missing\x20parameters:\x20username,\x20password','connectel','https://smsapi.connectel.se/api/send/','requestid','clicksend','senderString','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','http_code','queued_count','head','data','clickSend','plivo','authId','https://api.plivo.com/v1/Account/%s/Message/','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','IBSSO\x20','crypto','apiKey','login','text','sort','length','createHash','md5','digest','signature=','GET','/external/get/send.php?','id_sms','csc','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','intelepeer','Bearer\x20','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','status','refid','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','request-promise','path'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x75ed,0xdb));var _0xd75e=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x75ed[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xd75e('0x0'));var util=require(_0xd75e('0x1'));var logger=require(_0xd75e('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xd75e('0x3'));var fs=require('fs');var path=require(_0xd75e('0x4'));var rimraf=require('rimraf');var config=require(_0xd75e('0x5'));var attributes=require(_0xd75e('0x6'));module[_0xd75e('0x7')]=function(_0x1034a9,_0x1e7de3){return _0x1034a9['define'](_0xd75e('0x8'),attributes,{'tableName':'sms_messages','paranoid':![],'indexes':[{'name':_0xd75e('0x9'),'fields':['messageId']},{'name':'fti_sms_messages','fields':[_0xd75e('0xa')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5386ad,_0x352579,_0x5f5787){var _0x543fc6=_0x1034a9[_0xd75e('0xb')];var _0x1ff790=_0x5386ad[_0xd75e('0xc')]({'plain':!![]});if(_0x1ff790[_0xd75e('0xd')][_0xd75e('0xe')]()==='in'||_0x1ff790['direction'][_0xd75e('0xe')]()===_0xd75e('0xf')&&!_0x1ff790[_0xd75e('0x10')]&&!_[_0xd75e('0x11')](_0x1ff790['UserId'])){_0x543fc6['SmsInteraction'][_0xd75e('0x12')]({'where':{'id':_0x1ff790[_0xd75e('0x13')]}})['then'](function(_0x1ba2d8){if(_0x1ba2d8){_0x1ba2d8[_0xd75e('0x14')]({'lastMsgAt':_0x1ff790['createdAt'],'lastMsgDirection':_0x1ff790[_0xd75e('0xd')][_0xd75e('0xe')]()});}})[_0xd75e('0x15')](function(_0xa5d00d){console[_0xd75e('0x16')](_0xa5d00d);});}if(_0x1ff790[_0xd75e('0xd')]==='out'&&!_0x1ff790[_0xd75e('0x10')]){var _0x4ee446;_0x543fc6['SmsAccount'][_0xd75e('0x17')]({'where':{'id':_0x1ff790[_0xd75e('0x18')]},'raw':!![]})[_0xd75e('0x19')](function(_0x48abcc){_0x4ee446=_0x48abcc;if(_0x4ee446&&_0x4ee446[_0xd75e('0x1a')]){switch(_0x4ee446[_0xd75e('0x1a')]){case _0xd75e('0x1b'):var _0x5475e6=require(_0xd75e('0x1b'));if(_0x4ee446[_0xd75e('0x1c')]&&_0x4ee446[_0xd75e('0x1d')]&&_0x4ee446[_0xd75e('0x1e')]){var _0x272e81=new _0x5475e6(_0x4ee446['accountSid'],_0x4ee446[_0xd75e('0x1d')]);_0x272e81[_0xd75e('0x1f')][_0xd75e('0x20')]({'body':_0x1ff790[_0xd75e('0xa')],'to':_0x1ff790['phone'],'from':_0x4ee446[_0xd75e('0x1e')],'statusCallback':_0x4ee446[_0xd75e('0x21')]+_0xd75e('0x22')+_0x1ff790['id']+_0xd75e('0x23')+_0x4ee446[_0xd75e('0x24')]})[_0xd75e('0x19')](function(_0x3e6b69){if(_0x3e6b69[_0xd75e('0x25')]){return _0x5386ad['update']({'messageId':_0x3e6b69['sid']});}})[_0xd75e('0x15')](function(_0x183d9d){logger['error'](_0xd75e('0x26'),_0xd75e('0x27'),_0xd75e('0x1b'),util[_0xd75e('0x28')](_0x183d9d,{'showHidden':![],'depth':null}));});}else{logger[_0xd75e('0x16')](_0xd75e('0x26'),'afterCreate',_0xd75e('0x1b'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case'skebby':var _0x50bdc3=_0xd75e('0x29');if(_0x4ee446['username']&&_0x4ee446[_0xd75e('0x2a')]){var _0x31e75b={'recipient':[_0x1ff790[_0xd75e('0x1e')]],'message':_0x1ff790['body'],'message_type':_0x4ee446[_0xd75e('0x2b')]};if(_0x4ee446[_0xd75e('0x2b')]&&_0x4ee446[_0xd75e('0x2b')]!=='SI'){_0x31e75b[_0xd75e('0x2c')]=_0x4ee446['phone'];}var _0xa2e8be={'url':_0x50bdc3+_0xd75e('0x2d')+_0x4ee446[_0xd75e('0x2e')]+'&password='+_0x4ee446[_0xd75e('0x2a')],'method':'GET'};rp(_0xa2e8be)['then'](function(_0x72dbe){var _0x36d8ad=_0x72dbe['split'](';');var _0x1fd85f={'user_key':_0x36d8ad[0x0],'session_key':_0x36d8ad[0x1]};_0xa2e8be={'url':_0x50bdc3+_0xd75e('0x2f'),'method':_0xd75e('0x30'),'headers':{'user_key':_0x1fd85f[_0xd75e('0x31')],'Session_key':_0x1fd85f[_0xd75e('0x32')]},'json':!![],'body':_0x31e75b};return rp(_0xa2e8be);})[_0xd75e('0x19')](function(_0x355e84){if(_0x355e84[_0xd75e('0x33')]>=0x1){var _0x379192={'messageId':_0x355e84[_0xd75e('0x34')]};if(_0x4ee446[_0xd75e('0x2b')]!=='GP'||!_0x4ee446[_0xd75e('0x35')]){_0x379192[_0xd75e('0x36')]=!![];}return _0x5386ad['update'](_0x379192);}else{return logger[_0xd75e('0x16')](_0xd75e('0x26'),_0xd75e('0x27'),_0xd75e('0x37'),util[_0xd75e('0x28')](_0x355e84,{'showHidden':![],'depth':null}));}})[_0xd75e('0x15')](function(_0x44f18f){return logger[_0xd75e('0x16')](_0xd75e('0x26'),_0xd75e('0x27'),_0xd75e('0x37'),util[_0xd75e('0x28')](_0x44f18f,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xd75e('0x26'),_0xd75e('0x27'),_0xd75e('0x37'),_0xd75e('0x38'));}break;case _0xd75e('0x39'):if(_0x4ee446[_0xd75e('0x1d')]){var _0x190f8d={'recipient':_0x1ff790[_0xd75e('0x1e')],'message':_0x1ff790[_0xd75e('0xa')],'sender':_0x4ee446['senderString']||_0x4ee446['phone'],'authorization':_0x4ee446[_0xd75e('0x1d')]};var _0x352579={'method':_0xd75e('0x30'),'uri':_0xd75e('0x3a'),'body':_0x190f8d,'json':!![]};rp(_0x352579)['then'](function(_0x3983d2){var _0x1871a0={'messageId':_0x3983d2[_0xd75e('0x3b')]};if(!_0x4ee446['deliveryReport']){_0x1871a0[_0xd75e('0x36')]=!![];}return _0x5386ad[_0xd75e('0x14')](_0x1871a0);})[_0xd75e('0x15')](function(_0x463049){logger[_0xd75e('0x16')](_0xd75e('0x26'),'afterCreate',_0xd75e('0x39'),util['inspect'](_0x463049,{'showHidden':![],'depth':null}));});}else{logger[_0xd75e('0x16')](_0xd75e('0x26'),'afterCreate','connectel','Missing\x20parameters:\x20authToken');}break;case _0xd75e('0x3c'):if(_0x4ee446[_0xd75e('0x2e')]&&_0x4ee446['password']){var _0x190f8d={'messages':[{'source':'xCALLY\x20Motion','to':_0x1ff790[_0xd75e('0x1e')],'body':_0x1ff790[_0xd75e('0xa')],'from':_0x4ee446[_0xd75e('0x3d')]||_0x4ee446[_0xd75e('0x1e')]}]};var _0xf5bfaf=util[_0xd75e('0x3e')](_0xd75e('0x3f'),_0x4ee446[_0xd75e('0x2e')],_0x4ee446[_0xd75e('0x2a')]);var _0x352579={'method':'POST','uri':_0xd75e('0x40'),'body':_0x190f8d,'headers':{'Authorization':util['format'](_0xd75e('0x41'),new Buffer(_0xf5bfaf)[_0xd75e('0x42')](_0xd75e('0x43')))},'json':!![]};rp(_0x352579)['then'](function(_0x24144a){if(_0x24144a['http_code']>=0xc8&&_0x24144a[_0xd75e('0x44')]<=0xce){if(_0x24144a['data']&&_0x24144a['data'][_0xd75e('0x45')]>0x0){var _0x2483d6=_[_0xd75e('0x46')](_0x24144a[_0xd75e('0x47')][_0xd75e('0x1f')]);var _0x5c2de9={'messageId':_0x2483d6['message_id']};if(!_0x4ee446[_0xd75e('0x35')]){_0x5c2de9[_0xd75e('0x36')]=!![];}return _0x5386ad[_0xd75e('0x14')](_0x5c2de9);}else{logger[_0xd75e('0x16')](_0xd75e('0x26'),_0xd75e('0x27'),'clickSend',util[_0xd75e('0x28')](_0x24144a,{'showHidden':![],'depth':null}));}}else{logger[_0xd75e('0x16')](_0xd75e('0x26'),_0xd75e('0x27'),_0xd75e('0x48'),util[_0xd75e('0x28')](_0x24144a,{'showHidden':![],'depth':null}));}})[_0xd75e('0x15')](function(_0x157910){logger[_0xd75e('0x16')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd75e('0x27'),_0xd75e('0x48'),util[_0xd75e('0x28')](_0x157910,{'showHidden':![],'depth':null}));});}else{logger[_0xd75e('0x16')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd75e('0x27'),_0xd75e('0x48'),_0xd75e('0x38'));}break;case _0xd75e('0x49'):if(_0x4ee446[_0xd75e('0x4a')]&&_0x4ee446[_0xd75e('0x1d')]){var _0x190f8d={'dst':_0x1ff790[_0xd75e('0x1e')],'text':_0x1ff790[_0xd75e('0xa')],'src':_0x4ee446[_0xd75e('0x3d')]||_0x4ee446['phone'],'url':_0x4ee446[_0xd75e('0x21')]+_0xd75e('0x22')+_0x1ff790['id']+'/status?token='+_0x4ee446['token']};var _0xf5bfaf=util[_0xd75e('0x3e')](_0xd75e('0x3f'),_0x4ee446[_0xd75e('0x4a')],_0x4ee446[_0xd75e('0x1d')]);var _0x352579={'method':_0xd75e('0x30'),'uri':util[_0xd75e('0x3e')](_0xd75e('0x4b'),_0x4ee446[_0xd75e('0x4a')]),'body':_0x190f8d,'headers':{'Authorization':util[_0xd75e('0x3e')](_0xd75e('0x41'),new Buffer(_0xf5bfaf)['toString'](_0xd75e('0x43')))},'json':!![]};rp(_0x352579)[_0xd75e('0x19')](function(_0x4c4c8c){var _0x368d1c={'messageId':_0x4c4c8c['message_uuid'][0x0]};return _0x5386ad['update'](_0x368d1c);})[_0xd75e('0x15')](function(_0x13ff86){logger[_0xd75e('0x16')](_0xd75e('0x26'),'afterCreate',_0xd75e('0x49'),util[_0xd75e('0x28')](_0x13ff86,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd75e('0x27'),_0xd75e('0x49'),_0xd75e('0x4c'));}break;case _0xd75e('0x4d'):if(_0x4ee446[_0xd75e('0x2e')]&&_0x4ee446[_0xd75e('0x2a')]){if(_0x4ee446[_0xd75e('0x4e')]){var _0x41aeb6={'method':_0xd75e('0x30'),'uri':_0x4ee446[_0xd75e('0x4e')]+_0xd75e('0x4f'),'body':{'username':_0x4ee446[_0xd75e('0x2e')],'password':_0x4ee446['password']},'json':!![]};return rp(_0x41aeb6)[_0xd75e('0x19')](function(_0x513597){var _0x4ca955={'method':_0xd75e('0x30'),'uri':_0x4ee446[_0xd75e('0x4e')]+_0xd75e('0x50'),'body':{'messages':[{'from':_0x4ee446[_0xd75e('0x1e')],'destinations':[{'to':_0x1ff790['phone']}],'text':_0x1ff790[_0xd75e('0xa')],'notifyUrl':_0x4ee446['remote']+'/api/sms/messages/'+_0x1ff790['id']+_0xd75e('0x23')+_0x4ee446['token'],'notifyContentType':_0xd75e('0x51'),'callbackData':_0x4ee446[_0xd75e('0x1e')]+';'+_0x1ff790['body']}]},'headers':{'Authorization':_0xd75e('0x52')+_0x513597[_0xd75e('0x24')]},'json':!![]};return rp(_0x4ca955)[_0xd75e('0x19')](function(_0x8fdf29){if(_0x8fdf29['messages']){var _0x3a6ef1={'messageId':_0x8fdf29['messages'][0x0][_0xd75e('0x9')]};if(!_0x4ee446[_0xd75e('0x35')]){_0x3a6ef1['read']=!![];}return _0x5386ad['update'](_0x3a6ef1);}else{return logger[_0xd75e('0x16')](_0xd75e('0x26'),_0xd75e('0x27'),_0xd75e('0x4d'),util[_0xd75e('0x28')](_0x8fdf29,{'showHidden':![],'depth':null}));}});})[_0xd75e('0x15')](function(_0x5e65cb){return logger[_0xd75e('0x16')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd75e('0x27'),_0xd75e('0x4d'),util[_0xd75e('0x28')](_0x5e65cb,{'showHidden':![],'depth':null}));});}else{logger[_0xd75e('0x16')](_0xd75e('0x26'),_0xd75e('0x27'),'infobip','Missing\x20parameters:\x20base_url');}}else{logger[_0xd75e('0x16')](_0xd75e('0x26'),_0xd75e('0x27'),_0xd75e('0x4d'),'Missing\x20parameters:\x20username,\x20password');}break;case'csc':var _0x257696=require(_0xd75e('0x53'));if(_0x4ee446[_0xd75e('0x54')]){var _0x4360f4={};_0x4360f4[_0xd75e('0x55')]=_0x4ee446[_0xd75e('0x2e')];_0x4360f4[_0xd75e('0x1e')]=_0x1ff790['phone'];_0x4360f4[_0xd75e('0x2c')]=_0x4ee446['phone'];_0x4360f4[_0xd75e('0x56')]=_0x1ff790[_0xd75e('0xa')];_0x4360f4['timestamp']=+new Date();var _0x5af277='';var _0x2092b8='';var _0x507a56=Object['keys'](_0x4360f4);_0x507a56[_0xd75e('0x57')]();for(var _0x419d89=0x0;_0x419d89<_0x507a56[_0xd75e('0x58')];_0x419d89++){if(_0x5af277!=''){_0x5af277+='&';}_0x5af277+=_0x507a56[_0x419d89]+'='+encodeURIComponent(_0x4360f4[_0x507a56[_0x419d89]]);_0x2092b8+=_0x4360f4[_0x507a56[_0x419d89]];}_0x2092b8+=_0x4ee446['apiKey'];_0x2092b8=_0x257696[_0xd75e('0x59')](_0xd75e('0x5a'))[_0xd75e('0x14')](_0x2092b8)[_0xd75e('0x5b')]('hex');if(_0x5af277!==''){_0x5af277+='&';}_0x5af277+=_0xd75e('0x5c')+_0x2092b8;var _0xa2e8be={'method':_0xd75e('0x5d'),'uri':_0x4ee446['baseUrl']+_0xd75e('0x5e')+_0x5af277,'json':!![]};return rp(_0xa2e8be)[_0xd75e('0x19')](function(_0x8fa20f){var _0x1241c7=Object['keys'](_0x8fa20f);if(_0x8fa20f[_0x1241c7[0x0]][_0xd75e('0x16')]&&parseInt(_0x8fa20f[_0x1241c7[0x0]]['error'])===0x0){var _0x355dea={'messageId':_0x8fa20f[_0x1241c7[0x0]][_0xd75e('0x5f')]};if(!_0x4ee446['deliveryReport']){_0x355dea[_0xd75e('0x36')]=!![];}return _0x5386ad[_0xd75e('0x14')](_0x355dea);}else{return logger['error'](_0xd75e('0x26'),_0xd75e('0x27'),'csc',util[_0xd75e('0x28')](_0x8fa20f[_0xd75e('0x16')],{'showHidden':![],'depth':null}));}})[_0xd75e('0x15')](function(_0x549d12){return logger[_0xd75e('0x16')](_0xd75e('0x26'),_0xd75e('0x27'),_0xd75e('0x60'),util['inspect'](_0x549d12,{'showHidden':![],'depth':null}));});}else{logger[_0xd75e('0x16')](_0xd75e('0x26'),_0xd75e('0x27'),_0xd75e('0x60'),_0xd75e('0x61'));}break;case _0xd75e('0x62'):if(_0x4ee446[_0xd75e('0x54')]){var _0x35e847={'method':_0xd75e('0x30'),'uri':_0xd75e('0x63'),'headers':{'Authorization':_0x4ee446[_0xd75e('0x54')]},'body':{'content':_0x1ff790[_0xd75e('0xa')],'to':[_0x1ff790[_0xd75e('0x1e')]],'from':_0x4ee446['phone'],'binary':![],'clientMessageId':_0xd75e('0x64'),'charset':_0xd75e('0x65')},'json':!![]};rp(_0x35e847)[_0xd75e('0x19')](function(_0x209272){if(!_0x209272[_0xd75e('0x16')]){var _0x88fefa={'messageId':_0x209272['messages'][0x0]['apiMessageId']};if(!_0x4ee446[_0xd75e('0x35')]){_0x88fefa[_0xd75e('0x36')]=!![];}return _0x5386ad[_0xd75e('0x14')](_0x88fefa);}else{return logger[_0xd75e('0x16')](_0xd75e('0x26'),_0xd75e('0x27'),_0xd75e('0x62'),util[_0xd75e('0x28')](_0x209272['error'],{'showHidden':![],'depth':null}));}})[_0xd75e('0x15')](function(_0x3ffba2){return logger['error'](_0xd75e('0x26'),_0xd75e('0x27'),_0xd75e('0x62'),util[_0xd75e('0x28')](_0x3ffba2,{'showHidden':![],'depth':null}));});}else{logger[_0xd75e('0x16')](_0xd75e('0x26'),_0xd75e('0x27'),'clickatell',_0xd75e('0x61'));}break;case _0xd75e('0x66'):if(_0x4ee446[_0xd75e('0x54')]){var _0x4476f1={};var _0xa2e8be={'method':_0xd75e('0x30'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/send','headers':{'Authorization':_0xd75e('0x67')+_0x4ee446[_0xd75e('0x54')],'Content-Type':_0xd75e('0x51')},'body':{'from':_0x4ee446[_0xd75e('0x1e')],'to':_0x1ff790[_0xd75e('0x1e')],'text':_0x1ff790[_0xd75e('0xa')]},'json':!![]};return rp(_0xa2e8be)[_0xd75e('0x19')](function(_0x5eafaf){if(_0x5eafaf['code']==0xca){_0x4476f1[_0xd75e('0x68')]=_0x5eafaf;var _0x139fc8={'method':'POST','uri':_0xd75e('0x69'),'headers':{'Authorization':_0xd75e('0x67')+_0x4ee446[_0xd75e('0x54')],'Content-Type':'application/json'},'body':{'refid':_0x4476f1[_0xd75e('0x68')]['refid']},'json':!![]};return rp(_0x139fc8)['then'](function(_0x100009){_0x4476f1[_0xd75e('0x6a')]=_0x100009;var _0x6ff170={'messageId':_0x4476f1[_0xd75e('0x68')][_0xd75e('0x6b')],'read':!![]};return _0x5386ad['update'](_0x6ff170);});}else{return logger[_0xd75e('0x16')](_0xd75e('0x26'),_0xd75e('0x27'),_0xd75e('0x66'),util['inspect'](_0x5eafaf,{'showHidden':![],'depth':null}));}})[_0xd75e('0x15')](function(_0x47db1b){return logger[_0xd75e('0x16')](_0xd75e('0x26'),_0xd75e('0x27'),_0xd75e('0x66'),util[_0xd75e('0x28')](_0x47db1b,{'showHidden':![],'depth':null}));});}else{return logger[_0xd75e('0x16')](_0xd75e('0x26'),_0xd75e('0x27'),_0xd75e('0x66'),_0xd75e('0x6c'));}break;}}})[_0xd75e('0x6d')](function(){_0x5f5787();});}else{_0x5f5787();}}},'charset':_0xd75e('0x6e'),'collate':_0xd75e('0x6f')});};