bfc123dbb6ada877cf97bfaddf1d8462aae972d4
[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 _0x0c6a=['bluebird','request-promise','rimraf','../../config/environment','./smsMessage.attributes','sms_messages','messageId','fti_sms_messages','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','SmsInteraction','then','update','createdAt','catch','error','find','SmsAccountId','type','twilio','phone','messages','create','body','remote','/api/sms/messages/','/status?token=','sid','afterCreate','inspect','SmsMessage,\x20%s,\x20%s,\x20%s','skebby','https://api.skebby.it/API/v1.0/REST/','username','password','smsMethod','login?username=','&password=','GET','split','sms','POST','user_key','session_key','total_sent','deliveryReport','read','connectel','authToken','senderString','https://smsapi.connectel.se/api/send/','requestid','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','format','%s:%s','Basic\x20%s','base64','http_code','queued_count','head','message_id','clickSend','plivo','token','authId','https://api.plivo.com/v1/Account/%s/Message/','toString','Missing\x20parameters:\x20authId,\x20authToken','baseUrl','/sms/2/text/advanced','application/json','IBSSO\x20','infobip','Missing\x20parameters:\x20base_url','Missing\x20parameters:\x20username,\x20password','csc','apiKey','sender','text','keys','sort','length','md5','digest','hex','signature=','id_sms','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','code','https://api.intelepeer.com/_rest/v4/app/sms/mdr','message','status','refid','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','util','api'];(function(_0x4158d9,_0x2f1979){var _0x25636d=function(_0x50b602){while(--_0x50b602){_0x4158d9['push'](_0x4158d9['shift']());}};_0x25636d(++_0x2f1979);}(_0x0c6a,0x157));var _0xa0c6=function(_0x5ecb65,_0x150439){_0x5ecb65=_0x5ecb65-0x0;var _0x32c120=_0x0c6a[_0x5ecb65];return _0x32c120;};'use strict';var _=require('lodash');var util=require(_0xa0c6('0x0'));var logger=require('../../config/logger')(_0xa0c6('0x1'));var moment=require('moment');var BPromise=require(_0xa0c6('0x2'));var rp=require(_0xa0c6('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa0c6('0x4'));var config=require(_0xa0c6('0x5'));var attributes=require(_0xa0c6('0x6'));module['exports']=function(_0x5e3c70,_0x222baa){return _0x5e3c70['define']('SmsMessage',attributes,{'tableName':_0xa0c6('0x7'),'paranoid':![],'indexes':[{'name':_0xa0c6('0x8'),'fields':['messageId']},{'name':_0xa0c6('0x9'),'fields':['body'],'type':_0xa0c6('0xa')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x437ac7,_0x584804,_0x2b9019){var _0x42ac74=_0x5e3c70[_0xa0c6('0xb')];var _0x1c613=_0x437ac7[_0xa0c6('0xc')]({'plain':!![]});if(_0x1c613[_0xa0c6('0xd')][_0xa0c6('0xe')]()==='in'||_0x1c613[_0xa0c6('0xd')][_0xa0c6('0xe')]()===_0xa0c6('0xf')&&!_0x1c613[_0xa0c6('0x10')]&&!_[_0xa0c6('0x11')](_0x1c613[_0xa0c6('0x12')])){_0x42ac74[_0xa0c6('0x13')]['findOne']({'where':{'id':_0x1c613['SmsInteractionId']}})[_0xa0c6('0x14')](function(_0x168f69){if(_0x168f69){_0x168f69[_0xa0c6('0x15')]({'lastMsgAt':_0x1c613[_0xa0c6('0x16')],'lastMsgDirection':_0x1c613['direction'][_0xa0c6('0xe')]()});}})[_0xa0c6('0x17')](function(_0x41be06){console[_0xa0c6('0x18')](_0x41be06);});}if(_0x1c613[_0xa0c6('0xd')]===_0xa0c6('0xf')&&!_0x1c613[_0xa0c6('0x10')]){var _0x17140f;_0x42ac74['SmsAccount'][_0xa0c6('0x19')]({'where':{'id':_0x1c613[_0xa0c6('0x1a')]},'raw':!![]})[_0xa0c6('0x14')](function(_0x5789e4){_0x17140f=_0x5789e4;if(_0x17140f&&_0x17140f[_0xa0c6('0x1b')]){switch(_0x17140f[_0xa0c6('0x1b')]){case'twilio':var _0x2864bc=require(_0xa0c6('0x1c'));if(_0x17140f['accountSid']&&_0x17140f['authToken']&&_0x17140f[_0xa0c6('0x1d')]){var _0x3ece27=new _0x2864bc(_0x17140f['accountSid'],_0x17140f['authToken']);_0x3ece27[_0xa0c6('0x1e')][_0xa0c6('0x1f')]({'body':_0x1c613[_0xa0c6('0x20')],'to':_0x1c613[_0xa0c6('0x1d')],'from':_0x17140f[_0xa0c6('0x1d')],'statusCallback':_0x17140f[_0xa0c6('0x21')]+_0xa0c6('0x22')+_0x1c613['id']+_0xa0c6('0x23')+_0x17140f['token']})[_0xa0c6('0x14')](function(_0x1e2274){if(_0x1e2274['sid']){return _0x437ac7[_0xa0c6('0x15')]({'messageId':_0x1e2274[_0xa0c6('0x24')]});}})[_0xa0c6('0x17')](function(_0x19ee1f){logger[_0xa0c6('0x18')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xa0c6('0x25'),'twilio',util[_0xa0c6('0x26')](_0x19ee1f,{'showHidden':![],'depth':null}));});}else{logger[_0xa0c6('0x18')](_0xa0c6('0x27'),'afterCreate',_0xa0c6('0x1c'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case _0xa0c6('0x28'):var _0x25aa05=_0xa0c6('0x29');if(_0x17140f[_0xa0c6('0x2a')]&&_0x17140f[_0xa0c6('0x2b')]){var _0x254ea5={'recipient':[_0x1c613['phone']],'message':_0x1c613[_0xa0c6('0x20')],'message_type':_0x17140f[_0xa0c6('0x2c')]};if(_0x17140f[_0xa0c6('0x2c')]&&_0x17140f[_0xa0c6('0x2c')]!=='SI'){_0x254ea5['sender']=_0x17140f[_0xa0c6('0x1d')];}var _0x453b05={'url':_0x25aa05+_0xa0c6('0x2d')+_0x17140f[_0xa0c6('0x2a')]+_0xa0c6('0x2e')+_0x17140f[_0xa0c6('0x2b')],'method':_0xa0c6('0x2f')};rp(_0x453b05)[_0xa0c6('0x14')](function(_0x17832f){var _0x19fb63=_0x17832f[_0xa0c6('0x30')](';');var _0x52c469={'user_key':_0x19fb63[0x0],'session_key':_0x19fb63[0x1]};_0x453b05={'url':_0x25aa05+_0xa0c6('0x31'),'method':_0xa0c6('0x32'),'headers':{'user_key':_0x52c469[_0xa0c6('0x33')],'Session_key':_0x52c469[_0xa0c6('0x34')]},'json':!![],'body':_0x254ea5};return rp(_0x453b05);})[_0xa0c6('0x14')](function(_0x29bb4f){if(_0x29bb4f[_0xa0c6('0x35')]>=0x1){var _0x3f4af3={'messageId':_0x29bb4f['internal_order_id']};if(_0x17140f[_0xa0c6('0x2c')]!=='GP'||!_0x17140f[_0xa0c6('0x36')]){_0x3f4af3[_0xa0c6('0x37')]=!![];}return _0x437ac7[_0xa0c6('0x15')](_0x3f4af3);}else{return logger[_0xa0c6('0x18')](_0xa0c6('0x27'),_0xa0c6('0x25'),'skebby',util[_0xa0c6('0x26')](_0x29bb4f,{'showHidden':![],'depth':null}));}})['catch'](function(_0x433fa6){return logger[_0xa0c6('0x18')](_0xa0c6('0x27'),_0xa0c6('0x25'),_0xa0c6('0x28'),util[_0xa0c6('0x26')](_0x433fa6,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xa0c6('0x27'),'afterCreate',_0xa0c6('0x28'),'Missing\x20parameters:\x20username,\x20password');}break;case _0xa0c6('0x38'):if(_0x17140f[_0xa0c6('0x39')]){var _0x179906={'recipient':_0x1c613['phone'],'message':_0x1c613[_0xa0c6('0x20')],'sender':_0x17140f[_0xa0c6('0x3a')]||_0x17140f[_0xa0c6('0x1d')],'authorization':_0x17140f[_0xa0c6('0x39')]};var _0x584804={'method':'POST','uri':_0xa0c6('0x3b'),'body':_0x179906,'json':!![]};rp(_0x584804)[_0xa0c6('0x14')](function(_0x130144){var _0x34ec3b={'messageId':_0x130144[_0xa0c6('0x3c')]};if(!_0x17140f[_0xa0c6('0x36')]){_0x34ec3b[_0xa0c6('0x37')]=!![];}return _0x437ac7[_0xa0c6('0x15')](_0x34ec3b);})[_0xa0c6('0x17')](function(_0x351007){logger[_0xa0c6('0x18')](_0xa0c6('0x27'),'afterCreate',_0xa0c6('0x38'),util[_0xa0c6('0x26')](_0x351007,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xa0c6('0x27'),_0xa0c6('0x25'),_0xa0c6('0x38'),_0xa0c6('0x3d'));}break;case _0xa0c6('0x3e'):if(_0x17140f['username']&&_0x17140f[_0xa0c6('0x2b')]){var _0x179906={'messages':[{'source':_0xa0c6('0x3f'),'to':_0x1c613['phone'],'body':_0x1c613[_0xa0c6('0x20')],'from':_0x17140f[_0xa0c6('0x3a')]||_0x17140f[_0xa0c6('0x1d')]}]};var _0x59e3e1=util[_0xa0c6('0x40')](_0xa0c6('0x41'),_0x17140f[_0xa0c6('0x2a')],_0x17140f[_0xa0c6('0x2b')]);var _0x584804={'method':_0xa0c6('0x32'),'uri':'https://rest.clicksend.com/v3/sms/send','body':_0x179906,'headers':{'Authorization':util[_0xa0c6('0x40')](_0xa0c6('0x42'),new Buffer(_0x59e3e1)['toString'](_0xa0c6('0x43')))},'json':!![]};rp(_0x584804)['then'](function(_0x41975b){if(_0x41975b[_0xa0c6('0x44')]>=0xc8&&_0x41975b[_0xa0c6('0x44')]<=0xce){if(_0x41975b['data']&&_0x41975b['data'][_0xa0c6('0x45')]>0x0){var _0x2b9daf=_[_0xa0c6('0x46')](_0x41975b['data'][_0xa0c6('0x1e')]);var _0x218ad2={'messageId':_0x2b9daf[_0xa0c6('0x47')]};if(!_0x17140f[_0xa0c6('0x36')]){_0x218ad2[_0xa0c6('0x37')]=!![];}return _0x437ac7[_0xa0c6('0x15')](_0x218ad2);}else{logger[_0xa0c6('0x18')](_0xa0c6('0x27'),_0xa0c6('0x25'),'clickSend',util[_0xa0c6('0x26')](_0x41975b,{'showHidden':![],'depth':null}));}}else{logger[_0xa0c6('0x18')](_0xa0c6('0x27'),_0xa0c6('0x25'),_0xa0c6('0x48'),util[_0xa0c6('0x26')](_0x41975b,{'showHidden':![],'depth':null}));}})[_0xa0c6('0x17')](function(_0x5c43c3){logger['error'](_0xa0c6('0x27'),_0xa0c6('0x25'),'clickSend',util[_0xa0c6('0x26')](_0x5c43c3,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xa0c6('0x27'),_0xa0c6('0x25'),_0xa0c6('0x48'),'Missing\x20parameters:\x20username,\x20password');}break;case _0xa0c6('0x49'):if(_0x17140f['authId']&&_0x17140f[_0xa0c6('0x39')]){var _0x179906={'dst':_0x1c613['phone'],'text':_0x1c613[_0xa0c6('0x20')],'src':_0x17140f['senderString']||_0x17140f[_0xa0c6('0x1d')],'url':_0x17140f['remote']+_0xa0c6('0x22')+_0x1c613['id']+_0xa0c6('0x23')+_0x17140f[_0xa0c6('0x4a')]};var _0x59e3e1=util[_0xa0c6('0x40')](_0xa0c6('0x41'),_0x17140f[_0xa0c6('0x4b')],_0x17140f[_0xa0c6('0x39')]);var _0x584804={'method':_0xa0c6('0x32'),'uri':util[_0xa0c6('0x40')](_0xa0c6('0x4c'),_0x17140f[_0xa0c6('0x4b')]),'body':_0x179906,'headers':{'Authorization':util[_0xa0c6('0x40')](_0xa0c6('0x42'),new Buffer(_0x59e3e1)[_0xa0c6('0x4d')](_0xa0c6('0x43')))},'json':!![]};rp(_0x584804)[_0xa0c6('0x14')](function(_0x26492a){var _0x380851={'messageId':_0x26492a['message_uuid'][0x0]};return _0x437ac7[_0xa0c6('0x15')](_0x380851);})['catch'](function(_0x3b59d4){logger[_0xa0c6('0x18')](_0xa0c6('0x27'),_0xa0c6('0x25'),_0xa0c6('0x49'),util[_0xa0c6('0x26')](_0x3b59d4,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xa0c6('0x27'),_0xa0c6('0x25'),_0xa0c6('0x49'),_0xa0c6('0x4e'));}break;case'infobip':if(_0x17140f[_0xa0c6('0x2a')]&&_0x17140f[_0xa0c6('0x2b')]){if(_0x17140f[_0xa0c6('0x4f')]){var _0x19b1ca={'method':_0xa0c6('0x32'),'uri':_0x17140f['baseUrl']+'/auth/1/session','body':{'username':_0x17140f['username'],'password':_0x17140f[_0xa0c6('0x2b')]},'json':!![]};return rp(_0x19b1ca)[_0xa0c6('0x14')](function(_0x4f7e50){var _0x5b5996={'method':'POST','uri':_0x17140f[_0xa0c6('0x4f')]+_0xa0c6('0x50'),'body':{'messages':[{'from':_0x17140f[_0xa0c6('0x1d')],'destinations':[{'to':_0x1c613['phone']}],'text':_0x1c613[_0xa0c6('0x20')],'notifyUrl':_0x17140f[_0xa0c6('0x21')]+_0xa0c6('0x22')+_0x1c613['id']+_0xa0c6('0x23')+_0x17140f['token'],'notifyContentType':_0xa0c6('0x51'),'callbackData':_0x17140f['phone']+';'+_0x1c613['body']}]},'headers':{'Authorization':_0xa0c6('0x52')+_0x4f7e50[_0xa0c6('0x4a')]},'json':!![]};return rp(_0x5b5996)['then'](function(_0x27877a){if(_0x27877a[_0xa0c6('0x1e')]){var _0x14b2c2={'messageId':_0x27877a[_0xa0c6('0x1e')][0x0]['messageId']};if(!_0x17140f[_0xa0c6('0x36')]){_0x14b2c2['read']=!![];}return _0x437ac7['update'](_0x14b2c2);}else{return logger['error'](_0xa0c6('0x27'),'afterCreate',_0xa0c6('0x53'),util[_0xa0c6('0x26')](_0x27877a,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x5007ab){return logger[_0xa0c6('0x18')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xa0c6('0x25'),_0xa0c6('0x53'),util['inspect'](_0x5007ab,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xa0c6('0x25'),_0xa0c6('0x53'),_0xa0c6('0x54'));}}else{logger[_0xa0c6('0x18')](_0xa0c6('0x27'),_0xa0c6('0x25'),_0xa0c6('0x53'),_0xa0c6('0x55'));}break;case _0xa0c6('0x56'):var _0x4446cd=require('crypto');if(_0x17140f[_0xa0c6('0x57')]){var _0x332837={};_0x332837['login']=_0x17140f[_0xa0c6('0x2a')];_0x332837[_0xa0c6('0x1d')]=_0x1c613[_0xa0c6('0x1d')];_0x332837[_0xa0c6('0x58')]=_0x17140f[_0xa0c6('0x1d')];_0x332837[_0xa0c6('0x59')]=_0x1c613[_0xa0c6('0x20')];_0x332837['timestamp']=+new Date();var _0x31c129='';var _0x4e4120='';var _0x25ee8a=Object[_0xa0c6('0x5a')](_0x332837);_0x25ee8a[_0xa0c6('0x5b')]();for(var _0x34891f=0x0;_0x34891f<_0x25ee8a[_0xa0c6('0x5c')];_0x34891f++){if(_0x31c129!=''){_0x31c129+='&';}_0x31c129+=_0x25ee8a[_0x34891f]+'='+encodeURIComponent(_0x332837[_0x25ee8a[_0x34891f]]);_0x4e4120+=_0x332837[_0x25ee8a[_0x34891f]];}_0x4e4120+=_0x17140f[_0xa0c6('0x57')];_0x4e4120=_0x4446cd['createHash'](_0xa0c6('0x5d'))['update'](_0x4e4120)[_0xa0c6('0x5e')](_0xa0c6('0x5f'));if(_0x31c129!==''){_0x31c129+='&';}_0x31c129+=_0xa0c6('0x60')+_0x4e4120;var _0x453b05={'method':_0xa0c6('0x2f'),'uri':_0x17140f['baseUrl']+'/external/get/send.php?'+_0x31c129,'json':!![]};return rp(_0x453b05)[_0xa0c6('0x14')](function(_0x26538e){var _0x219278=Object[_0xa0c6('0x5a')](_0x26538e);if(_0x26538e[_0x219278[0x0]]['error']&&parseInt(_0x26538e[_0x219278[0x0]][_0xa0c6('0x18')])===0x0){var _0x362a72={'messageId':_0x26538e[_0x219278[0x0]][_0xa0c6('0x61')]};if(!_0x17140f[_0xa0c6('0x36')]){_0x362a72[_0xa0c6('0x37')]=!![];}return _0x437ac7['update'](_0x362a72);}else{return logger[_0xa0c6('0x18')](_0xa0c6('0x27'),_0xa0c6('0x25'),_0xa0c6('0x56'),util[_0xa0c6('0x26')](_0x26538e[_0xa0c6('0x18')],{'showHidden':![],'depth':null}));}})[_0xa0c6('0x17')](function(_0x3e74db){return logger[_0xa0c6('0x18')](_0xa0c6('0x27'),'afterCreate',_0xa0c6('0x56'),util[_0xa0c6('0x26')](_0x3e74db,{'showHidden':![],'depth':null}));});}else{logger[_0xa0c6('0x18')](_0xa0c6('0x27'),_0xa0c6('0x25'),'csc',_0xa0c6('0x62'));}break;case _0xa0c6('0x63'):if(_0x17140f[_0xa0c6('0x57')]){var _0x32b19c={'method':_0xa0c6('0x32'),'uri':_0xa0c6('0x64'),'headers':{'Authorization':_0x17140f[_0xa0c6('0x57')]},'body':{'content':_0x1c613['body'],'to':[_0x1c613[_0xa0c6('0x1d')]],'from':_0x17140f[_0xa0c6('0x1d')],'binary':![],'clientMessageId':_0xa0c6('0x65'),'charset':_0xa0c6('0x66')},'json':!![]};rp(_0x32b19c)['then'](function(_0x2ae67a){if(!_0x2ae67a[_0xa0c6('0x18')]){var _0x1a5d08={'messageId':_0x2ae67a[_0xa0c6('0x1e')][0x0][_0xa0c6('0x67')]};if(!_0x17140f[_0xa0c6('0x36')]){_0x1a5d08[_0xa0c6('0x37')]=!![];}return _0x437ac7[_0xa0c6('0x15')](_0x1a5d08);}else{return logger['error'](_0xa0c6('0x27'),_0xa0c6('0x25'),_0xa0c6('0x63'),util[_0xa0c6('0x26')](_0x2ae67a[_0xa0c6('0x18')],{'showHidden':![],'depth':null}));}})[_0xa0c6('0x17')](function(_0x21c079){return logger['error'](_0xa0c6('0x27'),'afterCreate',_0xa0c6('0x63'),util[_0xa0c6('0x26')](_0x21c079,{'showHidden':![],'depth':null}));});}else{logger[_0xa0c6('0x18')](_0xa0c6('0x27'),_0xa0c6('0x25'),_0xa0c6('0x63'),_0xa0c6('0x62'));}break;case _0xa0c6('0x68'):if(_0x17140f['apiKey']){var _0x1e8b78={};var _0x453b05={'method':_0xa0c6('0x32'),'uri':_0xa0c6('0x69'),'headers':{'Authorization':'Bearer\x20'+_0x17140f[_0xa0c6('0x57')],'Content-Type':_0xa0c6('0x51')},'body':{'from':_0x17140f[_0xa0c6('0x1d')],'to':_0x1c613['phone'],'text':_0x1c613[_0xa0c6('0x20')]},'json':!![]};return rp(_0x453b05)[_0xa0c6('0x14')](function(_0x38371d){if(_0x38371d[_0xa0c6('0x6a')]==0xca){_0x1e8b78['message']=_0x38371d;var _0x1d1c4c={'method':'POST','uri':_0xa0c6('0x6b'),'headers':{'Authorization':'Bearer\x20'+_0x17140f[_0xa0c6('0x57')],'Content-Type':_0xa0c6('0x51')},'body':{'refid':_0x1e8b78[_0xa0c6('0x6c')]['refid']},'json':!![]};return rp(_0x1d1c4c)['then'](function(_0x32df3c){_0x1e8b78[_0xa0c6('0x6d')]=_0x32df3c;var _0x483428={'messageId':_0x1e8b78[_0xa0c6('0x6c')][_0xa0c6('0x6e')],'read':!![]};return _0x437ac7['update'](_0x483428);});}else{return logger[_0xa0c6('0x18')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xa0c6('0x25'),'intelepeer',util[_0xa0c6('0x26')](_0x38371d,{'showHidden':![],'depth':null}));}})[_0xa0c6('0x17')](function(_0x577b4f){return logger[_0xa0c6('0x18')](_0xa0c6('0x27'),'afterCreate',_0xa0c6('0x68'),util[_0xa0c6('0x26')](_0x577b4f,{'showHidden':![],'depth':null}));});}else{return logger[_0xa0c6('0x18')](_0xa0c6('0x27'),'afterCreate','intelepeer',_0xa0c6('0x6f'));}break;}}})[_0xa0c6('0x70')](function(){_0x2b9019();});}else{_0x2b9019();}}},'charset':_0xa0c6('0x71'),'collate':_0xa0c6('0x72')});};