1544906895d643774a9ea97f44f44a0db16ecbae
[motion2.git] / server / api / chatInteraction / chatInteraction.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 _0xf4bf=['debug','ChatInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ChatInteraction,\x20%s,\x20%s','message','catch','end','json','undefined','limit','count','offset','update','then','sendStatus','stack','name','status','send','render','merge','contact','interaction','account','map','ChatInteraction','fieldName','findAll','chat','query','show','model','keys','filters','intersection','attributes','fields','length','include','options','find','create','body','params','describe','ChatWebsite','ChatWebsiteId','vidaooApiKey','vidaooTopic','vidaooNote','vidaooMetadata','vidaooEscalation','user','fullname','email','POST','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','follow','parse','metadata','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Error\x20in\x20Vidaoo\x20configuration','Sequelize','Unable\x20to\x20create\x20Vidaoo\x20session','customUpdate','CmContact','Contact','abandon','UserId','Interaction\x20already\x20assigned','closed','disposition','AbandonInteraction','attachmentUpload','filename','type','file','mimetype','Attachment','findOne','attachId','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','basename','download','close','server/files/chat/upload/','format','transcript-%s.txt','ChatMessage','Messages','User','ContactId','agentAlias','System','Visitor','agentIdentifier','agent_alias','alias','%s%d','[%s]\x20%s:\x20%s\x0a','secret','appendFileSync','MailAccount','MailServerOut','Smtp','CloudProvider','getSmtpOptions','SendMail','sendMail','mailTranscript','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','rawAttributes','hasOwnProperty','order','sort','where','pick','ChatInteractionId','filter','split','YYYY-MM-DD\x20HH:mm:ss','includeAll','rows','nolimit','push','omit','spread','Tag','color','emit','removeTags','unix','server','files','tmp','transcript-%d-%s.zip','firstName','lastName','createdAt','direction','Owner','get','mkdirSync','Chat','Account','N.A.','toString','closedAt','browserName','osName','referer','customerIp','customerPort','tail','existsSync','pipe','createWriteStream','out','read','renderFile','transcript-','.pdf','createPdfFromHTML','err','unlinkSync','zip-dir','request-promise','moment','bluebird','mustache','util','path','ejs','ioredis','../../components/parsers/qs','../../components/export/pdf','api','../../config/environment','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','client','http','request','info'];(function(_0x13a961,_0x49e831){var _0x5e5f65=function(_0x1da53b){while(--_0x1da53b){_0x13a961['push'](_0x13a961['shift']());}};_0x5e5f65(++_0x49e831);}(_0xf4bf,0xb1));var _0xff4b=function(_0x3f3bad,_0x193f06){_0x3f3bad=_0x3f3bad-0x0;var _0x4f0801=_0xf4bf[_0x3f3bad];return _0x4f0801;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0xff4b('0x0'));var rp=require(_0xff4b('0x1'));var moment=require(_0xff4b('0x2'));var BPromise=require(_0xff4b('0x3'));var Mustache=require(_0xff4b('0x4'));var util=require(_0xff4b('0x5'));var path=require(_0xff4b('0x6'));var ejs=require(_0xff4b('0x7'));var fs=require('fs');var _=require('lodash');var Redis=require(_0xff4b('0x8'));var interaction=require('../../components/interaction/service');var qs=require(_0xff4b('0x9'));var pdf=require(_0xff4b('0xa'));var logger=require('../../config/logger')(_0xff4b('0xb'));var config=require(_0xff4b('0xc'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0xff4b('0xd')],{'host':_0xff4b('0xe'),'port':0x18eb});var socket=require(_0xff4b('0xf'))(new Redis(config['redis']));require(_0xff4b('0x10'))[_0xff4b('0x11')](socket);var jayson=require('jayson/promise');var client=jayson[_0xff4b('0x12')][_0xff4b('0x13')]({'port':0x232b});var client9004=jayson[_0xff4b('0x12')][_0xff4b('0x13')]({'port':0x232c});function respondWithRpcPromise(_0x9fc5af,_0x4b517b,_0x54853c,_0xe6e5eb){return new BPromise(function(_0x3df58e,_0x5f493e){var _0x487cd9=_0xe6e5eb||client;return _0x487cd9[_0xff4b('0x14')](_0x9fc5af,_0x54853c)['then'](function(_0x3576c0){logger[_0xff4b('0x15')]('ChatInteraction,\x20%s,\x20%s',_0x4b517b,'request\x20sent');logger[_0xff4b('0x16')](_0xff4b('0x17'),_0x4b517b,_0xff4b('0x18'),JSON[_0xff4b('0x19')](_0x3576c0));if(_0x3576c0[_0xff4b('0x1a')]){if(_0x3576c0[_0xff4b('0x1a')][_0xff4b('0x1b')]===0x1f4){logger['error'](_0xff4b('0x1c'),_0x4b517b,_0x3576c0[_0xff4b('0x1a')][_0xff4b('0x1d')]);return _0x5f493e(_0x3576c0[_0xff4b('0x1a')][_0xff4b('0x1d')]);}logger[_0xff4b('0x1a')](_0xff4b('0x1c'),_0x4b517b,_0x3576c0[_0xff4b('0x1a')][_0xff4b('0x1d')]);return _0x3df58e(_0x3576c0[_0xff4b('0x1a')][_0xff4b('0x1d')]);}else{logger[_0xff4b('0x15')](_0xff4b('0x1c'),_0x4b517b,_0xff4b('0x18'));_0x3df58e(_0x3576c0['result'][_0xff4b('0x1d')]);}})[_0xff4b('0x1e')](function(_0x4610f6){logger['error'](_0xff4b('0x1c'),_0x4b517b,_0x4610f6);_0x5f493e(_0x4610f6);});});}function respondWithStatusCode(_0x37eeae,_0x3fa834){_0x3fa834=_0x3fa834||0xcc;return function(_0x335b5b){if(_0x335b5b){return _0x37eeae['sendStatus'](_0x3fa834);}return _0x37eeae['status'](_0x3fa834)[_0xff4b('0x1f')]();};}function respondWithResult(_0x598d62,_0x534aad){_0x534aad=_0x534aad||0xc8;return function(_0x42c600){if(_0x42c600){return _0x598d62['status'](_0x534aad)[_0xff4b('0x20')](_0x42c600);}};}function respondWithFilteredResult(_0x4aec27,_0x15ca74){return function(_0x2507c9){if(_0x2507c9){var _0x546b21=typeof _0x15ca74['offset']===_0xff4b('0x21')&&typeof _0x15ca74[_0xff4b('0x22')]===_0xff4b('0x21');var _0x3f7efe=_0x2507c9[_0xff4b('0x23')];var _0x3976bd=_0x546b21?0x0:_0x15ca74[_0xff4b('0x24')];var _0x53b2a1=_0x546b21?_0x2507c9[_0xff4b('0x23')]:_0x15ca74['offset']+_0x15ca74[_0xff4b('0x22')];var _0x4c10a7;if(_0x53b2a1>=_0x3f7efe){_0x53b2a1=_0x3f7efe;_0x4c10a7=0xc8;}else{_0x4c10a7=0xce;}_0x4aec27['status'](_0x4c10a7);return _0x4aec27['set']('Content-Range',_0x3976bd+'-'+_0x53b2a1+'/'+_0x3f7efe)[_0xff4b('0x20')](_0x2507c9);}return null;};}function saveUpdates(_0x52ef68){return function(_0x48d53e){if(_0x48d53e){return _0x48d53e[_0xff4b('0x25')](_0x52ef68)[_0xff4b('0x26')](function(_0x28539f){return _0x28539f;});}return null;};}function removeEntity(_0x335490){return function(_0x12965f){if(_0x12965f){return _0x12965f['destroy']()['then'](function(){_0x335490['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5910c0){return function(_0x236057){if(!_0x236057){_0x5910c0[_0xff4b('0x27')](0x194);}return _0x236057;};}function handleError(_0x248876,_0x5de365){_0x5de365=_0x5de365||0x1f4;return function(_0x57cd4e){logger[_0xff4b('0x1a')](_0x57cd4e[_0xff4b('0x28')]);if(_0x57cd4e['name']){delete _0x57cd4e[_0xff4b('0x29')];}_0x248876[_0xff4b('0x2a')](_0x5de365)[_0xff4b('0x2b')](_0x57cd4e);};}function getMustacheRender(_0x5d348e,_0x243ebc){return Mustache[_0xff4b('0x2c')](_0x5d348e,_[_0xff4b('0x2d')](_0x243ebc['body'],{'contact':_0x243ebc[_0xff4b('0x2e')],'message':_0x243ebc[_0xff4b('0x1d')],'agent':_0x243ebc['agent'],'interaction':_0x243ebc[_0xff4b('0x2f')],'account':_0x243ebc[_0xff4b('0x30')]}))||'';}exports['index']=function(_0x12b8cc,_0x4e3963){var _0x478eb2={};var _0x14045e=_[_0xff4b('0x31')](db[_0xff4b('0x32')]['rawAttributes'],function(_0x1ab261){return{'name':_0x1ab261[_0xff4b('0x33')],'type':_0x1ab261['type']['key']};});_0x478eb2=qs['getOptions'](_0x14045e,_0x12b8cc);return interaction[_0xff4b('0x34')](_0xff4b('0x35'),_0x12b8cc[_0xff4b('0x36')],_0x12b8cc['user'],_0x478eb2,_0x14045e)[_0xff4b('0x26')](respondWithFilteredResult(_0x4e3963,_0x478eb2))[_0xff4b('0x1e')](handleError(_0x4e3963,null));};exports[_0xff4b('0x37')]=function(_0x4ae40e,_0x1f71b7){var _0x50b5be={'raw':![],'where':{'id':_0x4ae40e['params']['id']}},_0x533c73={};_0x533c73[_0xff4b('0x38')]=_[_0xff4b('0x39')](db[_0xff4b('0x32')]['rawAttributes']);_0x533c73[_0xff4b('0x36')]=_[_0xff4b('0x39')](_0x4ae40e[_0xff4b('0x36')]);_0x533c73[_0xff4b('0x3a')]=_[_0xff4b('0x3b')](_0x533c73[_0xff4b('0x38')],_0x533c73[_0xff4b('0x36')]);_0x50b5be[_0xff4b('0x3c')]=_['intersection'](_0x533c73['model'],qs[_0xff4b('0x3d')](_0x4ae40e['query'][_0xff4b('0x3d')]));_0x50b5be[_0xff4b('0x3c')]=_0x50b5be[_0xff4b('0x3c')][_0xff4b('0x3e')]?_0x50b5be[_0xff4b('0x3c')]:_0x533c73[_0xff4b('0x38')];if(_0x4ae40e[_0xff4b('0x36')]['includeAll']){_0x50b5be[_0xff4b('0x3f')]=[{'all':!![]}];}_0x50b5be=_[_0xff4b('0x2d')]({},_0x50b5be,_0x4ae40e[_0xff4b('0x40')]);return db[_0xff4b('0x32')][_0xff4b('0x41')](_0x50b5be)['then'](handleEntityNotFound(_0x1f71b7,null))[_0xff4b('0x26')](respondWithResult(_0x1f71b7,null))[_0xff4b('0x1e')](handleError(_0x1f71b7,null));};exports['create']=function(_0x5b4e40,_0x2e705c){return db[_0xff4b('0x32')][_0xff4b('0x42')](_0x5b4e40['body'],{})['then'](respondWithResult(_0x2e705c,0xc9))[_0xff4b('0x1e')](handleError(_0x2e705c,null));};exports[_0xff4b('0x25')]=function(_0x17b122,_0x34b2e3){if(_0x17b122[_0xff4b('0x43')]['id']){delete _0x17b122[_0xff4b('0x43')]['id'];}return db[_0xff4b('0x32')]['find']({'where':{'id':_0x17b122[_0xff4b('0x44')]['id']}})[_0xff4b('0x26')](handleEntityNotFound(_0x34b2e3,null))[_0xff4b('0x26')](saveUpdates(_0x17b122[_0xff4b('0x43')],null))[_0xff4b('0x26')](respondWithResult(_0x34b2e3,null))['catch'](handleError(_0x34b2e3,null));};exports['destroy']=function(_0x4e7e6f,_0x1830ea){return db[_0xff4b('0x32')]['find']({'where':{'id':_0x4e7e6f[_0xff4b('0x44')]['id']}})[_0xff4b('0x26')](handleEntityNotFound(_0x1830ea,null))[_0xff4b('0x26')](removeEntity(_0x1830ea,null))[_0xff4b('0x1e')](handleError(_0x1830ea,null));};exports[_0xff4b('0x45')]=function(_0xbdaafb,_0x330d20){return db[_0xff4b('0x32')][_0xff4b('0x45')]()[_0xff4b('0x26')](respondWithResult(_0x330d20,null))[_0xff4b('0x1e')](handleError(_0x330d20,null));};exports['createVidaooSession']=function(_0x353ab7,_0x54becd){var _0xa4054=_0x353ab7[_0xff4b('0x44')]['id'];var _0x487c72;var _0x2c2f23;var _0x24c518;return db['ChatInteraction']['findOne']({'where':{'id':_0xa4054}})['then'](function(_0x45ef16){_0x487c72=_0x45ef16;return db[_0xff4b('0x46')]['findOne']({'where':{'id':_0x45ef16[_0xff4b('0x47')]},'attributes':['id',_0xff4b('0x48'),'vidaooEscalation',_0xff4b('0x49'),_0xff4b('0x4a'),_0xff4b('0x4b')],'raw':!![]});})[_0xff4b('0x26')](function(_0x301c20){if(_0x301c20&&_0x301c20[_0xff4b('0x48')]&&_0x301c20[_0xff4b('0x4c')]){_0x2c2f23=_0x301c20;var _0x49f870={'interaction':{'id':_0xa4054},'agent':{'id':_0x353ab7[_0xff4b('0x4d')]['id'],'name':_0x353ab7[_0xff4b('0x4d')][_0xff4b('0x29')],'fullname':_0x353ab7[_0xff4b('0x4d')][_0xff4b('0x4e')],'email':_0x353ab7[_0xff4b('0x4d')][_0xff4b('0x4f')]},'contact':_0x353ab7['body']['contact'],'account':_0x353ab7['body']['account']};var _0x341c15={'rejectUnauthorized':![],'method':_0xff4b('0x50'),'url':_0xff4b('0x51'),'headers':{'X-APIKEY':_0x301c20[_0xff4b('0x48')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x353ab7[_0xff4b('0x4d')]['email']],'buttons':null,'topic':_0x2c2f23[_0xff4b('0x49')],'note':_[_0xff4b('0x52')](_0x2c2f23[_0xff4b('0x4a')])?null:getMustacheRender(_0x2c2f23['vidaooNote'],_0x49f870),'metadata':null},'redirect':_0xff4b('0x53'),'json':!![]};try{if(!_[_0xff4b('0x52')](_0x2c2f23[_0xff4b('0x4b')])){var _0x53c578=getMustacheRender(_0x2c2f23[_0xff4b('0x4b')],_0x49f870);var _0x27b9ee=JSON[_0xff4b('0x54')](_0x53c578);_0x341c15['body'][_0xff4b('0x55')]=_0x27b9ee;}}catch(_0x2362b5){throw new db['Sequelize'][(_0xff4b('0x56'))](_0xff4b('0x57'));}return rp(_0x341c15);}else{throw new db['Sequelize']['ValidationError'](_0xff4b('0x58'));}})['then'](function(_0x161356){_0x24c518=_0x161356;if(_0x24c518['id']){var _0x193c2b={'body':_0x24c518['join_url'],'ChatWebsiteId':_0x2c2f23['id'],'ChatInteractionId':_0x487c72['id'],'direction':'out','UserId':_0x353ab7['user']['id']};return db['ChatMessage'][_0xff4b('0x42')](_0x193c2b,{});}else{throw new db[(_0xff4b('0x59'))]['ValidationError'](_0xff4b('0x5a'));}})[_0xff4b('0x26')](function(){return _0x487c72['updateAttributes']({'vidaooSessionId':_0x24c518['id']});})[_0xff4b('0x26')](respondWithResult(_0x54becd,null))['catch'](handleError(_0x54becd,null));};exports[_0xff4b('0x5b')]=function(_0x12c60d,_0x5e6f58){if(_0x12c60d[_0xff4b('0x43')]['id']){delete _0x12c60d[_0xff4b('0x43')]['id'];}return db[_0xff4b('0x32')][_0xff4b('0x41')]({'where':{'id':_0x12c60d['params']['id']},'include':[{'model':db[_0xff4b('0x5c')],'as':_0xff4b('0x5d')}]})[_0xff4b('0x26')](handleEntityNotFound(_0x5e6f58,null))[_0xff4b('0x26')](saveUpdates(_0x12c60d[_0xff4b('0x43')],null))[_0xff4b('0x26')](respondWithResult(_0x5e6f58,null))[_0xff4b('0x1e')](handleError(_0x5e6f58,null));};exports[_0xff4b('0x5e')]=function(_0x5c07a0,_0x3eda73){if(_0x5c07a0[_0xff4b('0x43')]['id']){delete _0x5c07a0[_0xff4b('0x43')]['id'];}return db[_0xff4b('0x32')][_0xff4b('0x41')]({'where':{'id':_0x5c07a0[_0xff4b('0x44')]['id']}})['then'](function(_0x10a67c){if(!_0x10a67c){logger[_0xff4b('0x1a')]('abandonInteraction,\x20%s,\x20%s,\x20%s',_0xff4b('0x5e'),0x194,'entity\x20not\x20found');_0x3eda73['sendStatus'](0x194);}else{if(_0x10a67c[_0xff4b('0x5f')]){throw new db['Sequelize'][(_0xff4b('0x56'))](_0xff4b('0x60'));}}return _0x10a67c;})[_0xff4b('0x26')](function(_0x49d211){if(_0x49d211){return _0x49d211['update']({'closed':_0x5c07a0[_0xff4b('0x43')][_0xff4b('0x61')],'disposition':_0x5c07a0['body'][_0xff4b('0x62')]})[_0xff4b('0x26')](function(_0x15765d){return _0x15765d;});}})[_0xff4b('0x26')](function(){return respondWithRpcPromise(_0xff4b('0x63'),_0xff4b('0x5e'),_0x5c07a0[_0xff4b('0x43')],client9004);})[_0xff4b('0x26')](respondWithResult(_0x3eda73,null))[_0xff4b('0x1e')](handleError(_0x3eda73,null));};exports[_0xff4b('0x64')]=function(_0x3a0b1d,_0x4fc070){_0x3a0b1d['body'][_0xff4b('0x29')]=_0x3a0b1d['file']['originalname'];_0x3a0b1d[_0xff4b('0x43')]['basename']=_0x3a0b1d['file'][_0xff4b('0x65')];_0x3a0b1d[_0xff4b('0x43')][_0xff4b('0x66')]=_0x3a0b1d[_0xff4b('0x67')][_0xff4b('0x68')];return db[_0xff4b('0x69')][_0xff4b('0x42')](_0x3a0b1d[_0xff4b('0x43')])[_0xff4b('0x26')](respondWithResult(_0x4fc070,0xc9))[_0xff4b('0x1e')](handleError(_0x4fc070,null));};exports['attachmentDownload']=function(_0x1a5f45,_0x38eac6){return db[_0xff4b('0x32')][_0xff4b('0x6a')]({'where':{'id':_0x1a5f45[_0xff4b('0x44')]['id']},'raw':!![]})[_0xff4b('0x26')](handleEntityNotFound(_0x38eac6,null))['then'](function(_0x4df0bb){if(_0x4df0bb){if(_0x4df0bb[_0xff4b('0x61')]){return _0x38eac6[_0xff4b('0x2a')](0x193)[_0xff4b('0x20')]({'status':0x193,'message':'Unauthorized'});}return db[_0xff4b('0x69')][_0xff4b('0x6a')]({'where':{'id':_0x1a5f45[_0xff4b('0x36')][_0xff4b('0x6b')]},'raw':!![]})[_0xff4b('0x26')](handleEntityNotFound(_0x38eac6,null));}})['then'](function(_0x2043ae){if(_0x2043ae){var _0x51bc7f=_0x2043ae[_0xff4b('0x6c')]!==null;var _0x16a1a0=path[_0xff4b('0x6d')](config[_0xff4b('0x6e')],_0xff4b('0x6f'));if(_0x51bc7f){_0x16a1a0=path['join'](_0x16a1a0,_0xff4b('0x70'));}var _0x17cca2=path[_0xff4b('0x6d')](_0x16a1a0,_0x2043ae[_0xff4b('0x71')]);return _0x38eac6[_0xff4b('0x72')](_0x17cca2);}})[_0xff4b('0x1e')](handleError(_0x38eac6,null));};exports[_0xff4b('0x73')]=function(_0x428c35,_0x1c247a){var _0x274949=null;var _0x20e531=null;var _0x15b6dd=null;if(_0x428c35['body']['id']){delete _0x428c35[_0xff4b('0x43')]['id'];}if(_0x428c35['body']['mailTranscript']){_0x15b6dd=path['join'](config[_0xff4b('0x6e')],_0xff4b('0x74'),util[_0xff4b('0x75')](_0xff4b('0x76'),Date['now']()));_0x428c35['body']['pathTranscript']=_0x15b6dd;}return db[_0xff4b('0x32')][_0xff4b('0x41')]({'where':{'id':_0x428c35[_0xff4b('0x44')]['id']},'include':[{'model':db[_0xff4b('0x77')],'as':_0xff4b('0x78'),'include':[{'model':db['User'],'as':_0xff4b('0x79')}]}]})[_0xff4b('0x26')](handleEntityNotFound(_0x1c247a,null))['then'](saveUpdates(_0x428c35[_0xff4b('0x43')],null))[_0xff4b('0x26')](function(_0x3b99f6){if(_0x3b99f6){_0x274949=_0x3b99f6;return db[_0xff4b('0x46')][_0xff4b('0x41')]({'where':{'id':_0x274949[_0xff4b('0x47')]}});}})[_0xff4b('0x26')](function(_0x244f94){if(_0x244f94){_0x20e531=_0x244f94;return db[_0xff4b('0x5c')][_0xff4b('0x41')]({'where':{'id':_0x274949[_0xff4b('0x7a')]}});}})['then'](function(_0x429463){if(_0x429463){if(_0x15b6dd){var _0x2e0a10=null;for(var _0x2448c5=0x1;_0x2448c5<_0x274949['Messages'][_0xff4b('0x3e')];++_0x2448c5){_0x2e0a10=_0x274949['Messages'][_0x2448c5];var _0x150bdc=_0x2e0a10[_0xff4b('0x5f')]?util[_0xff4b('0x75')]('%s%d',_0x20e531[_0xff4b('0x7b')],_0x2e0a10['UserId']):_0xff4b('0x7c');var _0xef64bb=_0x428c35[_0xff4b('0x43')]['customer']||util['format']('%s%d',_0xff4b('0x7d'),_0x2e0a10[_0xff4b('0x7a')]);switch(_0x20e531[_0xff4b('0x7e')]){case'website_alias':_0x150bdc=_0x2e0a10['UserId']?util['format']('%s%d',_0x20e531['agentAlias'],_0x2e0a10['UserId']):_0xff4b('0x7c');break;case _0xff4b('0x7f'):_0x150bdc=_0x2e0a10[_0xff4b('0x5f')]?_0x2e0a10[_0xff4b('0x79')][_0xff4b('0x80')]||_0x2e0a10[_0xff4b('0x79')][_0xff4b('0x4e')]:_0xff4b('0x7c');break;case'agent_fullname':_0x150bdc=_0x2e0a10[_0xff4b('0x5f')]?_0x2e0a10[_0xff4b('0x79')][_0xff4b('0x4e')]:'System';break;default:_0x150bdc=_0x2e0a10['UserId']?util[_0xff4b('0x75')](_0xff4b('0x81'),_0x20e531[_0xff4b('0x7b')],_0x2e0a10[_0xff4b('0x5f')]):_0xff4b('0x7c');}var _0x32bb98=util['format'](_0xff4b('0x82'),moment(_0x2e0a10['createdAt'])['format']('MM/DD/YYYY\x20HH:mm:ss'),_0x2e0a10['direction']==='in'?_0xef64bb:_0x150bdc,_0x2e0a10['body']);if(!_0x2e0a10[_0xff4b('0x83')]){fs[_0xff4b('0x84')](_0x15b6dd,_0x32bb98);}}return db[_0xff4b('0x85')]['findOne']({'where':{'service':!![]},'include':[{'model':db[_0xff4b('0x86')],'as':_0xff4b('0x87'),'raw':!![],'include':[{'model':db[_0xff4b('0x88')],'as':_0xff4b('0x88'),'raw':!![]}]}]});}}})[_0xff4b('0x26')](function(_0x1a1e72){if(!_0x1a1e72||!_0x1a1e72[_0xff4b('0x87')]||!_0x428c35['body'])return _0x274949;var _0x304f7f=_0x1a1e72[_0xff4b('0x89')]();return respondWithRpcPromise(_0xff4b('0x8a'),_0xff4b('0x8b'),{'account':_0x304f7f,'message':{'from':util[_0xff4b('0x75')]('\x22%s\x22\x20<%s>',_0x1a1e72[_0xff4b('0x29')],_0x1a1e72[_0xff4b('0x4f')]||_0x1a1e72[_0xff4b('0x87')][_0xff4b('0x4d')]),'to':_0x428c35['body'][_0xff4b('0x8c')],'subject':_0xff4b('0x8d'),'text':util[_0xff4b('0x75')](_0xff4b('0x8e'),_0x428c35[_0xff4b('0x43')][_0xff4b('0x8c')]),'attachments':[{'path':_0x15b6dd}]}})[_0xff4b('0x26')](function(){return _0x274949;})[_0xff4b('0x1e')](function(_0x269d6e){logger[_0xff4b('0x1a')](_0x269d6e);});})[_0xff4b('0x26')](respondWithStatusCode(_0x1c247a,0xc8))['catch'](handleError(_0x1c247a,null));};exports[_0xff4b('0x8f')]=function(_0x1f8df7,_0x39785b){return db[_0xff4b('0x77')][_0xff4b('0x41')]({'where':{'id':_0x1f8df7[_0xff4b('0x44')]['id']}})[_0xff4b('0x26')](handleEntityNotFound(_0x39785b,null))[_0xff4b('0x26')](function(_0x4000cf){if(_0x4000cf){return _0x4000cf[_0xff4b('0x8f')](_0x1f8df7[_0xff4b('0x43')][_0xff4b('0x90')],_['omit'](_0x1f8df7[_0xff4b('0x43')],[_0xff4b('0x90'),'id'])||{});}})[_0xff4b('0x26')](respondWithResult(_0x39785b,null))[_0xff4b('0x1e')](handleError(_0x39785b,null));};exports['getMessages']=function(_0x29a045,_0xf5a831){var _0x48f310={'raw':![],'where':{}};var _0xf289eb={};var _0x39ea8c={'count':0x0,'rows':[]};return db[_0xff4b('0x32')][_0xff4b('0x6a')]({'where':{'id':_0x29a045[_0xff4b('0x44')]['id']}})['then'](handleEntityNotFound(_0xf5a831,null))['then'](function(_0x274e18){if(_0x274e18){_0xf289eb[_0xff4b('0x38')]=_['keys'](db['ChatMessage'][_0xff4b('0x91')]);_0xf289eb['query']=_[_0xff4b('0x39')](_0x29a045[_0xff4b('0x36')]);_0xf289eb['filters']=_[_0xff4b('0x3b')](_0xf289eb['model'],_0xf289eb['query']);_0x48f310[_0xff4b('0x3c')]=_['intersection'](_0xf289eb[_0xff4b('0x38')],qs[_0xff4b('0x3d')](_0x29a045[_0xff4b('0x36')][_0xff4b('0x3d')]));_0x48f310[_0xff4b('0x3c')]=_0x48f310[_0xff4b('0x3c')][_0xff4b('0x3e')]?_0x48f310['attributes']:_0xf289eb['model'];if(!_0x29a045[_0xff4b('0x36')][_0xff4b('0x92')]('nolimit')){_0x48f310[_0xff4b('0x22')]=qs[_0xff4b('0x22')](_0x29a045[_0xff4b('0x36')][_0xff4b('0x22')]);_0x48f310['offset']=qs[_0xff4b('0x24')](_0x29a045[_0xff4b('0x36')][_0xff4b('0x24')]);}_0x48f310[_0xff4b('0x93')]=qs[_0xff4b('0x94')](_0x29a045[_0xff4b('0x36')][_0xff4b('0x94')]);_0x48f310[_0xff4b('0x95')]=qs[_0xff4b('0x3a')](_[_0xff4b('0x96')](_0x29a045['query'],_0xf289eb[_0xff4b('0x3a')]));_0x48f310['where'][_0xff4b('0x97')]=_0x274e18['id'];if(_0x29a045[_0xff4b('0x36')]['filter']){_0x48f310[_0xff4b('0x95')]=_[_0xff4b('0x2d')](_0x48f310[_0xff4b('0x95')],{'$or':_[_0xff4b('0x31')](_0x48f310[_0xff4b('0x3c')],function(_0x1f8f59){var _0x2af02a={};_0x2af02a[_0x1f8f59]={'$like':'%'+_0x29a045[_0xff4b('0x36')][_0xff4b('0x98')]+'%'};return _0x2af02a;})});}if(_0x29a045['query']['$gte']){var _0x583489=_0x29a045['query']['$gte'][_0xff4b('0x99')](',');var _0x18b81a={};_0x18b81a[_0x583489[0x0]]={'$gte':moment(_0x583489[0x1])[_0xff4b('0x75')](_0xff4b('0x9a'))};_0x48f310[_0xff4b('0x95')]=_[_0xff4b('0x2d')](_0x48f310[_0xff4b('0x95')],_0x18b81a);}_0x48f310=_['merge']({},_0x48f310,_0x29a045[_0xff4b('0x40')]);return db[_0xff4b('0x77')][_0xff4b('0x23')]({'where':_0x48f310[_0xff4b('0x95')]})[_0xff4b('0x26')](function(_0x737d27){_0x39ea8c[_0xff4b('0x23')]=_0x737d27;if(_0x29a045[_0xff4b('0x36')][_0xff4b('0x9b')]){_0x48f310[_0xff4b('0x3f')]=[{'all':!![]}];}return db[_0xff4b('0x77')]['findAll'](_0x48f310);})[_0xff4b('0x26')](function(_0x2e6e42){_0x39ea8c[_0xff4b('0x9c')]=_0x2e6e42;return _0x39ea8c;});}})[_0xff4b('0x26')](respondWithFilteredResult(_0xf5a831,_0x48f310))['catch'](handleError(_0xf5a831,null));};exports['getMyMessages']=function(_0x583084,_0x2ffda8){var _0x1964a3={'where':{}},_0xd6f994={},_0x219d17={'count':0x0,'rows':[]};return db[_0xff4b('0x32')]['findOne']({'where':{'id':_0x583084[_0xff4b('0x44')]['id']}})[_0xff4b('0x26')](handleEntityNotFound(_0x2ffda8,null))[_0xff4b('0x26')](function(_0x1d62d2){if(_0x1d62d2){_0xd6f994[_0xff4b('0x38')]=_[_0xff4b('0x39')](db[_0xff4b('0x77')][_0xff4b('0x91')]);_0xd6f994['query']=_[_0xff4b('0x39')](_0x583084[_0xff4b('0x36')]);_0xd6f994[_0xff4b('0x3a')]=_[_0xff4b('0x3b')](_0xd6f994[_0xff4b('0x38')],_0xd6f994['query']);_0x1964a3['attributes']=_['intersection'](_0xd6f994['model'],qs[_0xff4b('0x3d')](_0x583084['query'][_0xff4b('0x3d')]));_0x1964a3[_0xff4b('0x3c')]=_0x1964a3[_0xff4b('0x3c')][_0xff4b('0x3e')]?_0x1964a3['attributes']:_0xd6f994[_0xff4b('0x38')];if(!_0x583084[_0xff4b('0x36')][_0xff4b('0x92')](_0xff4b('0x9d'))){_0x1964a3['limit']=qs[_0xff4b('0x22')](_0x583084[_0xff4b('0x36')][_0xff4b('0x22')]);_0x1964a3[_0xff4b('0x24')]=qs['offset'](_0x583084[_0xff4b('0x36')][_0xff4b('0x24')]);}_0x1964a3[_0xff4b('0x93')]=qs['sort'](_0x583084[_0xff4b('0x36')][_0xff4b('0x94')]);_0x1964a3[_0xff4b('0x95')]=qs[_0xff4b('0x3a')](_[_0xff4b('0x96')](_0x583084[_0xff4b('0x36')],_0xd6f994[_0xff4b('0x3a')]));_0x1964a3[_0xff4b('0x95')][_0xff4b('0x97')]=_0x1d62d2['id'];if(_0x583084['query'][_0xff4b('0x98')]){_0x1964a3[_0xff4b('0x95')]=_[_0xff4b('0x2d')](_0x1964a3[_0xff4b('0x95')],{'$or':_['map'](_0x1964a3['attributes'],function(_0x4baef4){var _0x1f7493={};_0x1f7493[_0x4baef4]={'$like':'%'+_0x583084[_0xff4b('0x36')][_0xff4b('0x98')]+'%'};return _0x1f7493;})});}_0x1964a3[_0xff4b('0x95')][_0xff4b('0x83')]=![];if(_0x583084[_0xff4b('0x36')]['id']){_0x1964a3['where']['id']={'$gt':_0x583084[_0xff4b('0x36')]['id']};}_0x1964a3=_[_0xff4b('0x2d')]({},_0x1964a3,_0x583084[_0xff4b('0x40')]);return db[_0xff4b('0x77')][_0xff4b('0x23')]({'where':_0x1964a3['where']})[_0xff4b('0x26')](function(_0x5e5906){_0x219d17[_0xff4b('0x23')]=_0x5e5906;_0x1964a3[_0xff4b('0x3f')]=[];if(_0x583084['query']['includeAgent']){_0x1964a3[_0xff4b('0x3f')][_0xff4b('0x9e')]({'model':db[_0xff4b('0x79')],'as':_0xff4b('0x79'),'attributes':['id',_0xff4b('0x4e'),'alias']});}if(_0x583084[_0xff4b('0x36')][_0xff4b('0x9b')]){_0x1964a3[_0xff4b('0x3f')]=[{'all':!![]}];}return db['ChatMessage'][_0xff4b('0x34')](_0x1964a3);})['then'](function(_0x250a38){_0x219d17['rows']=_0x250a38;return _0x219d17;});}})[_0xff4b('0x26')](respondWithFilteredResult(_0x2ffda8,_0x1964a3))['catch'](handleError(_0x2ffda8,null));};exports['addTags']=function(_0x263b74,_0x255b1b){return db[_0xff4b('0x32')][_0xff4b('0x41')]({'where':{'id':_0x263b74[_0xff4b('0x44')]['id']}})['then'](handleEntityNotFound(_0x255b1b,null))[_0xff4b('0x26')](function(_0x3c6300){if(_0x3c6300){return _0x3c6300['setTags'](_0x263b74[_0xff4b('0x43')][_0xff4b('0x90')],_[_0xff4b('0x9f')](_0x263b74[_0xff4b('0x43')],[_0xff4b('0x90'),'id'])||{})[_0xff4b('0xa0')](function(){return db[_0xff4b('0xa1')][_0xff4b('0x34')]({'attributes':['id',_0xff4b('0x29'),_0xff4b('0xa2')],'where':{'id':_0x263b74[_0xff4b('0x43')][_0xff4b('0x90')]}});})['then'](function(_0x2ee8fa){socket[_0xff4b('0xa3')]('chatInteractionTags:save',{'id':Number(_0x263b74['params']['id']),'tags':_0x2ee8fa||[]});return{'id':Number(_0x263b74[_0xff4b('0x44')]['id']),'tags':_0x2ee8fa||[]};});}})[_0xff4b('0x26')](respondWithResult(_0x255b1b,null))[_0xff4b('0x1e')](handleError(_0x255b1b,null));};exports[_0xff4b('0xa4')]=function(_0x2e2f22,_0x338e6f){return db[_0xff4b('0x32')][_0xff4b('0x41')]({'where':{'id':_0x2e2f22[_0xff4b('0x44')]['id']}})[_0xff4b('0x26')](handleEntityNotFound(_0x338e6f,null))[_0xff4b('0x26')](function(_0x304b1e){if(_0x304b1e){return _0x304b1e[_0xff4b('0xa4')](_0x2e2f22['query'][_0xff4b('0x90')]);}})['then'](respondWithStatusCode(_0x338e6f,null))[_0xff4b('0x1e')](handleError(_0x338e6f,null));};exports['download']=function(_0xd65f17,_0x58a9c5){var _0xc8b5ed=moment()[_0xff4b('0xa5')]()['toString']();var _0x34c435=path[_0xff4b('0x6d')](config[_0xff4b('0x6e')],_0xff4b('0xa6'),_0xff4b('0xa7'),_0xff4b('0xa8'));var _0x37b5e2=path[_0xff4b('0x6d')](config[_0xff4b('0x6e')],_0xff4b('0xa6'),_0xff4b('0xa7'),'attachments');var _0x340887=path[_0xff4b('0x6d')](_0x34c435,_0xc8b5ed);var _0x36eab4=util[_0xff4b('0x75')](_0xff4b('0xa9'),_0xd65f17[_0xff4b('0x44')]['id'],_0xc8b5ed);var _0x1e6b3a=path['join'](_0x34c435,_0x36eab4);var _0x3542b6=[];_0x3542b6['push']({'model':db['User'],'as':_0xff4b('0x79'),'attributes':['id',_0xff4b('0x4e')],'raw':!![]});_0x3542b6[_0xff4b('0x9e')]({'model':db[_0xff4b('0x5c')],'as':'Contact','attributes':['id',_0xff4b('0xaa'),_0xff4b('0xab')],'raw':!![]});if(_0xd65f17[_0xff4b('0x36')]['attachments']){_0x3542b6['push']({'model':db[_0xff4b('0x69')],'as':_0xff4b('0x69'),'raw':!![]});}var _0x407fb7=[{'model':db[_0xff4b('0x77')],'as':_0xff4b('0x78'),'attributes':['id',_0xff4b('0x43'),_0xff4b('0xac'),_0xff4b('0xad'),'secret','read'],'include':_0x3542b6}];_0x407fb7[_0xff4b('0x9e')]({'model':db[_0xff4b('0x46')],'as':'Account','attributes':['id',_0xff4b('0x29')]});_0x407fb7[_0xff4b('0x9e')]({'model':db[_0xff4b('0x79')],'as':_0xff4b('0xae'),'attributes':['id',_0xff4b('0x4e')]});return db[_0xff4b('0x32')]['find']({'where':{'id':_0xd65f17['params']['id']},'include':_0x407fb7})[_0xff4b('0x26')](handleEntityNotFound(_0x58a9c5,null))[_0xff4b('0x26')](function(_0x31443a){if(_0x31443a){var _0x4a2f5d=_0x31443a[_0xff4b('0xaf')]({'plain':!![]});fs[_0xff4b('0xb0')](_0x340887);var _0x6ecd2e={'channel':_0xff4b('0xb1'),'account':_0x4a2f5d[_0xff4b('0xb2')][_0xff4b('0x29')],'agent':_0x4a2f5d[_0xff4b('0xae')]?_0x4a2f5d['Owner'][_0xff4b('0x4e')]:_0xff4b('0xb3'),'createdAt':moment(_0x4a2f5d[_0xff4b('0xac')])[_0xff4b('0x75')](_0xff4b('0x9a'))[_0xff4b('0xb4')](),'closedAt':_0x4a2f5d[_0xff4b('0x61')]?moment(_0x4a2f5d[_0xff4b('0xb5')])[_0xff4b('0x75')](_0xff4b('0x9a'))['toString']():'','disposition':_0x4a2f5d[_0xff4b('0x62')],'chatInfo':{'browser':_0x4a2f5d[_0xff4b('0xb6')],'os':_0x4a2f5d[_0xff4b('0xb7')],'referer':_0x4a2f5d[_0xff4b('0xb8')],'customerIp':_0x4a2f5d[_0xff4b('0xb9')],'customerPort':_0x4a2f5d[_0xff4b('0xba')]?_0x4a2f5d[_0xff4b('0xba')]:_0xff4b('0xb3')},'messages':_(_0x4a2f5d[_0xff4b('0x78')])[_0xff4b('0xbb')]()[_0xff4b('0x98')]({'secret':![]})[_0xff4b('0x31')](function(_0x205a44){if(_0x205a44[_0xff4b('0x69')]){var _0x2539bd=path[_0xff4b('0x6d')](_0x37b5e2,_0x205a44['Attachment'][_0xff4b('0x71')]);if(fs[_0xff4b('0xbc')](_0x2539bd)){fs['createReadStream'](_0x2539bd)[_0xff4b('0xbd')](fs[_0xff4b('0xbe')](path[_0xff4b('0x6d')](_0x340887,_0x205a44[_0xff4b('0x69')]['basename'])));}}return{'date':moment(_0x205a44['createdAt'])[_0xff4b('0x75')]('YYYY-MM-DD\x20HH:mm:ss')[_0xff4b('0xb4')](),'sender':_0x205a44['direction']===_0xff4b('0xbf')?_0x205a44[_0xff4b('0x79')]?_0x205a44[_0xff4b('0x79')][_0xff4b('0x4e')]:_0xff4b('0x7c'):_0x205a44['Contact'][_0xff4b('0xaa')]+(_0x205a44['Contact'][_0xff4b('0xab')]?'\x20'+_0x205a44[_0xff4b('0x5d')][_0xff4b('0xab')]:''),'body':_0x205a44[_0xff4b('0x69')]?_0x205a44['Attachment'][_0xff4b('0x71')]:_0x205a44[_0xff4b('0x43')],'direction':_0x205a44['direction']===_0xff4b('0xbf')?'A':'C','secret':_0x205a44[_0xff4b('0x83')],'read':_0x205a44[_0xff4b('0xc0')],'attachment':_0x205a44[_0xff4b('0x69')]};})['value']()};return ejs[_0xff4b('0xc1')](path['join'](config[_0xff4b('0x6e')],_0xff4b('0xa6'),'views','downloadInteraction.ejs'),{'interaction':_0x6ecd2e})[_0xff4b('0x26')](function(_0x35f36c){var _0x4838ac=path[_0xff4b('0x6d')](_0x340887,_0xff4b('0xc2')+_0x4a2f5d['id']+'-'+_0xc8b5ed+_0xff4b('0xc3'));var _0x29f3b0={'path':_0x4838ac,'channel':_0xff4b('0xb1'),'interactionId':_0x4a2f5d['id']};return pdf[_0xff4b('0xc4')](_0x35f36c,_0x29f3b0);})['then'](function(){return new Promise(function(_0x55b8ea,_0x3be294){zipdir(_0x340887,{'saveTo':_0x1e6b3a},function(_0x23a1a9,_0x268b54){if(_0x23a1a9)return _0x3be294(_0x23a1a9);return _0x55b8ea(_0x268b54);});})['then'](function(){return new BPromise(function(_0x30a756,_0x2e71bd){rimraf(_0x340887,function(_0x3c1826){if(_0x3c1826)_0x2e71bd(_0x3c1826);return _0x30a756();});});})['then'](function(){return _0x58a9c5[_0xff4b('0x72')](_0x1e6b3a,_0x36eab4,function(_0x2521f2){if(_0x2521f2){logger['error'](_0xff4b('0xc5'),_0x2521f2);}else{fs[_0xff4b('0xc6')](_0x1e6b3a);}});});});}else{return _0x58a9c5['sendStatus'](0xc8);}})['catch'](handleError(_0x58a9c5,null));};