5aad5fd2257902c40045e824bcc460c04a52baec
[motion2.git] / server / api / whatsappMessage / whatsappMessage.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 _0x9b37=['afterCreate','inspect','error','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','/messages/','text','message_id','update','statuses','finally','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','node-fetch','path','rimraf','../../config/environment','exports','define','whatsapp_messages','messageId','body','models','get','toLowerCase','direction','out','isNil','UserId','WhatsappInteraction','findOne','WhatsappInteractionId','then','catch','secret','WhatsappAccount','find','type','twilio','authToken','phone','accountSid','messages','whatsapp:','remote','/status?token=','token','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9b37,0x1c5));var _0x79b3=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0x9b37[_0x4d613c];return _0x301fe3;};'use strict';var _=require('lodash');var util=require(_0x79b3('0x0'));var logger=require(_0x79b3('0x1'))(_0x79b3('0x2'));var moment=require(_0x79b3('0x3'));var BPromise=require(_0x79b3('0x4'));var rp=require(_0x79b3('0x5'));var fetch=require(_0x79b3('0x6'));var fs=require('fs');var path=require(_0x79b3('0x7'));var rimraf=require(_0x79b3('0x8'));var config=require(_0x79b3('0x9'));var attributes=require('./whatsappMessage.attributes');module[_0x79b3('0xa')]=function(_0x1396e5,_0x4f9609){return _0x1396e5[_0x79b3('0xb')]('WhatsappMessage',attributes,{'tableName':_0x79b3('0xc'),'paranoid':![],'indexes':[{'name':_0x79b3('0xd'),'fields':[_0x79b3('0xd')]},{'name':'fti_whatsapp_messages','fields':[_0x79b3('0xe')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5f10f0,_0x3a2e69,_0x2d8af3){var _0x581378=_0x1396e5[_0x79b3('0xf')];var _0x48844d=_0x5f10f0[_0x79b3('0x10')]({'plain':!![]});if(_0x48844d['direction'][_0x79b3('0x11')]()==='in'||_0x48844d[_0x79b3('0x12')][_0x79b3('0x11')]()===_0x79b3('0x13')&&!_0x48844d['secret']&&!_[_0x79b3('0x14')](_0x48844d[_0x79b3('0x15')])){_0x581378[_0x79b3('0x16')][_0x79b3('0x17')]({'where':{'id':_0x48844d[_0x79b3('0x18')]}})[_0x79b3('0x19')](function(_0x4bf2ca){if(_0x4bf2ca){_0x4bf2ca['update']({'lastMsgAt':_0x48844d['createdAt'],'lastMsgDirection':_0x48844d[_0x79b3('0x12')][_0x79b3('0x11')]()});}})[_0x79b3('0x1a')](function(_0x1313eb){console['error'](_0x1313eb);});}if(_0x48844d[_0x79b3('0x12')]===_0x79b3('0x13')&&!_0x48844d[_0x79b3('0x1b')]){var _0x43f6f4;_0x581378[_0x79b3('0x1c')][_0x79b3('0x1d')]({'where':{'id':_0x48844d['WhatsappAccountId']},'raw':!![]})[_0x79b3('0x19')](function(_0x72606d){_0x43f6f4=_0x72606d;if(_0x43f6f4&&_0x43f6f4['type']){switch(_0x43f6f4[_0x79b3('0x1e')]){case _0x79b3('0x1f'):var _0x2ce6bc=require(_0x79b3('0x1f'));if(_0x43f6f4['accountSid']&&_0x43f6f4[_0x79b3('0x20')]&&_0x43f6f4[_0x79b3('0x21')]){var _0x41cee1=new _0x2ce6bc(_0x43f6f4[_0x79b3('0x22')],_0x43f6f4[_0x79b3('0x20')]);_0x41cee1[_0x79b3('0x23')]['create']({'body':_0x48844d[_0x79b3('0xe')],'to':_0x79b3('0x24')+_0x48844d[_0x79b3('0x21')],'from':'whatsapp:'+_0x43f6f4['phone'],'statusCallback':_0x43f6f4[_0x79b3('0x25')]+'/api/whatsapp/messages/'+_0x48844d['id']+_0x79b3('0x26')+_0x43f6f4[_0x79b3('0x27')]})[_0x79b3('0x19')](function(_0xd3a380){if(_0xd3a380[_0x79b3('0x28')]){return _0x5f10f0['update']({'messageId':_0xd3a380[_0x79b3('0x28')]});}})[_0x79b3('0x1a')](function(_0x2536c8){logger['error'](_0x79b3('0x29'),_0x79b3('0x2a'),_0x79b3('0x1f'),util[_0x79b3('0x2b')](_0x2536c8,{'showHidden':![],'depth':null}));});}else{logger[_0x79b3('0x2c')](_0x79b3('0x29'),_0x79b3('0x2a'),_0x79b3('0x1f'),_0x79b3('0x2d'));}break;case _0x79b3('0x2e'):var _0x5ca155=_0x43f6f4[_0x79b3('0x22')];var _0x527ff2=_0x43f6f4[_0x79b3('0x20')];var _0x36381b=_0x43f6f4['baseUrl']+'/whatsapp/v1/'+_0x5ca155+_0x79b3('0x2f');var _0xcda4e8={'to':[_0x48844d[_0x79b3('0x21')]],'message':{'type':_0x79b3('0x30'),'text':_0x48844d[_0x79b3('0xe')]}};var _0x50f14d={'method':'POST','uri':_0x36381b,'headers':{'Authorization':'Bearer\x20'+_0x527ff2,'Content-Type':'application/json'},'body':_0xcda4e8,'json':!![]};rp(_0x50f14d)[_0x79b3('0x19')](function(_0x57cfc6){if(_0x57cfc6['statuses'][0x0][_0x79b3('0x31')]){return _0x5f10f0[_0x79b3('0x32')]({'messageId':_0x57cfc6[_0x79b3('0x33')][0x0][_0x79b3('0x31')]});}})['catch'](function(_0x44318a){logger['err']('WhatsappMessage,\x20%s',_0x44318a);});break;}}})[_0x79b3('0x34')](function(){_0x2d8af3();});}else{_0x2d8af3();}}},'charset':_0x79b3('0x35'),'collate':_0x79b3('0x36')});};