Built motion from commit db94841.|2.5.3
[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 _0x62f8=['intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','application/json','status','refid','finally','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','request-promise','./smsMessage.attributes','define','SmsMessage','sms_messages','messageId','fti_sms_messages','body','FULLTEXT','models','direction','toLowerCase','out','UserId','SmsInteractionId','update','createdAt','catch','error','find','then','type','twilio','authToken','phone','accountSid','messages','create','remote','/api/sms/messages/','/status?token=','token','sid','SmsMessage,\x20%s,\x20%s,\x20%s','inspect','afterCreate','skebby','https://api.skebby.it/API/v1.0/REST/','username','smsMethod','login?username=','password','GET','split','sms','user_key','session_key','total_sent','internal_order_id','deliveryReport','read','senderString','https://smsapi.connectel.se/api/send/','connectel','Missing\x20parameters:\x20authToken','xCALLY\x20Motion','format','%s:%s','POST','Basic\x20%s','toString','base64','http_code','data','queued_count','head','clickSend','Missing\x20parameters:\x20username,\x20password','plivo','authId','https://api.plivo.com/v1/Account/%s/Message/','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','IBSSO\x20','Missing\x20parameters:\x20base_url','crypto','apiKey','login','text','keys','sort','length','md5','hex','signature=','id_sms','csc','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','uuid','apiMessageId'];(function(_0x565ed7,_0x398228){var _0x183ad7=function(_0x5a43d7){while(--_0x5a43d7){_0x565ed7['push'](_0x565ed7['shift']());}};_0x183ad7(++_0x398228);}(_0x62f8,0x159));var _0x862f=function(_0x3d4dcd,_0x1244e6){_0x3d4dcd=_0x3d4dcd-0x0;var _0x57c11b=_0x62f8[_0x3d4dcd];return _0x57c11b;};'use strict';var _=require(_0x862f('0x0'));var util=require('util');var logger=require(_0x862f('0x1'))(_0x862f('0x2'));var moment=require(_0x862f('0x3'));var BPromise=require(_0x862f('0x4'));var rp=require(_0x862f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x862f('0x6'));module['exports']=function(_0x280611,_0x519525){return _0x280611[_0x862f('0x7')](_0x862f('0x8'),attributes,{'tableName':_0x862f('0x9'),'paranoid':![],'indexes':[{'name':_0x862f('0xa'),'fields':['messageId']},{'name':_0x862f('0xb'),'fields':[_0x862f('0xc')],'type':_0x862f('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x36dbb6,_0x294bb5,_0x3f5e03){var _0x5c1b2a=_0x280611[_0x862f('0xe')];var _0x4f0e8d=_0x36dbb6['get']({'plain':!![]});if(_0x4f0e8d[_0x862f('0xf')][_0x862f('0x10')]()==='in'||_0x4f0e8d[_0x862f('0xf')]['toLowerCase']()===_0x862f('0x11')&&!_0x4f0e8d['secret']&&!_['isNil'](_0x4f0e8d[_0x862f('0x12')])){_0x5c1b2a['SmsInteraction']['findOne']({'where':{'id':_0x4f0e8d[_0x862f('0x13')]}})['then'](function(_0x9c83e8){if(_0x9c83e8){_0x9c83e8[_0x862f('0x14')]({'lastMsgAt':_0x4f0e8d[_0x862f('0x15')],'lastMsgDirection':_0x4f0e8d[_0x862f('0xf')][_0x862f('0x10')]()});}})[_0x862f('0x16')](function(_0x2d96d8){console[_0x862f('0x17')](_0x2d96d8);});}if(_0x4f0e8d['direction']===_0x862f('0x11')&&!_0x4f0e8d['secret']){var _0x74ba05;_0x5c1b2a['SmsAccount'][_0x862f('0x18')]({'where':{'id':_0x4f0e8d['SmsAccountId']},'raw':!![]})[_0x862f('0x19')](function(_0x3405c1){_0x74ba05=_0x3405c1;if(_0x74ba05&&_0x74ba05[_0x862f('0x1a')]){switch(_0x74ba05['type']){case _0x862f('0x1b'):var _0x386756=require(_0x862f('0x1b'));if(_0x74ba05['accountSid']&&_0x74ba05[_0x862f('0x1c')]&&_0x74ba05[_0x862f('0x1d')]){var _0x2ab49f=new _0x386756(_0x74ba05[_0x862f('0x1e')],_0x74ba05['authToken']);_0x2ab49f[_0x862f('0x1f')][_0x862f('0x20')]({'body':_0x4f0e8d[_0x862f('0xc')],'to':_0x4f0e8d[_0x862f('0x1d')],'from':_0x74ba05[_0x862f('0x1d')],'statusCallback':_0x74ba05[_0x862f('0x21')]+_0x862f('0x22')+_0x4f0e8d['id']+_0x862f('0x23')+_0x74ba05[_0x862f('0x24')]})[_0x862f('0x19')](function(_0x288d09){if(_0x288d09[_0x862f('0x25')]){return _0x36dbb6[_0x862f('0x14')]({'messageId':_0x288d09['sid']});}})['catch'](function(_0x5af69c){logger['error'](_0x862f('0x26'),'afterCreate',_0x862f('0x1b'),util[_0x862f('0x27')](_0x5af69c,{'showHidden':![],'depth':null}));});}else{logger[_0x862f('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x862f('0x28'),_0x862f('0x1b'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case _0x862f('0x29'):var _0x3cf39d=_0x862f('0x2a');if(_0x74ba05[_0x862f('0x2b')]&&_0x74ba05['password']){var _0x5f1697={'recipient':[_0x4f0e8d[_0x862f('0x1d')]],'message':_0x4f0e8d['body'],'message_type':_0x74ba05['smsMethod']};if(_0x74ba05[_0x862f('0x2c')]&&_0x74ba05[_0x862f('0x2c')]!=='SI'){_0x5f1697['sender']=_0x74ba05[_0x862f('0x1d')];}var _0x5dcba2={'url':_0x3cf39d+_0x862f('0x2d')+_0x74ba05['username']+'&password='+_0x74ba05[_0x862f('0x2e')],'method':_0x862f('0x2f')};rp(_0x5dcba2)[_0x862f('0x19')](function(_0x2231af){var _0x493baf=_0x2231af[_0x862f('0x30')](';');var _0x2ffc87={'user_key':_0x493baf[0x0],'session_key':_0x493baf[0x1]};_0x5dcba2={'url':_0x3cf39d+_0x862f('0x31'),'method':'POST','headers':{'user_key':_0x2ffc87[_0x862f('0x32')],'Session_key':_0x2ffc87[_0x862f('0x33')]},'json':!![],'body':_0x5f1697};return rp(_0x5dcba2);})['then'](function(_0x58e84c){if(_0x58e84c[_0x862f('0x34')]>=0x1){var _0x2f89d4={'messageId':_0x58e84c[_0x862f('0x35')]};if(_0x74ba05[_0x862f('0x2c')]!=='GP'||!_0x74ba05[_0x862f('0x36')]){_0x2f89d4[_0x862f('0x37')]=!![];}return _0x36dbb6[_0x862f('0x14')](_0x2f89d4);}else{return logger[_0x862f('0x17')](_0x862f('0x26'),_0x862f('0x28'),'skebby',util[_0x862f('0x27')](_0x58e84c,{'showHidden':![],'depth':null}));}})[_0x862f('0x16')](function(_0x2712fe){return logger[_0x862f('0x17')](_0x862f('0x26'),_0x862f('0x28'),'skebby',util[_0x862f('0x27')](_0x2712fe,{'showHidden':![],'depth':null}));});}else{logger[_0x862f('0x17')](_0x862f('0x26'),_0x862f('0x28'),_0x862f('0x29'),'Missing\x20parameters:\x20username,\x20password');}break;case'connectel':if(_0x74ba05[_0x862f('0x1c')]){var _0xea7d7d={'recipient':_0x4f0e8d[_0x862f('0x1d')],'message':_0x4f0e8d[_0x862f('0xc')],'sender':_0x74ba05[_0x862f('0x38')]||_0x74ba05[_0x862f('0x1d')],'authorization':_0x74ba05[_0x862f('0x1c')]};var _0x294bb5={'method':'POST','uri':_0x862f('0x39'),'body':_0xea7d7d,'json':!![]};rp(_0x294bb5)[_0x862f('0x19')](function(_0x2efad4){var _0x46a978={'messageId':_0x2efad4['requestid']};if(!_0x74ba05[_0x862f('0x36')]){_0x46a978[_0x862f('0x37')]=!![];}return _0x36dbb6['update'](_0x46a978);})[_0x862f('0x16')](function(_0x1ebca4){logger[_0x862f('0x17')](_0x862f('0x26'),_0x862f('0x28'),_0x862f('0x3a'),util[_0x862f('0x27')](_0x1ebca4,{'showHidden':![],'depth':null}));});}else{logger[_0x862f('0x17')](_0x862f('0x26'),_0x862f('0x28'),'connectel',_0x862f('0x3b'));}break;case'clicksend':if(_0x74ba05['username']&&_0x74ba05[_0x862f('0x2e')]){var _0xea7d7d={'messages':[{'source':_0x862f('0x3c'),'to':_0x4f0e8d[_0x862f('0x1d')],'body':_0x4f0e8d['body'],'from':_0x74ba05[_0x862f('0x38')]||_0x74ba05[_0x862f('0x1d')]}]};var _0x70ccf0=util[_0x862f('0x3d')](_0x862f('0x3e'),_0x74ba05[_0x862f('0x2b')],_0x74ba05[_0x862f('0x2e')]);var _0x294bb5={'method':_0x862f('0x3f'),'uri':'https://rest.clicksend.com/v3/sms/send','body':_0xea7d7d,'headers':{'Authorization':util[_0x862f('0x3d')](_0x862f('0x40'),new Buffer(_0x70ccf0)[_0x862f('0x41')](_0x862f('0x42')))},'json':!![]};rp(_0x294bb5)[_0x862f('0x19')](function(_0x1e85c1){if(_0x1e85c1[_0x862f('0x43')]>=0xc8&&_0x1e85c1[_0x862f('0x43')]<=0xce){if(_0x1e85c1[_0x862f('0x44')]&&_0x1e85c1[_0x862f('0x44')][_0x862f('0x45')]>0x0){var _0x3908f2=_[_0x862f('0x46')](_0x1e85c1[_0x862f('0x44')][_0x862f('0x1f')]);var _0x528d15={'messageId':_0x3908f2['message_id']};if(!_0x74ba05[_0x862f('0x36')]){_0x528d15[_0x862f('0x37')]=!![];}return _0x36dbb6[_0x862f('0x14')](_0x528d15);}else{logger[_0x862f('0x17')](_0x862f('0x26'),_0x862f('0x28'),_0x862f('0x47'),util[_0x862f('0x27')](_0x1e85c1,{'showHidden':![],'depth':null}));}}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x862f('0x28'),_0x862f('0x47'),util[_0x862f('0x27')](_0x1e85c1,{'showHidden':![],'depth':null}));}})['catch'](function(_0x279d2f){logger['error'](_0x862f('0x26'),_0x862f('0x28'),_0x862f('0x47'),util[_0x862f('0x27')](_0x279d2f,{'showHidden':![],'depth':null}));});}else{logger[_0x862f('0x17')](_0x862f('0x26'),'afterCreate','clickSend',_0x862f('0x48'));}break;case _0x862f('0x49'):if(_0x74ba05[_0x862f('0x4a')]&&_0x74ba05[_0x862f('0x1c')]){var _0xea7d7d={'dst':_0x4f0e8d[_0x862f('0x1d')],'text':_0x4f0e8d[_0x862f('0xc')],'src':_0x74ba05[_0x862f('0x38')]||_0x74ba05[_0x862f('0x1d')],'url':_0x74ba05['remote']+_0x862f('0x22')+_0x4f0e8d['id']+_0x862f('0x23')+_0x74ba05['token']};var _0x70ccf0=util['format'](_0x862f('0x3e'),_0x74ba05[_0x862f('0x4a')],_0x74ba05[_0x862f('0x1c')]);var _0x294bb5={'method':_0x862f('0x3f'),'uri':util[_0x862f('0x3d')](_0x862f('0x4b'),_0x74ba05['authId']),'body':_0xea7d7d,'headers':{'Authorization':util['format']('Basic\x20%s',new Buffer(_0x70ccf0)['toString'](_0x862f('0x42')))},'json':!![]};rp(_0x294bb5)[_0x862f('0x19')](function(_0x3f97a7){var _0x225f58={'messageId':_0x3f97a7[_0x862f('0x4c')][0x0]};return _0x36dbb6[_0x862f('0x14')](_0x225f58);})['catch'](function(_0x16d542){logger['error'](_0x862f('0x26'),'afterCreate','plivo',util[_0x862f('0x27')](_0x16d542,{'showHidden':![],'depth':null}));});}else{logger[_0x862f('0x17')](_0x862f('0x26'),'afterCreate',_0x862f('0x49'),_0x862f('0x4d'));}break;case _0x862f('0x4e'):if(_0x74ba05[_0x862f('0x2b')]&&_0x74ba05[_0x862f('0x2e')]){if(_0x74ba05[_0x862f('0x4f')]){var _0x46fc1f={'method':_0x862f('0x3f'),'uri':_0x74ba05[_0x862f('0x4f')]+'/auth/1/session','body':{'username':_0x74ba05[_0x862f('0x2b')],'password':_0x74ba05[_0x862f('0x2e')]},'json':!![]};return rp(_0x46fc1f)[_0x862f('0x19')](function(_0x2135c5){var _0x1f4ae5={'method':_0x862f('0x3f'),'uri':_0x74ba05['baseUrl']+'/sms/2/text/advanced','body':{'messages':[{'from':_0x74ba05[_0x862f('0x1d')],'destinations':[{'to':_0x4f0e8d[_0x862f('0x1d')]}],'text':_0x4f0e8d['body'],'notifyUrl':_0x74ba05[_0x862f('0x21')]+_0x862f('0x22')+_0x4f0e8d['id']+_0x862f('0x23')+_0x74ba05[_0x862f('0x24')],'notifyContentType':'application/json','callbackData':_0x74ba05[_0x862f('0x1d')]+';'+_0x4f0e8d[_0x862f('0xc')]}]},'headers':{'Authorization':_0x862f('0x50')+_0x2135c5[_0x862f('0x24')]},'json':!![]};return rp(_0x1f4ae5)[_0x862f('0x19')](function(_0x510b05){if(_0x510b05[_0x862f('0x1f')]){var _0x579ea7={'messageId':_0x510b05[_0x862f('0x1f')][0x0][_0x862f('0xa')]};if(!_0x74ba05[_0x862f('0x36')]){_0x579ea7[_0x862f('0x37')]=!![];}return _0x36dbb6[_0x862f('0x14')](_0x579ea7);}else{return logger[_0x862f('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x862f('0x28'),_0x862f('0x4e'),util[_0x862f('0x27')](_0x510b05,{'showHidden':![],'depth':null}));}});})[_0x862f('0x16')](function(_0x56db5f){return logger[_0x862f('0x17')](_0x862f('0x26'),'afterCreate',_0x862f('0x4e'),util['inspect'](_0x56db5f,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x862f('0x26'),_0x862f('0x28'),'infobip',_0x862f('0x51'));}}else{logger[_0x862f('0x17')](_0x862f('0x26'),_0x862f('0x28'),_0x862f('0x4e'),_0x862f('0x48'));}break;case'csc':var _0x5940c9=require(_0x862f('0x52'));if(_0x74ba05[_0x862f('0x53')]){var _0x1fc916={};_0x1fc916[_0x862f('0x54')]=_0x74ba05['username'];_0x1fc916['phone']=_0x4f0e8d['phone'];_0x1fc916['sender']=_0x74ba05['phone'];_0x1fc916[_0x862f('0x55')]=_0x4f0e8d[_0x862f('0xc')];_0x1fc916['timestamp']=+new Date();var _0x445a09='';var _0x3eb616='';var _0x4f3cdf=Object[_0x862f('0x56')](_0x1fc916);_0x4f3cdf[_0x862f('0x57')]();for(var _0x46a162=0x0;_0x46a162<_0x4f3cdf[_0x862f('0x58')];_0x46a162++){if(_0x445a09!=''){_0x445a09+='&';}_0x445a09+=_0x4f3cdf[_0x46a162]+'='+encodeURIComponent(_0x1fc916[_0x4f3cdf[_0x46a162]]);_0x3eb616+=_0x1fc916[_0x4f3cdf[_0x46a162]];}_0x3eb616+=_0x74ba05[_0x862f('0x53')];_0x3eb616=_0x5940c9['createHash'](_0x862f('0x59'))[_0x862f('0x14')](_0x3eb616)['digest'](_0x862f('0x5a'));if(_0x445a09!==''){_0x445a09+='&';}_0x445a09+=_0x862f('0x5b')+_0x3eb616;var _0x5dcba2={'method':_0x862f('0x2f'),'uri':_0x74ba05[_0x862f('0x4f')]+'/external/get/send.php?'+_0x445a09,'json':!![]};return rp(_0x5dcba2)[_0x862f('0x19')](function(_0x46dc9b){var _0x271c4a=Object['keys'](_0x46dc9b);if(_0x46dc9b[_0x271c4a[0x0]][_0x862f('0x17')]&&parseInt(_0x46dc9b[_0x271c4a[0x0]][_0x862f('0x17')])===0x0){var _0xa02209={'messageId':_0x46dc9b[_0x271c4a[0x0]][_0x862f('0x5c')]};if(!_0x74ba05[_0x862f('0x36')]){_0xa02209[_0x862f('0x37')]=!![];}return _0x36dbb6[_0x862f('0x14')](_0xa02209);}else{return logger['error'](_0x862f('0x26'),_0x862f('0x28'),_0x862f('0x5d'),util[_0x862f('0x27')](_0x46dc9b['error'],{'showHidden':![],'depth':null}));}})[_0x862f('0x16')](function(_0xbdcab1){return logger[_0x862f('0x17')](_0x862f('0x26'),'afterCreate',_0x862f('0x5d'),util[_0x862f('0x27')](_0xbdcab1,{'showHidden':![],'depth':null}));});}else{logger[_0x862f('0x17')](_0x862f('0x26'),_0x862f('0x28'),_0x862f('0x5d'),_0x862f('0x5e'));}break;case _0x862f('0x5f'):if(_0x74ba05[_0x862f('0x53')]){var _0x295122={'method':_0x862f('0x3f'),'uri':_0x862f('0x60'),'headers':{'Authorization':_0x74ba05[_0x862f('0x53')]},'body':{'content':_0x4f0e8d[_0x862f('0xc')],'to':[_0x4f0e8d[_0x862f('0x1d')]],'from':_0x74ba05[_0x862f('0x1d')],'binary':![],'clientMessageId':_0x862f('0x61'),'charset':'UTF-8'},'json':!![]};rp(_0x295122)[_0x862f('0x19')](function(_0x5a0ac3){if(!_0x5a0ac3[_0x862f('0x17')]){var _0x1fb3ab={'messageId':_0x5a0ac3[_0x862f('0x1f')][0x0][_0x862f('0x62')]};if(!_0x74ba05[_0x862f('0x36')]){_0x1fb3ab[_0x862f('0x37')]=!![];}return _0x36dbb6[_0x862f('0x14')](_0x1fb3ab);}else{return logger['error'](_0x862f('0x26'),_0x862f('0x28'),_0x862f('0x5f'),util[_0x862f('0x27')](_0x5a0ac3[_0x862f('0x17')],{'showHidden':![],'depth':null}));}})[_0x862f('0x16')](function(_0x1acca0){return logger['error'](_0x862f('0x26'),_0x862f('0x28'),_0x862f('0x5f'),util[_0x862f('0x27')](_0x1acca0,{'showHidden':![],'depth':null}));});}else{logger[_0x862f('0x17')](_0x862f('0x26'),_0x862f('0x28'),'clickatell',_0x862f('0x5e'));}break;case _0x862f('0x63'):if(_0x74ba05[_0x862f('0x53')]){var _0x1744ca={};var _0x5dcba2={'method':_0x862f('0x3f'),'uri':_0x862f('0x64'),'headers':{'Authorization':_0x862f('0x65')+_0x74ba05['apiKey'],'Content-Type':'application/json'},'body':{'from':_0x74ba05[_0x862f('0x1d')],'to':_0x4f0e8d['phone'],'text':_0x4f0e8d['body']},'json':!![]};return rp(_0x5dcba2)[_0x862f('0x19')](function(_0x4e4f8c){if(_0x4e4f8c[_0x862f('0x66')]==0xca){_0x1744ca[_0x862f('0x67')]=_0x4e4f8c;var _0x4ce35f={'method':_0x862f('0x3f'),'uri':_0x862f('0x68'),'headers':{'Authorization':'Bearer\x20'+_0x74ba05[_0x862f('0x53')],'Content-Type':_0x862f('0x69')},'body':{'refid':_0x1744ca[_0x862f('0x67')]['refid']},'json':!![]};return rp(_0x4ce35f)['then'](function(_0x59240d){_0x1744ca[_0x862f('0x6a')]=_0x59240d;var _0x4160e5={'messageId':_0x1744ca[_0x862f('0x67')][_0x862f('0x6b')],'read':!![]};return _0x36dbb6[_0x862f('0x14')](_0x4160e5);});}else{return logger[_0x862f('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x862f('0x63'),util[_0x862f('0x27')](_0x4e4f8c,{'showHidden':![],'depth':null}));}})['catch'](function(_0x138018){return logger[_0x862f('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x862f('0x63'),util[_0x862f('0x27')](_0x138018,{'showHidden':![],'depth':null}));});}else{return logger['error'](_0x862f('0x26'),'afterCreate',_0x862f('0x63'),'Token\x20not\x20received');}break;}}})[_0x862f('0x6c')](function(){_0x3f5e03();});}else{_0x3f5e03();}}},'charset':_0x862f('0x6d'),'collate':_0x862f('0x6e')});};