Built motion from commit (unavailable).|2.4.20
[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 _0xd56e=['queued_count','head','data','message_id','deliveryReport','clickSend','Missing\x20parameters:\x20username,\x20password','plivo','authId','/api/sms/messages/','token','https://api.plivo.com/v1/Account/%s/Message/','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','Missing\x20parameters:\x20base_url','csc','apiKey','login','timestamp','keys','length','createHash','md5','digest','hex','id_sms','Missing\x20parameters:\x20apiKey','https://platform.clickatell.com/messages','UTF-8','clickatell','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','application/json','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','status','Token\x20not\x20received','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./smsMessage.attributes','exports','define','messageId','models','get','direction','toLowerCase','out','isNil','UserId','findOne','then','createdAt','catch','error','secret','SmsAccount','find','SmsAccountId','type','twilio','authToken','phone','messages','body','remote','/status?token=','sid','update','SmsMessage,\x20%s,\x20%s,\x20%s','inspect','afterCreate','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','username','password','smsMethod','sender','GET','split','POST','user_key','total_sent','read','senderString','https://smsapi.connectel.se/api/send/','requestid','connectel','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','format','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','http_code'];(function(_0x36a825,_0xad02ec){var _0xe6dce1=function(_0x25832e){while(--_0x25832e){_0x36a825['push'](_0x36a825['shift']());}};_0xe6dce1(++_0xad02ec);}(_0xd56e,0x1e9));var _0xed56=function(_0x5441ab,_0x1b4d07){_0x5441ab=_0x5441ab-0x0;var _0x3acae8=_0xd56e[_0x5441ab];return _0x3acae8;};'use strict';var _=require(_0xed56('0x0'));var util=require(_0xed56('0x1'));var logger=require(_0xed56('0x2'))('api');var moment=require(_0xed56('0x3'));var BPromise=require(_0xed56('0x4'));var rp=require(_0xed56('0x5'));var fs=require('fs');var path=require(_0xed56('0x6'));var rimraf=require('rimraf');var config=require(_0xed56('0x7'));var attributes=require(_0xed56('0x8'));module[_0xed56('0x9')]=function(_0xd17182,_0x38cde7){return _0xd17182[_0xed56('0xa')]('SmsMessage',attributes,{'tableName':'sms_messages','paranoid':![],'indexes':[{'name':_0xed56('0xb'),'fields':['messageId']},{'name':'fti_sms_messages','fields':['body'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x47feb4,_0x62d35e,_0x44b1b5){var _0x147af1=_0xd17182[_0xed56('0xc')];var _0x32d520=_0x47feb4[_0xed56('0xd')]({'plain':!![]});if(_0x32d520[_0xed56('0xe')][_0xed56('0xf')]()==='in'||_0x32d520[_0xed56('0xe')]['toLowerCase']()===_0xed56('0x10')&&!_0x32d520['secret']&&!_[_0xed56('0x11')](_0x32d520[_0xed56('0x12')])){_0x147af1['SmsInteraction'][_0xed56('0x13')]({'where':{'id':_0x32d520['SmsInteractionId']}})[_0xed56('0x14')](function(_0x570893){if(_0x570893){_0x570893['update']({'lastMsgAt':_0x32d520[_0xed56('0x15')],'lastMsgDirection':_0x32d520[_0xed56('0xe')]['toLowerCase']()});}})[_0xed56('0x16')](function(_0x51dac9){console[_0xed56('0x17')](_0x51dac9);});}if(_0x32d520['direction']===_0xed56('0x10')&&!_0x32d520[_0xed56('0x18')]){var _0x209ee2;_0x147af1[_0xed56('0x19')][_0xed56('0x1a')]({'where':{'id':_0x32d520[_0xed56('0x1b')]},'raw':!![]})[_0xed56('0x14')](function(_0x1ea0f2){_0x209ee2=_0x1ea0f2;if(_0x209ee2&&_0x209ee2[_0xed56('0x1c')]){switch(_0x209ee2['type']){case'twilio':var _0x434fdc=require(_0xed56('0x1d'));if(_0x209ee2['accountSid']&&_0x209ee2[_0xed56('0x1e')]&&_0x209ee2[_0xed56('0x1f')]){var _0x5a909c=new _0x434fdc(_0x209ee2['accountSid'],_0x209ee2[_0xed56('0x1e')]);_0x5a909c[_0xed56('0x20')]['create']({'body':_0x32d520[_0xed56('0x21')],'to':_0x32d520[_0xed56('0x1f')],'from':_0x209ee2[_0xed56('0x1f')],'statusCallback':_0x209ee2[_0xed56('0x22')]+'/api/sms/messages/'+_0x32d520['id']+_0xed56('0x23')+_0x209ee2['token']})[_0xed56('0x14')](function(_0x380c4a){if(_0x380c4a[_0xed56('0x24')]){return _0x47feb4[_0xed56('0x25')]({'messageId':_0x380c4a[_0xed56('0x24')]});}})[_0xed56('0x16')](function(_0x15de18){logger[_0xed56('0x17')](_0xed56('0x26'),'afterCreate',_0xed56('0x1d'),util[_0xed56('0x27')](_0x15de18,{'showHidden':![],'depth':null}));});}else{logger[_0xed56('0x17')](_0xed56('0x26'),_0xed56('0x28'),_0xed56('0x1d'),_0xed56('0x29'));}break;case _0xed56('0x2a'):var _0x5abfba='https://api.skebby.it/API/v1.0/REST/';if(_0x209ee2[_0xed56('0x2b')]&&_0x209ee2[_0xed56('0x2c')]){var _0x102da2={'recipient':[_0x32d520[_0xed56('0x1f')]],'message':_0x32d520[_0xed56('0x21')],'message_type':_0x209ee2[_0xed56('0x2d')]};if(_0x209ee2[_0xed56('0x2d')]&&_0x209ee2[_0xed56('0x2d')]!=='SI'){_0x102da2[_0xed56('0x2e')]=_0x209ee2[_0xed56('0x1f')];}var _0x11bbd8={'url':_0x5abfba+'login?username='+_0x209ee2[_0xed56('0x2b')]+'&password='+_0x209ee2['password'],'method':_0xed56('0x2f')};rp(_0x11bbd8)[_0xed56('0x14')](function(_0x300148){var _0x88e0b0=_0x300148[_0xed56('0x30')](';');var _0x50d129={'user_key':_0x88e0b0[0x0],'session_key':_0x88e0b0[0x1]};_0x11bbd8={'url':_0x5abfba+'sms','method':_0xed56('0x31'),'headers':{'user_key':_0x50d129[_0xed56('0x32')],'Session_key':_0x50d129['session_key']},'json':!![],'body':_0x102da2};return rp(_0x11bbd8);})['then'](function(_0x214dc0){if(_0x214dc0[_0xed56('0x33')]>=0x1){var _0x4fb077={'messageId':_0x214dc0['internal_order_id']};if(_0x209ee2['smsMethod']!=='GP'||!_0x209ee2['deliveryReport']){_0x4fb077[_0xed56('0x34')]=!![];}return _0x47feb4[_0xed56('0x25')](_0x4fb077);}else{return logger['error'](_0xed56('0x26'),_0xed56('0x28'),_0xed56('0x2a'),util[_0xed56('0x27')](_0x214dc0,{'showHidden':![],'depth':null}));}})['catch'](function(_0x53b5f1){return logger[_0xed56('0x17')](_0xed56('0x26'),_0xed56('0x28'),_0xed56('0x2a'),util[_0xed56('0x27')](_0x53b5f1,{'showHidden':![],'depth':null}));});}else{logger[_0xed56('0x17')](_0xed56('0x26'),'afterCreate',_0xed56('0x2a'),'Missing\x20parameters:\x20username,\x20password');}break;case'connectel':if(_0x209ee2[_0xed56('0x1e')]){var _0x1851e3={'recipient':_0x32d520[_0xed56('0x1f')],'message':_0x32d520[_0xed56('0x21')],'sender':_0x209ee2[_0xed56('0x35')]||_0x209ee2['phone'],'authorization':_0x209ee2[_0xed56('0x1e')]};var _0x62d35e={'method':_0xed56('0x31'),'uri':_0xed56('0x36'),'body':_0x1851e3,'json':!![]};rp(_0x62d35e)[_0xed56('0x14')](function(_0x33b50e){var _0x3edde5={'messageId':_0x33b50e[_0xed56('0x37')]};if(!_0x209ee2['deliveryReport']){_0x3edde5['read']=!![];}return _0x47feb4[_0xed56('0x25')](_0x3edde5);})[_0xed56('0x16')](function(_0x5aa1ee){logger[_0xed56('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xed56('0x28'),_0xed56('0x38'),util[_0xed56('0x27')](_0x5aa1ee,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xed56('0x26'),_0xed56('0x28'),'connectel',_0xed56('0x39'));}break;case _0xed56('0x3a'):if(_0x209ee2['username']&&_0x209ee2[_0xed56('0x2c')]){var _0x1851e3={'messages':[{'source':_0xed56('0x3b'),'to':_0x32d520[_0xed56('0x1f')],'body':_0x32d520['body'],'from':_0x209ee2[_0xed56('0x35')]||_0x209ee2[_0xed56('0x1f')]}]};var _0x10654d=util[_0xed56('0x3c')]('%s:%s',_0x209ee2[_0xed56('0x2b')],_0x209ee2['password']);var _0x62d35e={'method':_0xed56('0x31'),'uri':_0xed56('0x3d'),'body':_0x1851e3,'headers':{'Authorization':util['format'](_0xed56('0x3e'),new Buffer(_0x10654d)[_0xed56('0x3f')](_0xed56('0x40')))},'json':!![]};rp(_0x62d35e)['then'](function(_0x3cd39a){if(_0x3cd39a[_0xed56('0x41')]>=0xc8&&_0x3cd39a[_0xed56('0x41')]<=0xce){if(_0x3cd39a['data']&&_0x3cd39a['data'][_0xed56('0x42')]>0x0){var _0xaf0073=_[_0xed56('0x43')](_0x3cd39a[_0xed56('0x44')][_0xed56('0x20')]);var _0x140177={'messageId':_0xaf0073[_0xed56('0x45')]};if(!_0x209ee2[_0xed56('0x46')]){_0x140177[_0xed56('0x34')]=!![];}return _0x47feb4['update'](_0x140177);}else{logger[_0xed56('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xed56('0x28'),_0xed56('0x47'),util[_0xed56('0x27')](_0x3cd39a,{'showHidden':![],'depth':null}));}}else{logger['error'](_0xed56('0x26'),_0xed56('0x28'),'clickSend',util[_0xed56('0x27')](_0x3cd39a,{'showHidden':![],'depth':null}));}})['catch'](function(_0x150224){logger[_0xed56('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xed56('0x47'),util[_0xed56('0x27')](_0x150224,{'showHidden':![],'depth':null}));});}else{logger[_0xed56('0x17')](_0xed56('0x26'),'afterCreate',_0xed56('0x47'),_0xed56('0x48'));}break;case _0xed56('0x49'):if(_0x209ee2[_0xed56('0x4a')]&&_0x209ee2[_0xed56('0x1e')]){var _0x1851e3={'dst':_0x32d520[_0xed56('0x1f')],'text':_0x32d520[_0xed56('0x21')],'src':_0x209ee2[_0xed56('0x35')]||_0x209ee2[_0xed56('0x1f')],'url':_0x209ee2[_0xed56('0x22')]+_0xed56('0x4b')+_0x32d520['id']+'/status?token='+_0x209ee2[_0xed56('0x4c')]};var _0x10654d=util['format']('%s:%s',_0x209ee2[_0xed56('0x4a')],_0x209ee2[_0xed56('0x1e')]);var _0x62d35e={'method':_0xed56('0x31'),'uri':util['format'](_0xed56('0x4d'),_0x209ee2[_0xed56('0x4a')]),'body':_0x1851e3,'headers':{'Authorization':util['format']('Basic\x20%s',new Buffer(_0x10654d)[_0xed56('0x3f')](_0xed56('0x40')))},'json':!![]};rp(_0x62d35e)[_0xed56('0x14')](function(_0x4e9950){var _0xe55953={'messageId':_0x4e9950['message_uuid'][0x0]};return _0x47feb4[_0xed56('0x25')](_0xe55953);})[_0xed56('0x16')](function(_0x1dec8c){logger[_0xed56('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xed56('0x49'),util['inspect'](_0x1dec8c,{'showHidden':![],'depth':null}));});}else{logger[_0xed56('0x17')](_0xed56('0x26'),'afterCreate',_0xed56('0x49'),_0xed56('0x4e'));}break;case _0xed56('0x4f'):if(_0x209ee2[_0xed56('0x2b')]&&_0x209ee2[_0xed56('0x2c')]){if(_0x209ee2[_0xed56('0x50')]){var _0x3bd0bd={'method':_0xed56('0x31'),'uri':_0x209ee2[_0xed56('0x50')]+_0xed56('0x51'),'body':{'username':_0x209ee2['username'],'password':_0x209ee2[_0xed56('0x2c')]},'json':!![]};return rp(_0x3bd0bd)[_0xed56('0x14')](function(_0x29fa76){var _0x35cef6={'method':_0xed56('0x31'),'uri':_0x209ee2[_0xed56('0x50')]+_0xed56('0x52'),'body':{'messages':[{'from':_0x209ee2[_0xed56('0x1f')],'destinations':[{'to':_0x32d520['phone']}],'text':_0x32d520[_0xed56('0x21')],'notifyUrl':_0x209ee2[_0xed56('0x22')]+_0xed56('0x4b')+_0x32d520['id']+_0xed56('0x23')+_0x209ee2['token'],'notifyContentType':'application/json','callbackData':_0x209ee2[_0xed56('0x1f')]+';'+_0x32d520['body']}]},'headers':{'Authorization':'IBSSO\x20'+_0x29fa76[_0xed56('0x4c')]},'json':!![]};return rp(_0x35cef6)['then'](function(_0xd3abd2){if(_0xd3abd2[_0xed56('0x20')]){var _0xca7057={'messageId':_0xd3abd2[_0xed56('0x20')][0x0][_0xed56('0xb')]};if(!_0x209ee2[_0xed56('0x46')]){_0xca7057[_0xed56('0x34')]=!![];}return _0x47feb4['update'](_0xca7057);}else{return logger[_0xed56('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xed56('0x28'),'infobip',util[_0xed56('0x27')](_0xd3abd2,{'showHidden':![],'depth':null}));}});})[_0xed56('0x16')](function(_0x43ddec){return logger[_0xed56('0x17')](_0xed56('0x26'),'afterCreate',_0xed56('0x4f'),util['inspect'](_0x43ddec,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xed56('0x26'),_0xed56('0x28'),_0xed56('0x4f'),_0xed56('0x53'));}}else{logger[_0xed56('0x17')](_0xed56('0x26'),_0xed56('0x28'),'infobip',_0xed56('0x48'));}break;case _0xed56('0x54'):var _0xb17c72=require('crypto');if(_0x209ee2[_0xed56('0x55')]){var _0x2e867c={};_0x2e867c[_0xed56('0x56')]=_0x209ee2[_0xed56('0x2b')];_0x2e867c[_0xed56('0x1f')]=_0x32d520[_0xed56('0x1f')];_0x2e867c[_0xed56('0x2e')]=_0x209ee2[_0xed56('0x1f')];_0x2e867c['text']=_0x32d520['body'];_0x2e867c[_0xed56('0x57')]=+new Date();var _0x1680aa='';var _0x15fd8f='';var _0x1a7e2d=Object[_0xed56('0x58')](_0x2e867c);_0x1a7e2d['sort']();for(var _0x133e0c=0x0;_0x133e0c<_0x1a7e2d[_0xed56('0x59')];_0x133e0c++){if(_0x1680aa!=''){_0x1680aa+='&';}_0x1680aa+=_0x1a7e2d[_0x133e0c]+'='+encodeURIComponent(_0x2e867c[_0x1a7e2d[_0x133e0c]]);_0x15fd8f+=_0x2e867c[_0x1a7e2d[_0x133e0c]];}_0x15fd8f+=_0x209ee2[_0xed56('0x55')];_0x15fd8f=_0xb17c72[_0xed56('0x5a')](_0xed56('0x5b'))['update'](_0x15fd8f)[_0xed56('0x5c')](_0xed56('0x5d'));if(_0x1680aa!==''){_0x1680aa+='&';}_0x1680aa+='signature='+_0x15fd8f;var _0x11bbd8={'method':_0xed56('0x2f'),'uri':_0x209ee2[_0xed56('0x50')]+'/external/get/send.php?'+_0x1680aa,'json':!![]};return rp(_0x11bbd8)[_0xed56('0x14')](function(_0x17e824){var _0x30efbf=Object[_0xed56('0x58')](_0x17e824);if(_0x17e824[_0x30efbf[0x0]][_0xed56('0x17')]&&parseInt(_0x17e824[_0x30efbf[0x0]][_0xed56('0x17')])===0x0){var _0x5c12cf={'messageId':_0x17e824[_0x30efbf[0x0]][_0xed56('0x5e')]};if(!_0x209ee2[_0xed56('0x46')]){_0x5c12cf[_0xed56('0x34')]=!![];}return _0x47feb4['update'](_0x5c12cf);}else{return logger[_0xed56('0x17')](_0xed56('0x26'),'afterCreate',_0xed56('0x54'),util[_0xed56('0x27')](_0x17e824['error'],{'showHidden':![],'depth':null}));}})[_0xed56('0x16')](function(_0x14d6fd){return logger['error'](_0xed56('0x26'),_0xed56('0x28'),_0xed56('0x54'),util[_0xed56('0x27')](_0x14d6fd,{'showHidden':![],'depth':null}));});}else{logger[_0xed56('0x17')](_0xed56('0x26'),_0xed56('0x28'),_0xed56('0x54'),_0xed56('0x5f'));}break;case'clickatell':if(_0x209ee2[_0xed56('0x55')]){var _0x36640c={'method':_0xed56('0x31'),'uri':_0xed56('0x60'),'headers':{'Authorization':_0x209ee2[_0xed56('0x55')]},'body':{'content':_0x32d520[_0xed56('0x21')],'to':[_0x32d520[_0xed56('0x1f')]],'from':_0x209ee2[_0xed56('0x1f')],'binary':![],'clientMessageId':'uuid','charset':_0xed56('0x61')},'json':!![]};rp(_0x36640c)[_0xed56('0x14')](function(_0x7a1c72){if(!_0x7a1c72[_0xed56('0x17')]){var _0x4f6ca0={'messageId':_0x7a1c72[_0xed56('0x20')][0x0]['apiMessageId']};if(!_0x209ee2['deliveryReport']){_0x4f6ca0['read']=!![];}return _0x47feb4['update'](_0x4f6ca0);}else{return logger[_0xed56('0x17')](_0xed56('0x26'),_0xed56('0x28'),_0xed56('0x62'),util[_0xed56('0x27')](_0x7a1c72[_0xed56('0x17')],{'showHidden':![],'depth':null}));}})[_0xed56('0x16')](function(_0x4ddf50){return logger[_0xed56('0x17')](_0xed56('0x26'),_0xed56('0x28'),_0xed56('0x62'),util[_0xed56('0x27')](_0x4ddf50,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xed56('0x28'),_0xed56('0x62'),_0xed56('0x5f'));}break;case _0xed56('0x63'):if(_0x209ee2[_0xed56('0x55')]){var _0xe8d90e={};var _0x11bbd8={'method':'POST','uri':_0xed56('0x64'),'headers':{'Authorization':_0xed56('0x65')+_0x209ee2['apiKey'],'Content-Type':_0xed56('0x66')},'body':{'from':_0x209ee2[_0xed56('0x1f')],'to':_0x32d520['phone'],'text':_0x32d520[_0xed56('0x21')]},'json':!![]};return rp(_0x11bbd8)[_0xed56('0x14')](function(_0x12e86f){if(_0x12e86f[_0xed56('0x67')]==0xca){_0xe8d90e[_0xed56('0x68')]=_0x12e86f;var _0xae57e3={'method':_0xed56('0x31'),'uri':_0xed56('0x69'),'headers':{'Authorization':_0xed56('0x65')+_0x209ee2[_0xed56('0x55')],'Content-Type':_0xed56('0x66')},'body':{'refid':_0xe8d90e['message'][_0xed56('0x6a')]},'json':!![]};return rp(_0xae57e3)[_0xed56('0x14')](function(_0x3377c1){_0xe8d90e[_0xed56('0x6b')]=_0x3377c1;var _0x4719c4={'messageId':_0xe8d90e[_0xed56('0x68')]['refid'],'read':!![]};return _0x47feb4[_0xed56('0x25')](_0x4719c4);});}else{return logger[_0xed56('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xed56('0x28'),_0xed56('0x63'),util[_0xed56('0x27')](_0x12e86f,{'showHidden':![],'depth':null}));}})['catch'](function(_0x5418bc){return logger[_0xed56('0x17')](_0xed56('0x26'),_0xed56('0x28'),'intelepeer',util[_0xed56('0x27')](_0x5418bc,{'showHidden':![],'depth':null}));});}else{return logger[_0xed56('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xed56('0x28'),_0xed56('0x63'),_0xed56('0x6c'));}break;}}})['finally'](function(){_0x44b1b5();});}else{_0x44b1b5();}}},'charset':_0xed56('0x6d'),'collate':_0xed56('0x6e')});};