Built motion from commit (unavailable).|2.5.11
[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 _0x0295=['to-csv','ejs','lodash','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','./whatsappMessage.socket','register','jayson/promise','client','http','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','sendStatus','end','status','json','offset','limit','set','Content-Range','apply','reject','destroy','stack','name','send','index','map','WhatsappMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','count','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','whatsapp-interactions','accept','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','Contact','get','WhatsappInteractionId','isNil','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','interaction','null','acceptMessage','manual','interface','SIP/%s','channel','acceptmessage','../../config/logger','agent','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','event','EventManager','rejectmessage','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','inspect','twilio','MessageSid','messageId','MessageStatus','update','html-pdf','zip-dir','moment','bluebird','mustache','util','path','sox'];(function(_0x1affe9,_0x29666){var _0x3927f2=function(_0x1e0b67){while(--_0x1e0b67){_0x1affe9['push'](_0x1affe9['shift']());}};_0x3927f2(++_0x29666);}(_0x0295,0x1f0));var _0x5029=function(_0x4ae506,_0x5a97ed){_0x4ae506=_0x4ae506-0x0;var _0x18e3a1=_0x0295[_0x4ae506];return _0x18e3a1;};'use strict';var pdf=require(_0x5029('0x0'));var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x5029('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x5029('0x2'));var BPromise=require(_0x5029('0x3'));var Mustache=require(_0x5029('0x4'));var util=require(_0x5029('0x5'));var path=require(_0x5029('0x6'));var sox=require(_0x5029('0x7'));var csv=require(_0x5029('0x8'));var ejs=require(_0x5029('0x9'));var fs=require('fs');var _=require(_0x5029('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x5029('0xb'));var toCsv=require('to-csv');var querystring=require(_0x5029('0xc'));var Papa=require('papaparse');var Redis=require(_0x5029('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x5029('0xe'));var as=require(_0x5029('0xf'));var hardwareService=require(_0x5029('0x10'));var logger=require('../../config/logger')(_0x5029('0x11'));var utils=require(_0x5029('0x12'));var config=require(_0x5029('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x5029('0x14'))['db'];config[_0x5029('0x15')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5029('0x15')]));require(_0x5029('0x16'))[_0x5029('0x17')](socket);var jayson=require(_0x5029('0x18'));var client=jayson[_0x5029('0x19')][_0x5029('0x1a')]({'port':0x232c});var client9002=jayson[_0x5029('0x19')][_0x5029('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x10bf55,_0x326923,_0x457c73,_0x353cba){return new BPromise(function(_0x3786b5,_0x2c273c){var _0x343918=_0x353cba||client;return _0x343918['request'](_0x10bf55,_0x457c73)[_0x5029('0x1b')](function(_0x31a155){logger[_0x5029('0x1c')](_0x5029('0x1d'),_0x326923,_0x5029('0x1e'));logger[_0x5029('0x1f')](_0x5029('0x20'),_0x326923,'request\x20sent',JSON[_0x5029('0x21')](_0x31a155));if(_0x31a155['error']){if(_0x31a155[_0x5029('0x22')][_0x5029('0x23')]===0x1f4){logger[_0x5029('0x22')](_0x5029('0x1d'),_0x326923,_0x31a155['error']['message']);return _0x2c273c(_0x31a155[_0x5029('0x22')]['message']);}logger[_0x5029('0x22')](_0x5029('0x1d'),_0x326923,_0x31a155[_0x5029('0x22')][_0x5029('0x24')]);return _0x3786b5(_0x31a155[_0x5029('0x22')][_0x5029('0x24')]);}else{logger[_0x5029('0x1c')](_0x5029('0x1d'),_0x326923,_0x5029('0x1e'));_0x3786b5(_0x31a155['result']['message']);}})['catch'](function(_0x588d90){logger[_0x5029('0x22')]('WhatsappMessage,\x20%s,\x20%s',_0x326923,_0x588d90);_0x2c273c(_0x588d90);});});}function respondWithStatusCode(_0x5727e9,_0x181da0){_0x181da0=_0x181da0||0xcc;return function(_0x1e7e61){if(_0x1e7e61){return _0x5727e9[_0x5029('0x25')](_0x181da0);}return _0x5727e9['status'](_0x181da0)[_0x5029('0x26')]();};}function respondWithResult(_0xb14bc,_0x5e45c4){_0x5e45c4=_0x5e45c4||0xc8;return function(_0x2b6d99){if(_0x2b6d99){return _0xb14bc[_0x5029('0x27')](_0x5e45c4)[_0x5029('0x28')](_0x2b6d99);}};}function respondWithFilteredResult(_0x4a24b9,_0x32da06){return function(_0x251f99){if(_0x251f99){var _0xe5313e=_0x251f99['count'],_0x4b6f92=_0x32da06[_0x5029('0x29')],_0x2cedf6=_0x32da06[_0x5029('0x29')]+_0x32da06[_0x5029('0x2a')],_0x2bb398;if(_0x2cedf6>=_0xe5313e){_0x2cedf6=_0xe5313e;_0x2bb398=0xc8;}else{_0x2bb398=0xce;}_0x4a24b9[_0x5029('0x27')](_0x2bb398);return _0x4a24b9[_0x5029('0x2b')](_0x5029('0x2c'),_0x4b6f92+'-'+_0x2cedf6+'/'+_0xe5313e)[_0x5029('0x28')](_0x251f99);}return null;};}function patchUpdates(_0x465153){return function(_0x250156){try{jsonpatch[_0x5029('0x2d')](_0x250156,_0x465153,!![]);}catch(_0x358a2b){return BPromise[_0x5029('0x2e')](_0x358a2b);}return _0x250156['save']();};}function saveUpdates(_0x11ae38,_0x5cb04b){return function(_0x31c621){if(_0x31c621){return _0x31c621['update'](_0x11ae38)['then'](function(_0x2bc434){return _0x2bc434;});}return null;};}function removeEntity(_0x447680,_0x1f9173){return function(_0x4b7330){if(_0x4b7330){return _0x4b7330[_0x5029('0x2f')]()[_0x5029('0x1b')](function(){_0x447680[_0x5029('0x27')](0xcc)[_0x5029('0x26')]();});}};}function handleEntityNotFound(_0x1bb896,_0x4513b9){return function(_0x46ec59){if(!_0x46ec59){_0x1bb896[_0x5029('0x25')](0x194);}return _0x46ec59;};}function handleError(_0x456cfc,_0x5c9f10){_0x5c9f10=_0x5c9f10||0x1f4;return function(_0x1db45c){logger[_0x5029('0x22')](_0x1db45c[_0x5029('0x30')]);if(_0x1db45c[_0x5029('0x31')]){delete _0x1db45c['name'];}_0x456cfc[_0x5029('0x27')](_0x5c9f10)[_0x5029('0x32')](_0x1db45c);};}exports[_0x5029('0x33')]=function(_0x594549,_0x4904cc){var _0x2d1ccb={},_0x17756b={},_0x507443={'count':0x0,'rows':[]};var _0x57784c=_[_0x5029('0x34')](db[_0x5029('0x35')][_0x5029('0x36')],function(_0x3210cb){return{'name':_0x3210cb[_0x5029('0x37')],'type':_0x3210cb[_0x5029('0x38')][_0x5029('0x39')]};});_0x17756b[_0x5029('0x3a')]=_[_0x5029('0x34')](_0x57784c,_0x5029('0x31'));_0x17756b[_0x5029('0x3b')]=_[_0x5029('0x3c')](_0x594549[_0x5029('0x3b')]);_0x17756b[_0x5029('0x3d')]=_['intersection'](_0x17756b['model'],_0x17756b[_0x5029('0x3b')]);_0x2d1ccb[_0x5029('0x3e')]=_[_0x5029('0x3f')](_0x17756b['model'],qs[_0x5029('0x40')](_0x594549[_0x5029('0x3b')]['fields']));_0x2d1ccb[_0x5029('0x3e')]=_0x2d1ccb['attributes'][_0x5029('0x41')]?_0x2d1ccb['attributes']:_0x17756b[_0x5029('0x3a')];if(!_0x594549[_0x5029('0x3b')][_0x5029('0x42')](_0x5029('0x43'))){_0x2d1ccb[_0x5029('0x2a')]=qs[_0x5029('0x2a')](_0x594549[_0x5029('0x3b')][_0x5029('0x2a')]);_0x2d1ccb[_0x5029('0x29')]=qs['offset'](_0x594549[_0x5029('0x3b')][_0x5029('0x29')]);}_0x2d1ccb[_0x5029('0x44')]=qs[_0x5029('0x45')](_0x594549[_0x5029('0x3b')][_0x5029('0x45')]);_0x2d1ccb['where']=qs[_0x5029('0x3d')](_[_0x5029('0x46')](_0x594549[_0x5029('0x3b')],_0x17756b[_0x5029('0x3d')]),_0x57784c);if(_0x594549[_0x5029('0x3b')]['filter']){_0x2d1ccb[_0x5029('0x47')]=_[_0x5029('0x48')](_0x2d1ccb[_0x5029('0x47')],{'$or':_[_0x5029('0x34')](_0x57784c,function(_0xfbfbb2){if(_0xfbfbb2[_0x5029('0x38')]!==_0x5029('0x49')){var _0x37660b={};_0x37660b[_0xfbfbb2[_0x5029('0x31')]]={'$like':'%'+_0x594549['query'][_0x5029('0x4a')]+'%'};return _0x37660b;}})});}_0x2d1ccb=_[_0x5029('0x48')]({},_0x2d1ccb,_0x594549[_0x5029('0x4b')]);var _0xdb3e78={'where':_0x2d1ccb['where']};return db['WhatsappMessage'][_0x5029('0x4c')](_0xdb3e78)[_0x5029('0x1b')](function(_0x2a07d4){_0x507443[_0x5029('0x4c')]=_0x2a07d4;if(_0x594549[_0x5029('0x3b')][_0x5029('0x4d')]){_0x2d1ccb[_0x5029('0x4e')]=[{'all':!![]}];}return db[_0x5029('0x35')][_0x5029('0x4f')](_0x2d1ccb);})[_0x5029('0x1b')](function(_0x2c2e0e){_0x507443[_0x5029('0x50')]=_0x2c2e0e;return _0x507443;})[_0x5029('0x1b')](respondWithFilteredResult(_0x4904cc,_0x2d1ccb))[_0x5029('0x51')](handleError(_0x4904cc,null));};exports[_0x5029('0x52')]=function(_0x175cc0,_0x10fc07){var _0x149cf6={'raw':!![],'where':{'id':_0x175cc0[_0x5029('0x53')]['id']}},_0x274beb={};_0x274beb[_0x5029('0x3a')]=_['keys'](db[_0x5029('0x35')]['rawAttributes']);_0x274beb[_0x5029('0x3b')]=_[_0x5029('0x3c')](_0x175cc0['query']);_0x274beb['filters']=_[_0x5029('0x3f')](_0x274beb['model'],_0x274beb['query']);_0x149cf6[_0x5029('0x3e')]=_[_0x5029('0x3f')](_0x274beb[_0x5029('0x3a')],qs['fields'](_0x175cc0['query'][_0x5029('0x40')]));_0x149cf6[_0x5029('0x3e')]=_0x149cf6['attributes'][_0x5029('0x41')]?_0x149cf6['attributes']:_0x274beb[_0x5029('0x3a')];if(_0x175cc0['query'][_0x5029('0x4d')]){_0x149cf6[_0x5029('0x4e')]=[{'all':!![]}];}_0x149cf6=_[_0x5029('0x48')]({},_0x149cf6,_0x175cc0[_0x5029('0x4b')]);return db[_0x5029('0x35')][_0x5029('0x54')](_0x149cf6)[_0x5029('0x1b')](handleEntityNotFound(_0x10fc07,null))[_0x5029('0x1b')](respondWithResult(_0x10fc07,null))['catch'](handleError(_0x10fc07,null));};exports[_0x5029('0x55')]=function(_0x5dd466,_0xc8b556){return db[_0x5029('0x35')]['create'](_0x5dd466[_0x5029('0x56')],{})['then'](respondWithResult(_0xc8b556,0xc9))['catch'](handleError(_0xc8b556,null));};exports['update']=function(_0x34e93a,_0x4b0c5f){if(_0x34e93a[_0x5029('0x56')]['id']){delete _0x34e93a[_0x5029('0x56')]['id'];}return db[_0x5029('0x35')]['find']({'where':{'id':_0x34e93a[_0x5029('0x53')]['id']}})['then'](handleEntityNotFound(_0x4b0c5f,null))['then'](saveUpdates(_0x34e93a[_0x5029('0x56')],null))[_0x5029('0x1b')](respondWithResult(_0x4b0c5f,null))[_0x5029('0x51')](handleError(_0x4b0c5f,null));};exports[_0x5029('0x2f')]=function(_0x164179,_0x4e8d9f){return db[_0x5029('0x35')][_0x5029('0x54')]({'where':{'id':_0x164179[_0x5029('0x53')]['id']}})[_0x5029('0x1b')](handleEntityNotFound(_0x4e8d9f,null))['then'](removeEntity(_0x4e8d9f,null))[_0x5029('0x51')](handleError(_0x4e8d9f,null));};exports[_0x5029('0x57')]=function(_0x4d4a2d,_0x512de9){return db[_0x5029('0x35')][_0x5029('0x57')]()[_0x5029('0x1b')](respondWithResult(_0x512de9,null))[_0x5029('0x51')](handleError(_0x512de9,null));};var interaction_log=require('../../config/logger')(_0x5029('0x58'));exports[_0x5029('0x59')]=function(_0x77d63d,_0x2aebb3,_0x3a82f7){var _0x26f56f={'channel':'whatsapp'};if(_0x77d63d['body']['id']){delete _0x77d63d[_0x5029('0x56')]['id'];}_0x77d63d[_0x5029('0x56')][_0x5029('0x5a')]=!![];_0x77d63d['body'][_0x5029('0x5b')]=moment()[_0x5029('0x5c')](_0x5029('0x5d'));_0x77d63d[_0x5029('0x56')][_0x5029('0x5e')]=_0x77d63d['body'][_0x5029('0x5e')]||_0x77d63d[_0x5029('0x5f')]['id'];return db[_0x5029('0x35')]['find']({'where':{'id':_0x77d63d[_0x5029('0x53')]['id'],'UserId':null},'include':[{'model':db['CmContact'],'as':_0x5029('0x60')}]})['then'](handleEntityNotFound(_0x2aebb3,null))[_0x5029('0x1b')](saveUpdates(_0x77d63d[_0x5029('0x56')],null))[_0x5029('0x1b')](function(_0x2f5301){if(_0x2f5301){_0x26f56f[_0x5029('0x24')]=_0x2f5301[_0x5029('0x61')]({'plain':!![]});return db['WhatsappInteraction'][_0x5029('0x54')]({'where':{'id':_0x2f5301[_0x5029('0x62')]}});}return null;})[_0x5029('0x1b')](handleEntityNotFound(_0x2aebb3,null))[_0x5029('0x1b')](function(_0x389700){if(_0x389700){return _0x389700['update']({'UserId':_0x77d63d[_0x5029('0x56')]['UserId'],'read1stAt':_[_0x5029('0x63')](_0x389700['read1stAt'])?moment()[_0x5029('0x5c')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x5029('0x1b')](function(_0x54daf9){if(_0x54daf9){_0x26f56f['interaction']=_0x54daf9[_0x5029('0x61')]({'plain':!![]});interaction_log['info'](_0x5029('0x64'),_0x77d63d[_0x5029('0x5f')]['id'],_0x77d63d[_0x5029('0x5f')]['name'],_0x77d63d[_0x5029('0x5f')]['role'],_0x26f56f[_0x5029('0x65')]['id'],_0x77d63d[_0x5029('0x56')]?JSON[_0x5029('0x21')](_0x77d63d[_0x5029('0x56')]):_0x5029('0x66'));return respondWithRpcPromise('AcceptMessage',_0x5029('0x67'),_0x26f56f);}return null;})[_0x5029('0x1b')](function(_0x5890ac){if(_0x5890ac){if(_0x77d63d[_0x5029('0x56')][_0x5029('0x68')]){_0x26f56f[_0x5029('0x24')][_0x5029('0x69')]=util[_0x5029('0x5c')](_0x5029('0x6a'),_0x77d63d['user']['name']);_0x26f56f[_0x5029('0x24')]['channel']=_0x26f56f[_0x5029('0x6b')];_0x26f56f[_0x5029('0x24')]['event']=_0x5029('0x59');return respondWithRpcPromise('EventManager','EventManager',{'event':_0x5029('0x6c'),'message':_0x26f56f[_0x5029('0x24')]},client9002)[_0x5029('0x1b')](function(){return _0x26f56f;});}return _0x26f56f;}return null;})[_0x5029('0x1b')](respondWithResult(_0x2aebb3,null))['catch'](handleError(_0x2aebb3,null));};var interaction_log=require(_0x5029('0x6d'))(_0x5029('0x58'));exports['reject']=function(_0x269406,_0x73c036,_0x49e198){var _0x5b25b8={'agent':{},'channel':'whatsapp'};if(_0x269406[_0x5029('0x56')]['id']){delete _0x269406[_0x5029('0x56')]['id'];}_0x269406[_0x5029('0x56')][_0x5029('0x5e')]=_0x269406[_0x5029('0x56')][_0x5029('0x5e')]||_0x269406[_0x5029('0x5f')]['id'];_0x5b25b8[_0x5029('0x6e')]['id']=_0x269406[_0x5029('0x56')]['UserId'];return db['WhatsappMessage'][_0x5029('0x54')]({'where':{'id':_0x269406[_0x5029('0x53')]['id'],'UserId':null}})[_0x5029('0x1b')](handleEntityNotFound(_0x73c036,null))[_0x5029('0x1b')](function(_0x2d8c9a){if(_0x2d8c9a){_0x5b25b8[_0x5029('0x24')]=_0x2d8c9a[_0x5029('0x61')]({'plain':!![]});return db['WhatsappInteraction'][_0x5029('0x54')]({'where':{'id':_0x2d8c9a[_0x5029('0x62')]}});}return null;})[_0x5029('0x1b')](handleEntityNotFound(_0x73c036,null))['then'](function(_0x3bf700){if(_0x3bf700){_0x5b25b8[_0x5029('0x65')]=_0x3bf700[_0x5029('0x61')]({'plain':!![]});interaction_log['info'](_0x5029('0x6f'),_0x269406[_0x5029('0x5f')]['id'],_0x269406[_0x5029('0x5f')]['name'],_0x269406[_0x5029('0x5f')][_0x5029('0x70')],_0x5b25b8['interaction']['id'],_0x269406[_0x5029('0x56')]?JSON[_0x5029('0x21')](_0x269406[_0x5029('0x56')]):_0x5029('0x66'));return respondWithRpcPromise(_0x5029('0x71'),'rejectMessage',_0x5b25b8);}return null;})[_0x5029('0x1b')](function(_0x3b6833){if(_0x3b6833){_0x3b6833[_0x5029('0x24')][_0x5029('0x69')]=util[_0x5029('0x5c')]('SIP/%s',_0x269406[_0x5029('0x5f')][_0x5029('0x31')]);_0x3b6833[_0x5029('0x24')]['channel']=_0x5b25b8[_0x5029('0x6b')];_0x3b6833[_0x5029('0x24')][_0x5029('0x72')]=_0x5029('0x2e');respondWithRpcPromise(_0x5029('0x73'),_0x5029('0x73'),{'event':_0x5029('0x74'),'message':_0x3b6833['message']},client9002);return _0x5b25b8;}return null;})[_0x5029('0x1b')](respondWithResult(_0x73c036,null))[_0x5029('0x51')](handleError(_0x73c036,null));};exports[_0x5029('0x27')]=function(_0xde6006,_0x2dcfee,_0x4c40d1){if(_0xde6006[_0x5029('0x56')]['id']){delete _0xde6006[_0x5029('0x56')]['id'];}var _0x389931;return db['WhatsappMessage'][_0x5029('0x54')]({'where':{'id':_0xde6006[_0x5029('0x53')]['id']}})['then'](handleEntityNotFound(_0x2dcfee,null))['then'](function(_0x524825){if(_0x524825){_0x389931=_0x524825;return db[_0x5029('0x75')][_0x5029('0x54')]({'where':{'id':_0x524825[_0x5029('0x76')]}});}})[_0x5029('0x1b')](handleEntityNotFound(_0x2dcfee,null))[_0x5029('0x1b')](function(_0x4c742f){if(_0x4c742f){logger[_0x5029('0x1f')](_0x5029('0x77'),_0x5029('0x27'),'received\x20delivery\x20report\x20from',_0x4c742f['type'],util[_0x5029('0x78')](_0xde6006[_0x5029('0x56')],{'showHidden':![],'depth':null}));switch(_0x4c742f[_0x5029('0x38')]){case _0x5029('0x79'):if(_0xde6006['body'][_0x5029('0x7a')]&&_0xde6006[_0x5029('0x56')][_0x5029('0x7a')]===_0x389931[_0x5029('0x7b')]&&_0xde6006[_0x5029('0x56')][_0x5029('0x7c')]&&_0xde6006[_0x5029('0x56')][_0x5029('0x7c')]==='read'){return _0x389931[_0x5029('0x7d')]({'read':!![]});}else{logger['error']('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x5029('0x27'),'twilio',util[_0x5029('0x78')](_0xde6006[_0x5029('0x56')],{'showHidden':![],'depth':null}));}break;}return _0x389931;}})[_0x5029('0x1b')](respondWithResult(_0x2dcfee,null))[_0x5029('0x51')](handleError(_0x2dcfee,null));};