a71069bb6bd3f2fefb7bcd61e81262a2fad70820
[motion2.git] / server / api / whatsappMessage / whatsappMessage.controller.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 _0x14a0=['RejectMessage','rejectMessage','interface','SIP/%s','WhatsappAccount','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','squel','crypto','jsforce','querystring','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','jayson/promise','http','client','request','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','end','status','json','count','offset','limit','set','Content-Range','apply','reject','save','update','destroy','sendStatus','stack','name','index','map','WhatsappMessage','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','rawAttributes','find','create','body','describe','whatsapp-interactions','accept','whatsapp','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','CmContact','Contact','WhatsappInteractionId','UserId','isNil','read1stAt','get','user','role','interaction','null','AcceptMessage','acceptMessage','manual','channel','event','EventManager','WhatsappInteraction','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s'];(function(_0x2307fa,_0x266e5e){var _0x496486=function(_0x53466e){while(--_0x53466e){_0x2307fa['push'](_0x2307fa['shift']());}};_0x496486(++_0x266e5e);}(_0x14a0,0x8e));var _0x014a=function(_0x3cfb62,_0x5b588c){_0x3cfb62=_0x3cfb62-0x0;var _0x1aaf79=_0x14a0[_0x3cfb62];return _0x1aaf79;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x014a('0x0'));var rimraf=require(_0x014a('0x1'));var zipdir=require(_0x014a('0x2'));var jsonpatch=require(_0x014a('0x3'));var rp=require(_0x014a('0x4'));var moment=require(_0x014a('0x5'));var BPromise=require(_0x014a('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x014a('0x7'));var sox=require(_0x014a('0x8'));var csv=require(_0x014a('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require(_0x014a('0xa'));var crypto=require(_0x014a('0xb'));var jsforce=require(_0x014a('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x014a('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x014a('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x014a('0xf'))(_0x014a('0x10'));var utils=require('../../config/utils');var config=require(_0x014a('0x11'));var licenseUtil=require(_0x014a('0x12'));var db=require(_0x014a('0x13'))['db'];config[_0x014a('0x14')]=_[_0x014a('0x15')](config[_0x014a('0x14')],{'host':_0x014a('0x16'),'port':0x18eb});var socket=require(_0x014a('0x17'))(new Redis(config[_0x014a('0x14')]));require(_0x014a('0x18'))[_0x014a('0x19')](socket);var jayson=require(_0x014a('0x1a'));var client=jayson['client'][_0x014a('0x1b')]({'port':0x232c});var client9002=jayson[_0x014a('0x1c')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3a836f,_0x128c46,_0x59a4ea,_0x16e6fc){return new BPromise(function(_0x17e4be,_0x20f148){var _0x12da95=_0x16e6fc||client;return _0x12da95[_0x014a('0x1d')](_0x3a836f,_0x59a4ea)[_0x014a('0x1e')](function(_0x61ec9f){logger[_0x014a('0x1f')](_0x014a('0x20'),_0x128c46,_0x014a('0x21'));logger[_0x014a('0x22')](_0x014a('0x23'),_0x128c46,_0x014a('0x21'),JSON[_0x014a('0x24')](_0x61ec9f));if(_0x61ec9f['error']){if(_0x61ec9f[_0x014a('0x25')][_0x014a('0x26')]===0x1f4){logger[_0x014a('0x25')](_0x014a('0x20'),_0x128c46,_0x61ec9f[_0x014a('0x25')][_0x014a('0x27')]);return _0x20f148(_0x61ec9f[_0x014a('0x25')][_0x014a('0x27')]);}logger[_0x014a('0x25')]('WhatsappMessage,\x20%s,\x20%s',_0x128c46,_0x61ec9f[_0x014a('0x25')]['message']);return _0x17e4be(_0x61ec9f[_0x014a('0x25')][_0x014a('0x27')]);}else{logger[_0x014a('0x1f')](_0x014a('0x20'),_0x128c46,_0x014a('0x21'));_0x17e4be(_0x61ec9f[_0x014a('0x28')][_0x014a('0x27')]);}})[_0x014a('0x29')](function(_0x165a42){logger['error'](_0x014a('0x20'),_0x128c46,_0x165a42);_0x20f148(_0x165a42);});});}function respondWithStatusCode(_0x5358e9,_0x39a432){_0x39a432=_0x39a432||0xcc;return function(_0x28701e){if(_0x28701e){return _0x5358e9['sendStatus'](_0x39a432);}return _0x5358e9['status'](_0x39a432)[_0x014a('0x2a')]();};}function respondWithResult(_0x3f9719,_0x143346){_0x143346=_0x143346||0xc8;return function(_0x5ed71b){if(_0x5ed71b){return _0x3f9719[_0x014a('0x2b')](_0x143346)[_0x014a('0x2c')](_0x5ed71b);}};}function respondWithFilteredResult(_0x598179,_0x31dc95){return function(_0x2560a6){if(_0x2560a6){var _0x496040=_0x2560a6[_0x014a('0x2d')],_0x4f9c1c=_0x31dc95[_0x014a('0x2e')],_0x397850=_0x31dc95['offset']+_0x31dc95[_0x014a('0x2f')],_0x3e5a0a;if(_0x397850>=_0x496040){_0x397850=_0x496040;_0x3e5a0a=0xc8;}else{_0x3e5a0a=0xce;}_0x598179[_0x014a('0x2b')](_0x3e5a0a);return _0x598179[_0x014a('0x30')](_0x014a('0x31'),_0x4f9c1c+'-'+_0x397850+'/'+_0x496040)[_0x014a('0x2c')](_0x2560a6);}return null;};}function patchUpdates(_0x1eb007){return function(_0x354f4c){try{jsonpatch[_0x014a('0x32')](_0x354f4c,_0x1eb007,!![]);}catch(_0xc802d5){return BPromise[_0x014a('0x33')](_0xc802d5);}return _0x354f4c[_0x014a('0x34')]();};}function saveUpdates(_0x4ed54e,_0x105d4a){return function(_0x41ead8){if(_0x41ead8){return _0x41ead8[_0x014a('0x35')](_0x4ed54e)[_0x014a('0x1e')](function(_0x5f1022){return _0x5f1022;});}return null;};}function removeEntity(_0x39b3b8,_0x211d18){return function(_0x4dd025){if(_0x4dd025){return _0x4dd025[_0x014a('0x36')]()[_0x014a('0x1e')](function(){_0x39b3b8['status'](0xcc)[_0x014a('0x2a')]();});}};}function handleEntityNotFound(_0x12de94,_0x40738f){return function(_0x467032){if(!_0x467032){_0x12de94[_0x014a('0x37')](0x194);}return _0x467032;};}function handleError(_0xa8fcfb,_0x26a5e8){_0x26a5e8=_0x26a5e8||0x1f4;return function(_0x1cff0f){logger['error'](_0x1cff0f[_0x014a('0x38')]);if(_0x1cff0f[_0x014a('0x39')]){delete _0x1cff0f[_0x014a('0x39')];}_0xa8fcfb[_0x014a('0x2b')](_0x26a5e8)['send'](_0x1cff0f);};}exports[_0x014a('0x3a')]=function(_0x978870,_0x27ee0c){var _0x157bd0={},_0x35e527={},_0x309925={'count':0x0,'rows':[]};var _0x128fb9=_[_0x014a('0x3b')](db[_0x014a('0x3c')]['rawAttributes'],function(_0x1b34f8){return{'name':_0x1b34f8['fieldName'],'type':_0x1b34f8[_0x014a('0x3d')][_0x014a('0x3e')]};});_0x35e527[_0x014a('0x3f')]=_[_0x014a('0x3b')](_0x128fb9,_0x014a('0x39'));_0x35e527['query']=_[_0x014a('0x40')](_0x978870[_0x014a('0x41')]);_0x35e527['filters']=_[_0x014a('0x42')](_0x35e527[_0x014a('0x3f')],_0x35e527[_0x014a('0x41')]);_0x157bd0[_0x014a('0x43')]=_[_0x014a('0x42')](_0x35e527[_0x014a('0x3f')],qs[_0x014a('0x44')](_0x978870[_0x014a('0x41')][_0x014a('0x44')]));_0x157bd0['attributes']=_0x157bd0[_0x014a('0x43')][_0x014a('0x45')]?_0x157bd0[_0x014a('0x43')]:_0x35e527[_0x014a('0x3f')];if(!_0x978870['query'][_0x014a('0x46')](_0x014a('0x47'))){_0x157bd0[_0x014a('0x2f')]=qs[_0x014a('0x2f')](_0x978870[_0x014a('0x41')][_0x014a('0x2f')]);_0x157bd0['offset']=qs[_0x014a('0x2e')](_0x978870[_0x014a('0x41')]['offset']);}_0x157bd0[_0x014a('0x48')]=qs[_0x014a('0x49')](_0x978870[_0x014a('0x41')]['sort']);_0x157bd0[_0x014a('0x4a')]=qs['filters'](_['pick'](_0x978870[_0x014a('0x41')],_0x35e527[_0x014a('0x4b')]),_0x128fb9);if(_0x978870['query'][_0x014a('0x4c')]){_0x157bd0[_0x014a('0x4a')]=_[_0x014a('0x4d')](_0x157bd0[_0x014a('0x4a')],{'$or':_[_0x014a('0x3b')](_0x128fb9,function(_0xbaf8c6){if(_0xbaf8c6['type']!==_0x014a('0x4e')){var _0xb0d8e0={};_0xb0d8e0[_0xbaf8c6[_0x014a('0x39')]]={'$like':'%'+_0x978870['query']['filter']+'%'};return _0xb0d8e0;}})});}_0x157bd0=_[_0x014a('0x4d')]({},_0x157bd0,_0x978870['options']);var _0x489590={'where':_0x157bd0[_0x014a('0x4a')]};return db['WhatsappMessage'][_0x014a('0x2d')](_0x489590)[_0x014a('0x1e')](function(_0x36372d){_0x309925['count']=_0x36372d;if(_0x978870[_0x014a('0x41')][_0x014a('0x4f')]){_0x157bd0[_0x014a('0x50')]=[{'all':!![]}];}return db[_0x014a('0x3c')][_0x014a('0x51')](_0x157bd0);})[_0x014a('0x1e')](function(_0x559954){_0x309925[_0x014a('0x52')]=_0x559954;return _0x309925;})[_0x014a('0x1e')](respondWithFilteredResult(_0x27ee0c,_0x157bd0))['catch'](handleError(_0x27ee0c,null));};exports[_0x014a('0x53')]=function(_0x29345b,_0x20bb0c){var _0x324df7={'raw':!![],'where':{'id':_0x29345b[_0x014a('0x54')]['id']}},_0x40a9c1={};_0x40a9c1[_0x014a('0x3f')]=_[_0x014a('0x40')](db['WhatsappMessage'][_0x014a('0x55')]);_0x40a9c1[_0x014a('0x41')]=_[_0x014a('0x40')](_0x29345b[_0x014a('0x41')]);_0x40a9c1[_0x014a('0x4b')]=_['intersection'](_0x40a9c1[_0x014a('0x3f')],_0x40a9c1['query']);_0x324df7[_0x014a('0x43')]=_[_0x014a('0x42')](_0x40a9c1[_0x014a('0x3f')],qs[_0x014a('0x44')](_0x29345b[_0x014a('0x41')]['fields']));_0x324df7['attributes']=_0x324df7['attributes']['length']?_0x324df7[_0x014a('0x43')]:_0x40a9c1['model'];if(_0x29345b[_0x014a('0x41')]['includeAll']){_0x324df7['include']=[{'all':!![]}];}_0x324df7=_[_0x014a('0x4d')]({},_0x324df7,_0x29345b['options']);return db[_0x014a('0x3c')][_0x014a('0x56')](_0x324df7)[_0x014a('0x1e')](handleEntityNotFound(_0x20bb0c,null))[_0x014a('0x1e')](respondWithResult(_0x20bb0c,null))[_0x014a('0x29')](handleError(_0x20bb0c,null));};exports[_0x014a('0x57')]=function(_0x35a421,_0x46fa9d){return db[_0x014a('0x3c')][_0x014a('0x57')](_0x35a421['body'],{})['then'](respondWithResult(_0x46fa9d,0xc9))[_0x014a('0x29')](handleError(_0x46fa9d,null));};exports[_0x014a('0x35')]=function(_0x237345,_0x4cc246){if(_0x237345['body']['id']){delete _0x237345[_0x014a('0x58')]['id'];}return db['WhatsappMessage'][_0x014a('0x56')]({'where':{'id':_0x237345[_0x014a('0x54')]['id']}})[_0x014a('0x1e')](handleEntityNotFound(_0x4cc246,null))[_0x014a('0x1e')](saveUpdates(_0x237345['body'],null))[_0x014a('0x1e')](respondWithResult(_0x4cc246,null))[_0x014a('0x29')](handleError(_0x4cc246,null));};exports[_0x014a('0x36')]=function(_0x56c09b,_0xbaeb5f){return db['WhatsappMessage'][_0x014a('0x56')]({'where':{'id':_0x56c09b[_0x014a('0x54')]['id']}})[_0x014a('0x1e')](handleEntityNotFound(_0xbaeb5f,null))[_0x014a('0x1e')](removeEntity(_0xbaeb5f,null))[_0x014a('0x29')](handleError(_0xbaeb5f,null));};exports[_0x014a('0x59')]=function(_0x4e9260,_0x889080){return db[_0x014a('0x3c')][_0x014a('0x59')]()['then'](respondWithResult(_0x889080,null))[_0x014a('0x29')](handleError(_0x889080,null));};var interaction_log=require(_0x014a('0xf'))(_0x014a('0x5a'));exports[_0x014a('0x5b')]=function(_0x11bf5c,_0x5da1f7,_0x8ac9cd){var _0x46168d={'channel':_0x014a('0x5c')};if(_0x11bf5c[_0x014a('0x58')]['id']){delete _0x11bf5c[_0x014a('0x58')]['id'];}_0x11bf5c[_0x014a('0x58')][_0x014a('0x5d')]=!![];_0x11bf5c[_0x014a('0x58')][_0x014a('0x5e')]=moment()[_0x014a('0x5f')](_0x014a('0x60'));_0x11bf5c[_0x014a('0x58')]['UserId']=_0x11bf5c[_0x014a('0x58')]['UserId']||_0x11bf5c['user']['id'];return db['WhatsappMessage']['find']({'where':{'id':_0x11bf5c['params']['id'],'UserId':null},'include':[{'model':db[_0x014a('0x61')],'as':_0x014a('0x62')}]})[_0x014a('0x1e')](handleEntityNotFound(_0x5da1f7,null))['then'](saveUpdates(_0x11bf5c[_0x014a('0x58')],null))[_0x014a('0x1e')](function(_0x3071c8){if(_0x3071c8){_0x46168d[_0x014a('0x27')]=_0x3071c8['get']({'plain':!![]});return db['WhatsappInteraction'][_0x014a('0x56')]({'where':{'id':_0x3071c8[_0x014a('0x63')]}});}return null;})[_0x014a('0x1e')](handleEntityNotFound(_0x5da1f7,null))[_0x014a('0x1e')](function(_0x34c0b2){if(_0x34c0b2){return _0x34c0b2[_0x014a('0x35')]({'UserId':_0x11bf5c[_0x014a('0x58')][_0x014a('0x64')],'read1stAt':_[_0x014a('0x65')](_0x34c0b2[_0x014a('0x66')])?moment()[_0x014a('0x5f')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x014a('0x1e')](function(_0x25a53b){if(_0x25a53b){_0x46168d['interaction']=_0x25a53b[_0x014a('0x67')]({'plain':!![]});interaction_log[_0x014a('0x1f')]('[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x11bf5c[_0x014a('0x68')]['id'],_0x11bf5c['user'][_0x014a('0x39')],_0x11bf5c[_0x014a('0x68')][_0x014a('0x69')],_0x46168d[_0x014a('0x6a')]['id'],_0x11bf5c[_0x014a('0x58')]?JSON['stringify'](_0x11bf5c[_0x014a('0x58')]):_0x014a('0x6b'));return respondWithRpcPromise(_0x014a('0x6c'),_0x014a('0x6d'),_0x46168d);}return null;})[_0x014a('0x1e')](function(_0x52e79e){if(_0x52e79e){if(_0x11bf5c[_0x014a('0x58')][_0x014a('0x6e')]){_0x46168d[_0x014a('0x27')]['interface']=util[_0x014a('0x5f')]('SIP/%s',_0x11bf5c[_0x014a('0x68')][_0x014a('0x39')]);_0x46168d[_0x014a('0x27')][_0x014a('0x6f')]=_0x46168d[_0x014a('0x6f')];_0x46168d[_0x014a('0x27')][_0x014a('0x70')]='accept';return respondWithRpcPromise('EventManager',_0x014a('0x71'),{'event':'acceptmessage','message':_0x46168d[_0x014a('0x27')]},client9002)['then'](function(){return _0x46168d;});}return _0x46168d;}return null;})[_0x014a('0x1e')](respondWithResult(_0x5da1f7,null))[_0x014a('0x29')](handleError(_0x5da1f7,null));};var interaction_log=require('../../config/logger')('whatsapp-interactions');exports[_0x014a('0x33')]=function(_0x8234ee,_0x5f391d,_0x882fc9){var _0x42e4e9={'agent':{},'channel':'whatsapp'};if(_0x8234ee['body']['id']){delete _0x8234ee[_0x014a('0x58')]['id'];}_0x8234ee[_0x014a('0x58')][_0x014a('0x64')]=_0x8234ee[_0x014a('0x58')][_0x014a('0x64')]||_0x8234ee[_0x014a('0x68')]['id'];_0x42e4e9['agent']['id']=_0x8234ee[_0x014a('0x58')]['UserId'];return db['WhatsappMessage'][_0x014a('0x56')]({'where':{'id':_0x8234ee[_0x014a('0x54')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x5f391d,null))[_0x014a('0x1e')](function(_0x43165e){if(_0x43165e){_0x42e4e9[_0x014a('0x27')]=_0x43165e[_0x014a('0x67')]({'plain':!![]});return db[_0x014a('0x72')]['find']({'where':{'id':_0x43165e[_0x014a('0x63')]}});}return null;})[_0x014a('0x1e')](handleEntityNotFound(_0x5f391d,null))[_0x014a('0x1e')](function(_0x163fa2){if(_0x163fa2){_0x42e4e9['interaction']=_0x163fa2[_0x014a('0x67')]({'plain':!![]});interaction_log['info'](_0x014a('0x73'),_0x8234ee[_0x014a('0x68')]['id'],_0x8234ee[_0x014a('0x68')][_0x014a('0x39')],_0x8234ee[_0x014a('0x68')][_0x014a('0x69')],_0x42e4e9['interaction']['id'],_0x8234ee[_0x014a('0x58')]?JSON[_0x014a('0x24')](_0x8234ee[_0x014a('0x58')]):_0x014a('0x6b'));return respondWithRpcPromise(_0x014a('0x74'),_0x014a('0x75'),_0x42e4e9);}return null;})[_0x014a('0x1e')](function(_0x28a8a9){if(_0x28a8a9){_0x28a8a9['message'][_0x014a('0x76')]=util[_0x014a('0x5f')](_0x014a('0x77'),_0x8234ee['user'][_0x014a('0x39')]);_0x28a8a9[_0x014a('0x27')][_0x014a('0x6f')]=_0x42e4e9[_0x014a('0x6f')];_0x28a8a9[_0x014a('0x27')][_0x014a('0x70')]=_0x014a('0x33');respondWithRpcPromise('EventManager','EventManager',{'event':'rejectmessage','message':_0x28a8a9['message']},client9002);return _0x42e4e9;}return null;})[_0x014a('0x1e')](respondWithResult(_0x5f391d,null))[_0x014a('0x29')](handleError(_0x5f391d,null));};exports[_0x014a('0x2b')]=function(_0x3804e1,_0xe1b5ed,_0x7cd599){if(_0x3804e1[_0x014a('0x58')]['id']){delete _0x3804e1['body']['id'];}var _0x24ffb0;return db[_0x014a('0x3c')][_0x014a('0x56')]({'where':{'id':_0x3804e1[_0x014a('0x54')]['id']}})['then'](handleEntityNotFound(_0xe1b5ed,null))['then'](function(_0x13e2fc){if(_0x13e2fc){_0x24ffb0=_0x13e2fc;return db[_0x014a('0x78')]['find']({'where':{'id':_0x13e2fc['WhatsappAccountId']}});}})[_0x014a('0x1e')](handleEntityNotFound(_0xe1b5ed,null))['then'](function(_0x5d4099){if(_0x5d4099){logger[_0x014a('0x22')](_0x014a('0x79'),'status',_0x014a('0x7a'),_0x5d4099[_0x014a('0x3d')],util[_0x014a('0x7b')](_0x3804e1[_0x014a('0x58')],{'showHidden':![],'depth':null}));switch(_0x5d4099[_0x014a('0x3d')]){case _0x014a('0x7c'):if(_0x3804e1[_0x014a('0x58')][_0x014a('0x7d')]&&_0x3804e1['body']['MessageSid']===_0x24ffb0[_0x014a('0x7e')]&&_0x3804e1['body']['MessageStatus']&&_0x3804e1['body'][_0x014a('0x7f')]===_0x014a('0x5d')){return _0x24ffb0[_0x014a('0x35')]({'read':!![]});}else{logger['error'](_0x014a('0x80'),_0x014a('0x2b'),_0x014a('0x7c'),util[_0x014a('0x7b')](_0x3804e1['body'],{'showHidden':![],'depth':null}));}break;}return _0x24ffb0;}})[_0x014a('0x1e')](respondWithResult(_0xe1b5ed,null))[_0x014a('0x29')](handleError(_0xe1b5ed,null));};