fee51c5bc2d9ca1bc622e350bef02b2c5f29c039
[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 _0xf97b=['createHash','hex','signature=','/external/get/send.php?','id_sms','csc','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','https://api.intelepeer.com/_rest/v4/app/sms/send','code','message','Bearer\x20','refid','status','intelepeer','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','request-promise','../../config/environment','exports','SmsMessage','sms_messages','messageId','fti_sms_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','then','createdAt','catch','error','SmsAccount','find','type','twilio','accountSid','authToken','phone','remote','token','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','skebby','username','password','smsMethod','sender','login?username=','&password=','GET','split','sms','POST','user_key','session_key','total_sent','internal_order_id','deliveryReport','read','senderString','requestid','update','connectel','clicksend','xCALLY\x20Motion','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','http_code','data','head','messages','clickSend','Missing\x20parameters:\x20username,\x20password','plivo','authId','/status?token=','https://api.plivo.com/v1/Account/%s/Message/','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','baseUrl','/sms/2/text/advanced','/api/sms/messages/','application/json','IBSSO\x20','infobip','Missing\x20parameters:\x20base_url','apiKey','login','text','timestamp','keys','sort'];(function(_0xaa4b44,_0x1f390b){var _0x505d42=function(_0x101414){while(--_0x101414){_0xaa4b44['push'](_0xaa4b44['shift']());}};_0x505d42(++_0x1f390b);}(_0xf97b,0x1d9));var _0xbf97=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0xf97b[_0x138adb];return _0x1b27f2;};'use strict';var _=require('lodash');var util=require(_0xbf97('0x0'));var logger=require(_0xbf97('0x1'))(_0xbf97('0x2'));var moment=require(_0xbf97('0x3'));var BPromise=require('bluebird');var rp=require(_0xbf97('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xbf97('0x5'));var attributes=require('./smsMessage.attributes');module[_0xbf97('0x6')]=function(_0x3b0fa2,_0x318403){return _0x3b0fa2['define'](_0xbf97('0x7'),attributes,{'tableName':_0xbf97('0x8'),'paranoid':![],'indexes':[{'name':_0xbf97('0x9'),'fields':[_0xbf97('0x9')]},{'name':_0xbf97('0xa'),'fields':[_0xbf97('0xb')],'type':_0xbf97('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x572774,_0x40854b,_0x12f414){var _0x21b385=_0x3b0fa2[_0xbf97('0xd')];var _0x4fe98a=_0x572774[_0xbf97('0xe')]({'plain':!![]});if(_0x4fe98a[_0xbf97('0xf')][_0xbf97('0x10')]()==='in'||_0x4fe98a['direction'][_0xbf97('0x10')]()===_0xbf97('0x11')&&!_0x4fe98a[_0xbf97('0x12')]&&!_[_0xbf97('0x13')](_0x4fe98a[_0xbf97('0x14')])){_0x21b385['SmsInteraction']['findOne']({'where':{'id':_0x4fe98a['SmsInteractionId']}})[_0xbf97('0x15')](function(_0x2c85bc){if(_0x2c85bc){_0x2c85bc['update']({'lastMsgAt':_0x4fe98a[_0xbf97('0x16')],'lastMsgDirection':_0x4fe98a[_0xbf97('0xf')][_0xbf97('0x10')]()});}})[_0xbf97('0x17')](function(_0x5696ff){console[_0xbf97('0x18')](_0x5696ff);});}if(_0x4fe98a['direction']===_0xbf97('0x11')&&!_0x4fe98a[_0xbf97('0x12')]){var _0x452d96;_0x21b385[_0xbf97('0x19')][_0xbf97('0x1a')]({'where':{'id':_0x4fe98a['SmsAccountId']},'raw':!![]})[_0xbf97('0x15')](function(_0x53dfdc){_0x452d96=_0x53dfdc;if(_0x452d96&&_0x452d96['type']){switch(_0x452d96[_0xbf97('0x1b')]){case _0xbf97('0x1c'):var _0x49288b=require(_0xbf97('0x1c'));if(_0x452d96[_0xbf97('0x1d')]&&_0x452d96[_0xbf97('0x1e')]&&_0x452d96[_0xbf97('0x1f')]){var _0x3d7f75=new _0x49288b(_0x452d96[_0xbf97('0x1d')],_0x452d96[_0xbf97('0x1e')]);_0x3d7f75['messages']['create']({'body':_0x4fe98a[_0xbf97('0xb')],'to':_0x4fe98a[_0xbf97('0x1f')],'from':_0x452d96['phone'],'statusCallback':_0x452d96[_0xbf97('0x20')]+'/api/sms/messages/'+_0x4fe98a['id']+'/status?token='+_0x452d96[_0xbf97('0x21')]})[_0xbf97('0x15')](function(_0x5edb2e){if(_0x5edb2e[_0xbf97('0x22')]){return _0x572774['update']({'messageId':_0x5edb2e['sid']});}})[_0xbf97('0x17')](function(_0x26d062){logger[_0xbf97('0x18')](_0xbf97('0x23'),_0xbf97('0x24'),'twilio',util[_0xbf97('0x25')](_0x26d062,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xbf97('0x23'),_0xbf97('0x24'),_0xbf97('0x1c'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case _0xbf97('0x26'):var _0x365346='https://api.skebby.it/API/v1.0/REST/';if(_0x452d96[_0xbf97('0x27')]&&_0x452d96[_0xbf97('0x28')]){var _0x110e8f={'recipient':[_0x4fe98a[_0xbf97('0x1f')]],'message':_0x4fe98a[_0xbf97('0xb')],'message_type':_0x452d96[_0xbf97('0x29')]};if(_0x452d96['smsMethod']&&_0x452d96[_0xbf97('0x29')]!=='SI'){_0x110e8f[_0xbf97('0x2a')]=_0x452d96[_0xbf97('0x1f')];}var _0x5861a3={'url':_0x365346+_0xbf97('0x2b')+_0x452d96[_0xbf97('0x27')]+_0xbf97('0x2c')+_0x452d96[_0xbf97('0x28')],'method':_0xbf97('0x2d')};rp(_0x5861a3)['then'](function(_0x4b0cf0){var _0x4f8fcc=_0x4b0cf0[_0xbf97('0x2e')](';');var _0x22ba8e={'user_key':_0x4f8fcc[0x0],'session_key':_0x4f8fcc[0x1]};_0x5861a3={'url':_0x365346+_0xbf97('0x2f'),'method':_0xbf97('0x30'),'headers':{'user_key':_0x22ba8e[_0xbf97('0x31')],'Session_key':_0x22ba8e[_0xbf97('0x32')]},'json':!![],'body':_0x110e8f};return rp(_0x5861a3);})[_0xbf97('0x15')](function(_0xcbd727){if(_0xcbd727[_0xbf97('0x33')]>=0x1){var _0x4ffa9f={'messageId':_0xcbd727[_0xbf97('0x34')]};if(_0x452d96[_0xbf97('0x29')]!=='GP'||!_0x452d96[_0xbf97('0x35')]){_0x4ffa9f[_0xbf97('0x36')]=!![];}return _0x572774['update'](_0x4ffa9f);}else{return logger[_0xbf97('0x18')](_0xbf97('0x23'),_0xbf97('0x24'),_0xbf97('0x26'),util[_0xbf97('0x25')](_0xcbd727,{'showHidden':![],'depth':null}));}})['catch'](function(_0x39d7a1){return logger[_0xbf97('0x18')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xbf97('0x24'),_0xbf97('0x26'),util['inspect'](_0x39d7a1,{'showHidden':![],'depth':null}));});}else{logger[_0xbf97('0x18')](_0xbf97('0x23'),_0xbf97('0x24'),'skebby','Missing\x20parameters:\x20username,\x20password');}break;case'connectel':if(_0x452d96[_0xbf97('0x1e')]){var _0x72903c={'recipient':_0x4fe98a[_0xbf97('0x1f')],'message':_0x4fe98a[_0xbf97('0xb')],'sender':_0x452d96[_0xbf97('0x37')]||_0x452d96[_0xbf97('0x1f')],'authorization':_0x452d96[_0xbf97('0x1e')]};var _0x40854b={'method':_0xbf97('0x30'),'uri':'https://smsapi.connectel.se/api/v2/send/','body':_0x72903c,'json':!![]};rp(_0x40854b)['then'](function(_0x484449){var _0x522e20={'messageId':_0x484449[_0xbf97('0x38')]};if(!_0x452d96[_0xbf97('0x35')]){_0x522e20['read']=!![];}return _0x572774[_0xbf97('0x39')](_0x522e20);})['catch'](function(_0x4edf0e){logger[_0xbf97('0x18')](_0xbf97('0x23'),_0xbf97('0x24'),_0xbf97('0x3a'),util['inspect'](_0x4edf0e,{'showHidden':![],'depth':null}));});}else{logger[_0xbf97('0x18')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xbf97('0x3a'),'Missing\x20parameters:\x20authToken');}break;case _0xbf97('0x3b'):if(_0x452d96[_0xbf97('0x27')]&&_0x452d96[_0xbf97('0x28')]){var _0x72903c={'messages':[{'source':_0xbf97('0x3c'),'to':_0x4fe98a[_0xbf97('0x1f')],'body':_0x4fe98a[_0xbf97('0xb')],'from':_0x452d96['senderString']||_0x452d96['phone']}]};var _0x1e8707=util[_0xbf97('0x3d')](_0xbf97('0x3e'),_0x452d96[_0xbf97('0x27')],_0x452d96[_0xbf97('0x28')]);var _0x40854b={'method':_0xbf97('0x30'),'uri':_0xbf97('0x3f'),'body':_0x72903c,'headers':{'Authorization':util[_0xbf97('0x3d')](_0xbf97('0x40'),new Buffer(_0x1e8707)[_0xbf97('0x41')](_0xbf97('0x42')))},'json':!![]};rp(_0x40854b)[_0xbf97('0x15')](function(_0x5be44c){if(_0x5be44c['http_code']>=0xc8&&_0x5be44c[_0xbf97('0x43')]<=0xce){if(_0x5be44c[_0xbf97('0x44')]&&_0x5be44c[_0xbf97('0x44')]['queued_count']>0x0){var _0x4bbf3d=_[_0xbf97('0x45')](_0x5be44c[_0xbf97('0x44')][_0xbf97('0x46')]);var _0x3b8a69={'messageId':_0x4bbf3d['message_id']};if(!_0x452d96[_0xbf97('0x35')]){_0x3b8a69[_0xbf97('0x36')]=!![];}return _0x572774[_0xbf97('0x39')](_0x3b8a69);}else{logger[_0xbf97('0x18')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xbf97('0x24'),_0xbf97('0x47'),util['inspect'](_0x5be44c,{'showHidden':![],'depth':null}));}}else{logger[_0xbf97('0x18')](_0xbf97('0x23'),_0xbf97('0x24'),_0xbf97('0x47'),util[_0xbf97('0x25')](_0x5be44c,{'showHidden':![],'depth':null}));}})[_0xbf97('0x17')](function(_0x22529d){logger['error'](_0xbf97('0x23'),_0xbf97('0x24'),_0xbf97('0x47'),util[_0xbf97('0x25')](_0x22529d,{'showHidden':![],'depth':null}));});}else{logger[_0xbf97('0x18')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','clickSend',_0xbf97('0x48'));}break;case _0xbf97('0x49'):if(_0x452d96[_0xbf97('0x4a')]&&_0x452d96[_0xbf97('0x1e')]){var _0x72903c={'dst':_0x4fe98a[_0xbf97('0x1f')],'text':_0x4fe98a[_0xbf97('0xb')],'src':_0x452d96['senderString']||_0x452d96[_0xbf97('0x1f')],'url':_0x452d96[_0xbf97('0x20')]+'/api/sms/messages/'+_0x4fe98a['id']+_0xbf97('0x4b')+_0x452d96[_0xbf97('0x21')]};var _0x1e8707=util[_0xbf97('0x3d')](_0xbf97('0x3e'),_0x452d96[_0xbf97('0x4a')],_0x452d96[_0xbf97('0x1e')]);var _0x40854b={'method':'POST','uri':util[_0xbf97('0x3d')](_0xbf97('0x4c'),_0x452d96[_0xbf97('0x4a')]),'body':_0x72903c,'headers':{'Authorization':util[_0xbf97('0x3d')](_0xbf97('0x40'),new Buffer(_0x1e8707)[_0xbf97('0x41')]('base64'))},'json':!![]};rp(_0x40854b)[_0xbf97('0x15')](function(_0x5deb83){var _0x7de36a={'messageId':_0x5deb83[_0xbf97('0x4d')][0x0]};return _0x572774[_0xbf97('0x39')](_0x7de36a);})[_0xbf97('0x17')](function(_0x596095){logger[_0xbf97('0x18')](_0xbf97('0x23'),_0xbf97('0x24'),_0xbf97('0x49'),util['inspect'](_0x596095,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xbf97('0x23'),_0xbf97('0x24'),'plivo',_0xbf97('0x4e'));}break;case'infobip':if(_0x452d96[_0xbf97('0x27')]&&_0x452d96[_0xbf97('0x28')]){if(_0x452d96[_0xbf97('0x4f')]){var _0x42e479={'method':_0xbf97('0x30'),'uri':_0x452d96[_0xbf97('0x4f')]+'/auth/1/session','body':{'username':_0x452d96[_0xbf97('0x27')],'password':_0x452d96[_0xbf97('0x28')]},'json':!![]};return rp(_0x42e479)['then'](function(_0x183790){var _0x15296a={'method':'POST','uri':_0x452d96[_0xbf97('0x4f')]+_0xbf97('0x50'),'body':{'messages':[{'from':_0x452d96['phone'],'destinations':[{'to':_0x4fe98a[_0xbf97('0x1f')]}],'text':_0x4fe98a[_0xbf97('0xb')],'notifyUrl':_0x452d96['remote']+_0xbf97('0x51')+_0x4fe98a['id']+_0xbf97('0x4b')+_0x452d96['token'],'notifyContentType':_0xbf97('0x52'),'callbackData':_0x452d96[_0xbf97('0x1f')]+';'+_0x4fe98a['body']}]},'headers':{'Authorization':_0xbf97('0x53')+_0x183790[_0xbf97('0x21')]},'json':!![]};return rp(_0x15296a)[_0xbf97('0x15')](function(_0x54ffcf){if(_0x54ffcf[_0xbf97('0x46')]){var _0x18955c={'messageId':_0x54ffcf[_0xbf97('0x46')][0x0][_0xbf97('0x9')]};if(!_0x452d96['deliveryReport']){_0x18955c[_0xbf97('0x36')]=!![];}return _0x572774['update'](_0x18955c);}else{return logger[_0xbf97('0x18')](_0xbf97('0x23'),_0xbf97('0x24'),_0xbf97('0x54'),util[_0xbf97('0x25')](_0x54ffcf,{'showHidden':![],'depth':null}));}});})[_0xbf97('0x17')](function(_0x5acba0){return logger[_0xbf97('0x18')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xbf97('0x24'),'infobip',util[_0xbf97('0x25')](_0x5acba0,{'showHidden':![],'depth':null}));});}else{logger[_0xbf97('0x18')](_0xbf97('0x23'),'afterCreate',_0xbf97('0x54'),_0xbf97('0x55'));}}else{logger[_0xbf97('0x18')](_0xbf97('0x23'),'afterCreate',_0xbf97('0x54'),'Missing\x20parameters:\x20username,\x20password');}break;case'csc':var _0x2a0b25=require('crypto');if(_0x452d96[_0xbf97('0x56')]){var _0x4d9007={};_0x4d9007[_0xbf97('0x57')]=_0x452d96[_0xbf97('0x27')];_0x4d9007[_0xbf97('0x1f')]=_0x4fe98a['phone'];_0x4d9007['sender']=_0x452d96[_0xbf97('0x1f')];_0x4d9007[_0xbf97('0x58')]=_0x4fe98a[_0xbf97('0xb')];_0x4d9007[_0xbf97('0x59')]=+new Date();var _0xf582f2='';var _0x32080b='';var _0x363852=Object[_0xbf97('0x5a')](_0x4d9007);_0x363852[_0xbf97('0x5b')]();for(var _0x343b82=0x0;_0x343b82<_0x363852['length'];_0x343b82++){if(_0xf582f2!=''){_0xf582f2+='&';}_0xf582f2+=_0x363852[_0x343b82]+'='+encodeURIComponent(_0x4d9007[_0x363852[_0x343b82]]);_0x32080b+=_0x4d9007[_0x363852[_0x343b82]];}_0x32080b+=_0x452d96[_0xbf97('0x56')];_0x32080b=_0x2a0b25[_0xbf97('0x5c')]('md5')[_0xbf97('0x39')](_0x32080b)['digest'](_0xbf97('0x5d'));if(_0xf582f2!==''){_0xf582f2+='&';}_0xf582f2+=_0xbf97('0x5e')+_0x32080b;var _0x5861a3={'method':_0xbf97('0x2d'),'uri':_0x452d96[_0xbf97('0x4f')]+_0xbf97('0x5f')+_0xf582f2,'json':!![]};return rp(_0x5861a3)['then'](function(_0xd5c38f){var _0x324450=Object[_0xbf97('0x5a')](_0xd5c38f);if(_0xd5c38f[_0x324450[0x0]][_0xbf97('0x18')]&&parseInt(_0xd5c38f[_0x324450[0x0]]['error'])===0x0){var _0x1fa51e={'messageId':_0xd5c38f[_0x324450[0x0]][_0xbf97('0x60')]};if(!_0x452d96[_0xbf97('0x35')]){_0x1fa51e[_0xbf97('0x36')]=!![];}return _0x572774['update'](_0x1fa51e);}else{return logger[_0xbf97('0x18')](_0xbf97('0x23'),_0xbf97('0x24'),_0xbf97('0x61'),util[_0xbf97('0x25')](_0xd5c38f[_0xbf97('0x18')],{'showHidden':![],'depth':null}));}})[_0xbf97('0x17')](function(_0x26f6ef){return logger[_0xbf97('0x18')](_0xbf97('0x23'),_0xbf97('0x24'),_0xbf97('0x61'),util[_0xbf97('0x25')](_0x26f6ef,{'showHidden':![],'depth':null}));});}else{logger[_0xbf97('0x18')](_0xbf97('0x23'),'afterCreate',_0xbf97('0x61'),'Missing\x20parameters:\x20apiKey');}break;case _0xbf97('0x62'):if(_0x452d96[_0xbf97('0x56')]){var _0x27c079={'method':_0xbf97('0x30'),'uri':_0xbf97('0x63'),'headers':{'Authorization':_0x452d96[_0xbf97('0x56')]},'body':{'content':_0x4fe98a[_0xbf97('0xb')],'to':[_0x4fe98a['phone']],'from':_0x452d96[_0xbf97('0x1f')],'binary':![],'clientMessageId':_0xbf97('0x64'),'charset':_0xbf97('0x65')},'json':!![]};rp(_0x27c079)[_0xbf97('0x15')](function(_0x250465){if(!_0x250465['error']){var _0x58676f={'messageId':_0x250465[_0xbf97('0x46')][0x0]['apiMessageId']};if(!_0x452d96['deliveryReport']){_0x58676f[_0xbf97('0x36')]=!![];}return _0x572774[_0xbf97('0x39')](_0x58676f);}else{return logger['error'](_0xbf97('0x23'),_0xbf97('0x24'),'clickatell',util[_0xbf97('0x25')](_0x250465[_0xbf97('0x18')],{'showHidden':![],'depth':null}));}})[_0xbf97('0x17')](function(_0x390651){return logger[_0xbf97('0x18')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xbf97('0x24'),'clickatell',util[_0xbf97('0x25')](_0x390651,{'showHidden':![],'depth':null}));});}else{logger[_0xbf97('0x18')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xbf97('0x24'),_0xbf97('0x62'),'Missing\x20parameters:\x20apiKey');}break;case'intelepeer':if(_0x452d96['apiKey']){var _0x9a1947={};var _0x5861a3={'method':_0xbf97('0x30'),'uri':_0xbf97('0x66'),'headers':{'Authorization':'Bearer\x20'+_0x452d96[_0xbf97('0x56')],'Content-Type':'application/json'},'body':{'from':_0x452d96[_0xbf97('0x1f')],'to':_0x4fe98a['phone'],'text':_0x4fe98a[_0xbf97('0xb')]},'json':!![]};return rp(_0x5861a3)[_0xbf97('0x15')](function(_0x2c2d30){if(_0x2c2d30[_0xbf97('0x67')]==0xca){_0x9a1947[_0xbf97('0x68')]=_0x2c2d30;var _0x44ac3f={'method':'POST','uri':'https://api.intelepeer.com/_rest/v4/app/sms/mdr','headers':{'Authorization':_0xbf97('0x69')+_0x452d96['apiKey'],'Content-Type':_0xbf97('0x52')},'body':{'refid':_0x9a1947['message'][_0xbf97('0x6a')]},'json':!![]};return rp(_0x44ac3f)[_0xbf97('0x15')](function(_0x21f87c){_0x9a1947[_0xbf97('0x6b')]=_0x21f87c;var _0x4afb73={'messageId':_0x9a1947[_0xbf97('0x68')][_0xbf97('0x6a')],'read':!![]};return _0x572774[_0xbf97('0x39')](_0x4afb73);});}else{return logger[_0xbf97('0x18')](_0xbf97('0x23'),_0xbf97('0x24'),'intelepeer',util[_0xbf97('0x25')](_0x2c2d30,{'showHidden':![],'depth':null}));}})[_0xbf97('0x17')](function(_0x1738e0){return logger[_0xbf97('0x18')](_0xbf97('0x23'),_0xbf97('0x24'),'intelepeer',util['inspect'](_0x1738e0,{'showHidden':![],'depth':null}));});}else{return logger[_0xbf97('0x18')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xbf97('0x24'),_0xbf97('0x6c'),_0xbf97('0x6d'));}break;}}})[_0xbf97('0x6e')](function(){_0x12f414();});}else{_0x12f414();}}},'charset':_0xbf97('0x6f'),'collate':_0xbf97('0x70')});};