Built motion from commit 97153652.|2.6.26
[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 _0x5d4a=['pick','where','ChatInteractionId','filter','$gte','split','getMyMessages','nolimit','order','include','includeAgent','push','rows','addTags','setTags','omit','spread','color','emit','chatInteractionTags:save','removeTags','toString','server','transcript-%d-%s.zip','firstName','lastName','attachments','read','Owner','get','mkdirSync','Chat','Account','N.A.','createdAt','browserName','osName','referer','customerIp','customerPort','tail','existsSync','createReadStream','pipe','createWriteStream','YYYY-MM-DD\x20HH:mm:ss','value','renderFile','views','transcript-','.pdf','createPdfFromHTML','err','unlinkSync','zip-dir','moment','mustache','util','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','../../config/environment','redis','localhost','./chatInteraction.socket','register','jayson/promise','client','http','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','end','status','offset','undefined','limit','count','set','update','destroy','stack','name','send','render','merge','body','contact','agent','interaction','map','ChatInteraction','fieldName','type','key','getOptions','findAll','chat','query','user','model','keys','rawAttributes','filters','intersection','attributes','fields','length','includeAll','options','find','create','params','describe','createVidaooSession','findOne','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooNote','vidaooMetadata','email','account','POST','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','follow','parse','metadata','Error\x20in\x20conversion\x20vidaooMetadata','Sequelize','ValidationError','Error\x20in\x20Vidaoo\x20configuration','join_url','out','ChatMessage','CmContact','Contact','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','Interaction\x20already\x20assigned','closed','disposition','AbandonInteraction','abandon','originalname','basename','file','mimetype','attachmentDownload','json','Unauthorized','Attachment','attachId','join','root','server/files/attachments/','offline-chat/','close','mailTranscript','server/files/chat/upload/','format','pathTranscript','Messages','User','ChatWebsite','ChatWebsiteId','UserId','%s%d','agentAlias','System','customer','website_alias','agent_alias','alias','fullname','agent_fullname','[%s]\x20%s:\x20%s\x0a','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailAccount','MailServerOut','CloudProvider','Smtp','getSmtpOptions','SendMail','Mail\x20Transcript','addMessage','ids','getMessages','hasOwnProperty','sort'];(function(_0x11bafd,_0x4d1ee2){var _0x26bb16=function(_0x51f72f){while(--_0x51f72f){_0x11bafd['push'](_0x11bafd['shift']());}};_0x26bb16(++_0x4d1ee2);}(_0x5d4a,0x1d4));var _0xa5d4=function(_0x4186a5,_0x1ecfe0){_0x4186a5=_0x4186a5-0x0;var _0x486c4b=_0x5d4a[_0x4186a5];return _0x486c4b;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0xa5d4('0x0'));var rp=require('request-promise');var moment=require(_0xa5d4('0x1'));var BPromise=require('bluebird');var Mustache=require(_0xa5d4('0x2'));var util=require(_0xa5d4('0x3'));var path=require(_0xa5d4('0x4'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xa5d4('0x5'));var Redis=require(_0xa5d4('0x6'));var interaction=require(_0xa5d4('0x7'));var qs=require(_0xa5d4('0x8'));var pdf=require(_0xa5d4('0x9'));var logger=require(_0xa5d4('0xa'))('api');var config=require(_0xa5d4('0xb'));var db=require('../../mysqldb')['db'];config[_0xa5d4('0xc')]=_['defaults'](config[_0xa5d4('0xc')],{'host':_0xa5d4('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa5d4('0xc')]));require(_0xa5d4('0xe'))[_0xa5d4('0xf')](socket);var jayson=require(_0xa5d4('0x10'));var client=jayson[_0xa5d4('0x11')][_0xa5d4('0x12')]({'port':0x232b});var client9004=jayson[_0xa5d4('0x11')][_0xa5d4('0x12')]({'port':0x232c});function respondWithRpcPromise(_0x2b64a1,_0x4ea4ae,_0xb84d41,_0x5ae411){return new BPromise(function(_0x525464,_0x21ac88){var _0x15e575=_0x5ae411||client;return _0x15e575['request'](_0x2b64a1,_0xb84d41)[_0xa5d4('0x13')](function(_0x46706a){logger[_0xa5d4('0x14')](_0xa5d4('0x15'),_0x4ea4ae,_0xa5d4('0x16'));logger[_0xa5d4('0x17')](_0xa5d4('0x18'),_0x4ea4ae,_0xa5d4('0x16'),JSON[_0xa5d4('0x19')](_0x46706a));if(_0x46706a[_0xa5d4('0x1a')]){if(_0x46706a['error'][_0xa5d4('0x1b')]===0x1f4){logger[_0xa5d4('0x1a')](_0xa5d4('0x15'),_0x4ea4ae,_0x46706a['error']['message']);return _0x21ac88(_0x46706a['error'][_0xa5d4('0x1c')]);}logger[_0xa5d4('0x1a')](_0xa5d4('0x15'),_0x4ea4ae,_0x46706a['error'][_0xa5d4('0x1c')]);return _0x525464(_0x46706a['error'][_0xa5d4('0x1c')]);}else{logger[_0xa5d4('0x14')]('ChatInteraction,\x20%s,\x20%s',_0x4ea4ae,_0xa5d4('0x16'));_0x525464(_0x46706a[_0xa5d4('0x1d')]['message']);}})[_0xa5d4('0x1e')](function(_0x46b923){logger[_0xa5d4('0x1a')](_0xa5d4('0x15'),_0x4ea4ae,_0x46b923);_0x21ac88(_0x46b923);});});}function respondWithStatusCode(_0x3363d2,_0x3e1d9a){_0x3e1d9a=_0x3e1d9a||0xcc;return function(_0x37ccb1){if(_0x37ccb1){return _0x3363d2['sendStatus'](_0x3e1d9a);}return _0x3363d2['status'](_0x3e1d9a)[_0xa5d4('0x1f')]();};}function respondWithResult(_0x12cb4e,_0x22fd64){_0x22fd64=_0x22fd64||0xc8;return function(_0x29c372){if(_0x29c372){return _0x12cb4e[_0xa5d4('0x20')](_0x22fd64)['json'](_0x29c372);}};}function respondWithFilteredResult(_0x2971da,_0x129537){return function(_0x5b8a6a){if(_0x5b8a6a){var _0x33e8d7=typeof _0x129537[_0xa5d4('0x21')]===_0xa5d4('0x22')&&typeof _0x129537[_0xa5d4('0x23')]===_0xa5d4('0x22');var _0x44f672=_0x5b8a6a[_0xa5d4('0x24')];var _0x3e6a2a=_0x33e8d7?0x0:_0x129537[_0xa5d4('0x21')];var _0x192289=_0x33e8d7?_0x5b8a6a['count']:_0x129537['offset']+_0x129537[_0xa5d4('0x23')];var _0xae60f;if(_0x192289>=_0x44f672){_0x192289=_0x44f672;_0xae60f=0xc8;}else{_0xae60f=0xce;}_0x2971da[_0xa5d4('0x20')](_0xae60f);return _0x2971da[_0xa5d4('0x25')]('Content-Range',_0x3e6a2a+'-'+_0x192289+'/'+_0x44f672)['json'](_0x5b8a6a);}return null;};}function saveUpdates(_0x59eda2){return function(_0xbd240f){if(_0xbd240f){return _0xbd240f[_0xa5d4('0x26')](_0x59eda2)[_0xa5d4('0x13')](function(_0x1eff32){return _0x1eff32;});}return null;};}function removeEntity(_0x445095){return function(_0x7b2fff){if(_0x7b2fff){return _0x7b2fff[_0xa5d4('0x27')]()['then'](function(){_0x445095[_0xa5d4('0x20')](0xcc)[_0xa5d4('0x1f')]();});}};}function handleEntityNotFound(_0x15c939){return function(_0x2a2aac){if(!_0x2a2aac){_0x15c939['sendStatus'](0x194);}return _0x2a2aac;};}function handleError(_0x1f6d72,_0x21e2a4){_0x21e2a4=_0x21e2a4||0x1f4;return function(_0x3a1284){logger[_0xa5d4('0x1a')](_0x3a1284[_0xa5d4('0x28')]);if(_0x3a1284[_0xa5d4('0x29')]){delete _0x3a1284[_0xa5d4('0x29')];}_0x1f6d72[_0xa5d4('0x20')](_0x21e2a4)[_0xa5d4('0x2a')](_0x3a1284);};}function getMustacheRender(_0x7ce9b,_0x2d6410){return Mustache[_0xa5d4('0x2b')](_0x7ce9b,_[_0xa5d4('0x2c')](_0x2d6410[_0xa5d4('0x2d')],{'contact':_0x2d6410[_0xa5d4('0x2e')],'message':_0x2d6410['message'],'agent':_0x2d6410[_0xa5d4('0x2f')],'interaction':_0x2d6410[_0xa5d4('0x30')],'account':_0x2d6410['account']}))||'';}exports['index']=function(_0x3ac57a,_0x50a77e){var _0x59c936={};var _0x3ae411=_[_0xa5d4('0x31')](db[_0xa5d4('0x32')]['rawAttributes'],function(_0xf0615d){return{'name':_0xf0615d[_0xa5d4('0x33')],'type':_0xf0615d[_0xa5d4('0x34')][_0xa5d4('0x35')]};});_0x59c936=qs[_0xa5d4('0x36')](_0x3ae411,_0x3ac57a);return interaction[_0xa5d4('0x37')](_0xa5d4('0x38'),_0x3ac57a[_0xa5d4('0x39')],_0x3ac57a[_0xa5d4('0x3a')],_0x59c936,_0x3ae411)['then'](respondWithFilteredResult(_0x50a77e,_0x59c936))['catch'](handleError(_0x50a77e,null));};exports['show']=function(_0x2ee0ba,_0xb8c31c){var _0x234594={'raw':![],'where':{'id':_0x2ee0ba['params']['id']}},_0xb3a58e={};_0xb3a58e[_0xa5d4('0x3b')]=_[_0xa5d4('0x3c')](db['ChatInteraction'][_0xa5d4('0x3d')]);_0xb3a58e[_0xa5d4('0x39')]=_[_0xa5d4('0x3c')](_0x2ee0ba[_0xa5d4('0x39')]);_0xb3a58e[_0xa5d4('0x3e')]=_[_0xa5d4('0x3f')](_0xb3a58e[_0xa5d4('0x3b')],_0xb3a58e[_0xa5d4('0x39')]);_0x234594[_0xa5d4('0x40')]=_[_0xa5d4('0x3f')](_0xb3a58e[_0xa5d4('0x3b')],qs[_0xa5d4('0x41')](_0x2ee0ba[_0xa5d4('0x39')][_0xa5d4('0x41')]));_0x234594['attributes']=_0x234594[_0xa5d4('0x40')][_0xa5d4('0x42')]?_0x234594[_0xa5d4('0x40')]:_0xb3a58e[_0xa5d4('0x3b')];if(_0x2ee0ba[_0xa5d4('0x39')][_0xa5d4('0x43')]){_0x234594['include']=[{'all':!![]}];}_0x234594=_['merge']({},_0x234594,_0x2ee0ba[_0xa5d4('0x44')]);return db[_0xa5d4('0x32')][_0xa5d4('0x45')](_0x234594)[_0xa5d4('0x13')](handleEntityNotFound(_0xb8c31c,null))['then'](respondWithResult(_0xb8c31c,null))['catch'](handleError(_0xb8c31c,null));};exports['create']=function(_0xcd3f23,_0x121de5){return db[_0xa5d4('0x32')][_0xa5d4('0x46')](_0xcd3f23[_0xa5d4('0x2d')],{})['then'](respondWithResult(_0x121de5,0xc9))[_0xa5d4('0x1e')](handleError(_0x121de5,null));};exports[_0xa5d4('0x26')]=function(_0x204363,_0x4ff1b4){if(_0x204363[_0xa5d4('0x2d')]['id']){delete _0x204363[_0xa5d4('0x2d')]['id'];}return db[_0xa5d4('0x32')][_0xa5d4('0x45')]({'where':{'id':_0x204363['params']['id']}})[_0xa5d4('0x13')](handleEntityNotFound(_0x4ff1b4,null))[_0xa5d4('0x13')](saveUpdates(_0x204363[_0xa5d4('0x2d')],null))[_0xa5d4('0x13')](respondWithResult(_0x4ff1b4,null))[_0xa5d4('0x1e')](handleError(_0x4ff1b4,null));};exports[_0xa5d4('0x27')]=function(_0x5b2559,_0x2445b4){return db[_0xa5d4('0x32')][_0xa5d4('0x45')]({'where':{'id':_0x5b2559[_0xa5d4('0x47')]['id']}})[_0xa5d4('0x13')](handleEntityNotFound(_0x2445b4,null))[_0xa5d4('0x13')](removeEntity(_0x2445b4,null))[_0xa5d4('0x1e')](handleError(_0x2445b4,null));};exports['describe']=function(_0x59914b,_0x273b09){return db[_0xa5d4('0x32')][_0xa5d4('0x48')]()[_0xa5d4('0x13')](respondWithResult(_0x273b09,null))[_0xa5d4('0x1e')](handleError(_0x273b09,null));};exports[_0xa5d4('0x49')]=function(_0x5cb453,_0x5a6f56){var _0x25bef9=_0x5cb453[_0xa5d4('0x47')]['id'];var _0x3a7887;var _0x250874;var _0x1382e8;return db['ChatInteraction'][_0xa5d4('0x4a')]({'where':{'id':_0x25bef9}})[_0xa5d4('0x13')](function(_0x234fa5){_0x3a7887=_0x234fa5;return db['ChatWebsite'][_0xa5d4('0x4a')]({'where':{'id':_0x234fa5['ChatWebsiteId']},'attributes':['id',_0xa5d4('0x4b'),_0xa5d4('0x4c'),_0xa5d4('0x4d'),_0xa5d4('0x4e'),_0xa5d4('0x4f')],'raw':!![]});})[_0xa5d4('0x13')](function(_0x3acf03){if(_0x3acf03&&_0x3acf03[_0xa5d4('0x4b')]&&_0x3acf03['vidaooEscalation']){_0x250874=_0x3acf03;var _0x413ad4={'interaction':{'id':_0x25bef9},'agent':{'id':_0x5cb453[_0xa5d4('0x3a')]['id'],'name':_0x5cb453['user'][_0xa5d4('0x29')],'fullname':_0x5cb453['user']['fullname'],'email':_0x5cb453['user'][_0xa5d4('0x50')]},'contact':_0x5cb453[_0xa5d4('0x2d')][_0xa5d4('0x2e')],'account':_0x5cb453['body'][_0xa5d4('0x51')]};var _0x59f7c3={'rejectUnauthorized':![],'method':_0xa5d4('0x52'),'url':_0xa5d4('0x53'),'headers':{'X-APIKEY':_0x3acf03['vidaooApiKey']},'body':{'duration':null,'scheduledAt':null,'participants':[_0x5cb453[_0xa5d4('0x3a')][_0xa5d4('0x50')]],'buttons':null,'topic':_0x250874['vidaooTopic'],'note':_[_0xa5d4('0x54')](_0x250874[_0xa5d4('0x4e')])?null:getMustacheRender(_0x250874[_0xa5d4('0x4e')],_0x413ad4),'metadata':null},'redirect':_0xa5d4('0x55'),'json':!![]};try{if(!_[_0xa5d4('0x54')](_0x250874[_0xa5d4('0x4f')])){var _0x58f5f3=getMustacheRender(_0x250874[_0xa5d4('0x4f')],_0x413ad4);var _0x21b268=JSON[_0xa5d4('0x56')](_0x58f5f3);_0x59f7c3['body'][_0xa5d4('0x57')]=_0x21b268;}}catch(_0x4eabfd){throw new db['Sequelize']['ValidationError'](_0xa5d4('0x58'));}return rp(_0x59f7c3);}else{throw new db[(_0xa5d4('0x59'))][(_0xa5d4('0x5a'))](_0xa5d4('0x5b'));}})[_0xa5d4('0x13')](function(_0x212312){_0x1382e8=_0x212312;if(_0x1382e8['id']){var _0x376192={'body':_0x1382e8[_0xa5d4('0x5c')],'ChatWebsiteId':_0x250874['id'],'ChatInteractionId':_0x3a7887['id'],'direction':_0xa5d4('0x5d'),'UserId':_0x5cb453[_0xa5d4('0x3a')]['id']};return db[_0xa5d4('0x5e')]['create'](_0x376192,{});}else{throw new db[(_0xa5d4('0x59'))][(_0xa5d4('0x5a'))]('Unable\x20to\x20create\x20Vidaoo\x20session');}})[_0xa5d4('0x13')](function(){return _0x3a7887['updateAttributes']({'vidaooSessionId':_0x1382e8['id']});})[_0xa5d4('0x13')](respondWithResult(_0x5a6f56,null))['catch'](handleError(_0x5a6f56,null));};exports['customUpdate']=function(_0x8495ad,_0x5adc8b){if(_0x8495ad['body']['id']){delete _0x8495ad[_0xa5d4('0x2d')]['id'];}return db[_0xa5d4('0x32')][_0xa5d4('0x45')]({'where':{'id':_0x8495ad[_0xa5d4('0x47')]['id']},'include':[{'model':db[_0xa5d4('0x5f')],'as':_0xa5d4('0x60')}]})[_0xa5d4('0x13')](handleEntityNotFound(_0x5adc8b,null))[_0xa5d4('0x13')](saveUpdates(_0x8495ad['body'],null))[_0xa5d4('0x13')](respondWithResult(_0x5adc8b,null))[_0xa5d4('0x1e')](handleError(_0x5adc8b,null));};exports['abandon']=function(_0x4376ac,_0x4c8c52){if(_0x4376ac['body']['id']){delete _0x4376ac['body']['id'];}return db['ChatInteraction'][_0xa5d4('0x45')]({'where':{'id':_0x4376ac[_0xa5d4('0x47')]['id']}})[_0xa5d4('0x13')](function(_0x10df4a){if(!_0x10df4a){logger[_0xa5d4('0x1a')](_0xa5d4('0x61'),'abandon',0x194,_0xa5d4('0x62'));_0x4c8c52['sendStatus'](0x194);}else{if(_0x10df4a['UserId']){throw new db['Sequelize'][(_0xa5d4('0x5a'))](_0xa5d4('0x63'));}}return _0x10df4a;})[_0xa5d4('0x13')](function(_0x1dc53c){if(_0x1dc53c){return _0x1dc53c[_0xa5d4('0x26')]({'closed':_0x4376ac['body'][_0xa5d4('0x64')],'disposition':_0x4376ac[_0xa5d4('0x2d')][_0xa5d4('0x65')]})[_0xa5d4('0x13')](function(_0x2659d1){return _0x2659d1;});}})[_0xa5d4('0x13')](function(){return respondWithRpcPromise(_0xa5d4('0x66'),_0xa5d4('0x67'),_0x4376ac['body'],client9004);})[_0xa5d4('0x13')](respondWithResult(_0x4c8c52,null))[_0xa5d4('0x1e')](handleError(_0x4c8c52,null));};exports['attachmentUpload']=function(_0x143053,_0x13ef42){_0x143053[_0xa5d4('0x2d')][_0xa5d4('0x29')]=_0x143053['file'][_0xa5d4('0x68')];_0x143053[_0xa5d4('0x2d')][_0xa5d4('0x69')]=_0x143053[_0xa5d4('0x6a')]['filename'];_0x143053[_0xa5d4('0x2d')][_0xa5d4('0x34')]=_0x143053[_0xa5d4('0x6a')][_0xa5d4('0x6b')];return db['Attachment'][_0xa5d4('0x46')](_0x143053['body'])['then'](respondWithResult(_0x13ef42,0xc9))[_0xa5d4('0x1e')](handleError(_0x13ef42,null));};exports[_0xa5d4('0x6c')]=function(_0x37fac7,_0xa829a0){return db[_0xa5d4('0x32')]['findOne']({'where':{'id':_0x37fac7[_0xa5d4('0x47')]['id']},'raw':!![]})[_0xa5d4('0x13')](handleEntityNotFound(_0xa829a0,null))[_0xa5d4('0x13')](function(_0x52f8d7){if(_0x52f8d7){if(_0x52f8d7[_0xa5d4('0x64')]){return _0xa829a0[_0xa5d4('0x20')](0x193)[_0xa5d4('0x6d')]({'status':0x193,'message':_0xa5d4('0x6e')});}return db[_0xa5d4('0x6f')]['findOne']({'where':{'id':_0x37fac7['query'][_0xa5d4('0x70')]},'raw':!![]})[_0xa5d4('0x13')](handleEntityNotFound(_0xa829a0,null));}})[_0xa5d4('0x13')](function(_0x4020ac){if(_0x4020ac){var _0x9a7a3a=_0x4020ac['ChatOfflineMessageId']!==null;var _0x47af3b=path[_0xa5d4('0x71')](config[_0xa5d4('0x72')],_0xa5d4('0x73'));if(_0x9a7a3a){_0x47af3b=path[_0xa5d4('0x71')](_0x47af3b,_0xa5d4('0x74'));}var _0x2caf3c=path[_0xa5d4('0x71')](_0x47af3b,_0x4020ac[_0xa5d4('0x69')]);return _0xa829a0['download'](_0x2caf3c);}})[_0xa5d4('0x1e')](handleError(_0xa829a0,null));};exports[_0xa5d4('0x75')]=function(_0x1b254c,_0x53939b){var _0x1eff58=null;var _0x5a035b=null;var _0x2ba207=null;if(_0x1b254c[_0xa5d4('0x2d')]['id']){delete _0x1b254c[_0xa5d4('0x2d')]['id'];}if(_0x1b254c[_0xa5d4('0x2d')][_0xa5d4('0x76')]){_0x2ba207=path[_0xa5d4('0x71')](config[_0xa5d4('0x72')],_0xa5d4('0x77'),util[_0xa5d4('0x78')]('transcript-%s.txt',Date['now']()));_0x1b254c[_0xa5d4('0x2d')][_0xa5d4('0x79')]=_0x2ba207;}return db[_0xa5d4('0x32')][_0xa5d4('0x45')]({'where':{'id':_0x1b254c[_0xa5d4('0x47')]['id']},'include':[{'model':db[_0xa5d4('0x5e')],'as':_0xa5d4('0x7a'),'include':[{'model':db[_0xa5d4('0x7b')],'as':_0xa5d4('0x7b')}]}]})[_0xa5d4('0x13')](handleEntityNotFound(_0x53939b,null))[_0xa5d4('0x13')](saveUpdates(_0x1b254c['body'],null))[_0xa5d4('0x13')](function(_0x24ae3c){if(_0x24ae3c){_0x1eff58=_0x24ae3c;return db[_0xa5d4('0x7c')][_0xa5d4('0x45')]({'where':{'id':_0x1eff58[_0xa5d4('0x7d')]}});}})['then'](function(_0x17bd07){if(_0x17bd07){_0x5a035b=_0x17bd07;return db[_0xa5d4('0x5f')][_0xa5d4('0x45')]({'where':{'id':_0x1eff58['ContactId']}});}})[_0xa5d4('0x13')](function(_0x1ff82c){if(_0x1ff82c){if(_0x2ba207){var _0x133c53=null;for(var _0x33554d=0x1;_0x33554d<_0x1eff58[_0xa5d4('0x7a')][_0xa5d4('0x42')];++_0x33554d){_0x133c53=_0x1eff58[_0xa5d4('0x7a')][_0x33554d];var _0x44a6a2=_0x133c53[_0xa5d4('0x7e')]?util[_0xa5d4('0x78')](_0xa5d4('0x7f'),_0x5a035b[_0xa5d4('0x80')],_0x133c53[_0xa5d4('0x7e')]):_0xa5d4('0x81');var _0x38c52a=_0x1b254c['body'][_0xa5d4('0x82')]||util[_0xa5d4('0x78')]('%s%d','Visitor',_0x133c53['ContactId']);switch(_0x5a035b['agentIdentifier']){case _0xa5d4('0x83'):_0x44a6a2=_0x133c53[_0xa5d4('0x7e')]?util['format'](_0xa5d4('0x7f'),_0x5a035b['agentAlias'],_0x133c53[_0xa5d4('0x7e')]):'System';break;case _0xa5d4('0x84'):_0x44a6a2=_0x133c53['UserId']?_0x133c53[_0xa5d4('0x7b')][_0xa5d4('0x85')]||_0x133c53[_0xa5d4('0x7b')][_0xa5d4('0x86')]:'System';break;case _0xa5d4('0x87'):_0x44a6a2=_0x133c53[_0xa5d4('0x7e')]?_0x133c53['User'][_0xa5d4('0x86')]:_0xa5d4('0x81');break;default:_0x44a6a2=_0x133c53[_0xa5d4('0x7e')]?util[_0xa5d4('0x78')](_0xa5d4('0x7f'),_0x5a035b['agentAlias'],_0x133c53[_0xa5d4('0x7e')]):'System';}var _0x4c830b=util[_0xa5d4('0x78')](_0xa5d4('0x88'),moment(_0x133c53['createdAt'])[_0xa5d4('0x78')](_0xa5d4('0x89')),_0x133c53[_0xa5d4('0x8a')]==='in'?_0x38c52a:_0x44a6a2,_0x133c53[_0xa5d4('0x2d')]);if(!_0x133c53[_0xa5d4('0x8b')]){fs[_0xa5d4('0x8c')](_0x2ba207,_0x4c830b);}}return db[_0xa5d4('0x8d')][_0xa5d4('0x4a')]({'where':{'service':!![]},'include':[{'model':db[_0xa5d4('0x8e')],'as':'Smtp','raw':!![],'include':[{'model':db[_0xa5d4('0x8f')],'as':'CloudProvider','raw':!![]}]}]});}}})[_0xa5d4('0x13')](function(_0x2ab66e){if(!_0x2ab66e||!_0x2ab66e[_0xa5d4('0x90')]||!_0x1b254c[_0xa5d4('0x2d')])return _0x1eff58;var _0x1faed8=_0x2ab66e[_0xa5d4('0x91')]();return respondWithRpcPromise(_0xa5d4('0x92'),'sendMail',{'account':_0x1faed8,'message':{'from':util['format']('\x22%s\x22\x20<%s>',_0x2ab66e[_0xa5d4('0x29')],_0x2ab66e[_0xa5d4('0x50')]||_0x2ab66e[_0xa5d4('0x90')]['user']),'to':_0x1b254c['body'][_0xa5d4('0x76')],'subject':_0xa5d4('0x93'),'text':util['format']('Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a',_0x1b254c[_0xa5d4('0x2d')]['mailTranscript']),'attachments':[{'path':_0x2ba207}]}})[_0xa5d4('0x13')](function(){return _0x1eff58;})[_0xa5d4('0x1e')](function(_0x1d3c42){logger[_0xa5d4('0x1a')](_0x1d3c42);});})[_0xa5d4('0x13')](respondWithStatusCode(_0x53939b,0xc8))[_0xa5d4('0x1e')](handleError(_0x53939b,null));};exports['addMessage']=function(_0x96fe07,_0x5c4ee2){return db[_0xa5d4('0x5e')][_0xa5d4('0x45')]({'where':{'id':_0x96fe07[_0xa5d4('0x47')]['id']}})['then'](handleEntityNotFound(_0x5c4ee2,null))[_0xa5d4('0x13')](function(_0x5e3b78){if(_0x5e3b78){return _0x5e3b78[_0xa5d4('0x94')](_0x96fe07[_0xa5d4('0x2d')][_0xa5d4('0x95')],_['omit'](_0x96fe07[_0xa5d4('0x2d')],[_0xa5d4('0x95'),'id'])||{});}})[_0xa5d4('0x13')](respondWithResult(_0x5c4ee2,null))[_0xa5d4('0x1e')](handleError(_0x5c4ee2,null));};exports[_0xa5d4('0x96')]=function(_0x47f6ed,_0x4ebe22){var _0x5020d9={'raw':![],'where':{}};var _0x15c1d5={};var _0x14e2f1={'count':0x0,'rows':[]};return db['ChatInteraction'][_0xa5d4('0x4a')]({'where':{'id':_0x47f6ed[_0xa5d4('0x47')]['id']}})[_0xa5d4('0x13')](handleEntityNotFound(_0x4ebe22,null))[_0xa5d4('0x13')](function(_0x4c9394){if(_0x4c9394){_0x15c1d5['model']=_[_0xa5d4('0x3c')](db[_0xa5d4('0x5e')][_0xa5d4('0x3d')]);_0x15c1d5[_0xa5d4('0x39')]=_[_0xa5d4('0x3c')](_0x47f6ed[_0xa5d4('0x39')]);_0x15c1d5[_0xa5d4('0x3e')]=_[_0xa5d4('0x3f')](_0x15c1d5[_0xa5d4('0x3b')],_0x15c1d5[_0xa5d4('0x39')]);_0x5020d9['attributes']=_[_0xa5d4('0x3f')](_0x15c1d5[_0xa5d4('0x3b')],qs[_0xa5d4('0x41')](_0x47f6ed[_0xa5d4('0x39')][_0xa5d4('0x41')]));_0x5020d9[_0xa5d4('0x40')]=_0x5020d9[_0xa5d4('0x40')][_0xa5d4('0x42')]?_0x5020d9[_0xa5d4('0x40')]:_0x15c1d5[_0xa5d4('0x3b')];if(!_0x47f6ed['query'][_0xa5d4('0x97')]('nolimit')){_0x5020d9[_0xa5d4('0x23')]=qs['limit'](_0x47f6ed[_0xa5d4('0x39')][_0xa5d4('0x23')]);_0x5020d9[_0xa5d4('0x21')]=qs['offset'](_0x47f6ed[_0xa5d4('0x39')][_0xa5d4('0x21')]);}_0x5020d9['order']=qs[_0xa5d4('0x98')](_0x47f6ed[_0xa5d4('0x39')][_0xa5d4('0x98')]);_0x5020d9['where']=qs[_0xa5d4('0x3e')](_[_0xa5d4('0x99')](_0x47f6ed[_0xa5d4('0x39')],_0x15c1d5[_0xa5d4('0x3e')]));_0x5020d9[_0xa5d4('0x9a')][_0xa5d4('0x9b')]=_0x4c9394['id'];if(_0x47f6ed[_0xa5d4('0x39')]['filter']){_0x5020d9[_0xa5d4('0x9a')]=_[_0xa5d4('0x2c')](_0x5020d9['where'],{'$or':_[_0xa5d4('0x31')](_0x5020d9['attributes'],function(_0x19e4ac){var _0x485b45={};_0x485b45[_0x19e4ac]={'$like':'%'+_0x47f6ed[_0xa5d4('0x39')][_0xa5d4('0x9c')]+'%'};return _0x485b45;})});}if(_0x47f6ed[_0xa5d4('0x39')][_0xa5d4('0x9d')]){var _0x5f0bd5=_0x47f6ed[_0xa5d4('0x39')][_0xa5d4('0x9d')][_0xa5d4('0x9e')](',');var _0x2b3429={};_0x2b3429[_0x5f0bd5[0x0]]={'$gte':moment(_0x5f0bd5[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x5020d9['where']=_[_0xa5d4('0x2c')](_0x5020d9[_0xa5d4('0x9a')],_0x2b3429);}_0x5020d9=_[_0xa5d4('0x2c')]({},_0x5020d9,_0x47f6ed[_0xa5d4('0x44')]);return db['ChatMessage'][_0xa5d4('0x24')]({'where':_0x5020d9['where']})[_0xa5d4('0x13')](function(_0x3f8f13){_0x14e2f1[_0xa5d4('0x24')]=_0x3f8f13;if(_0x47f6ed[_0xa5d4('0x39')][_0xa5d4('0x43')]){_0x5020d9['include']=[{'all':!![]}];}return db[_0xa5d4('0x5e')][_0xa5d4('0x37')](_0x5020d9);})[_0xa5d4('0x13')](function(_0x4df3ee){_0x14e2f1['rows']=_0x4df3ee;return _0x14e2f1;});}})[_0xa5d4('0x13')](respondWithFilteredResult(_0x4ebe22,_0x5020d9))[_0xa5d4('0x1e')](handleError(_0x4ebe22,null));};exports[_0xa5d4('0x9f')]=function(_0x2ef3e0,_0x33f5c2){var _0x3e1694={'where':{}},_0x58228c={},_0x5bb5c0={'count':0x0,'rows':[]};return db['ChatInteraction'][_0xa5d4('0x4a')]({'where':{'id':_0x2ef3e0[_0xa5d4('0x47')]['id']}})['then'](handleEntityNotFound(_0x33f5c2,null))['then'](function(_0x27f043){if(_0x27f043){_0x58228c['model']=_['keys'](db[_0xa5d4('0x5e')][_0xa5d4('0x3d')]);_0x58228c[_0xa5d4('0x39')]=_[_0xa5d4('0x3c')](_0x2ef3e0['query']);_0x58228c['filters']=_[_0xa5d4('0x3f')](_0x58228c[_0xa5d4('0x3b')],_0x58228c['query']);_0x3e1694[_0xa5d4('0x40')]=_[_0xa5d4('0x3f')](_0x58228c[_0xa5d4('0x3b')],qs[_0xa5d4('0x41')](_0x2ef3e0[_0xa5d4('0x39')][_0xa5d4('0x41')]));_0x3e1694[_0xa5d4('0x40')]=_0x3e1694[_0xa5d4('0x40')][_0xa5d4('0x42')]?_0x3e1694[_0xa5d4('0x40')]:_0x58228c['model'];if(!_0x2ef3e0[_0xa5d4('0x39')][_0xa5d4('0x97')](_0xa5d4('0xa0'))){_0x3e1694[_0xa5d4('0x23')]=qs[_0xa5d4('0x23')](_0x2ef3e0[_0xa5d4('0x39')][_0xa5d4('0x23')]);_0x3e1694[_0xa5d4('0x21')]=qs['offset'](_0x2ef3e0['query'][_0xa5d4('0x21')]);}_0x3e1694[_0xa5d4('0xa1')]=qs[_0xa5d4('0x98')](_0x2ef3e0[_0xa5d4('0x39')][_0xa5d4('0x98')]);_0x3e1694[_0xa5d4('0x9a')]=qs[_0xa5d4('0x3e')](_['pick'](_0x2ef3e0[_0xa5d4('0x39')],_0x58228c['filters']));_0x3e1694[_0xa5d4('0x9a')][_0xa5d4('0x9b')]=_0x27f043['id'];if(_0x2ef3e0[_0xa5d4('0x39')]['filter']){_0x3e1694[_0xa5d4('0x9a')]=_[_0xa5d4('0x2c')](_0x3e1694[_0xa5d4('0x9a')],{'$or':_[_0xa5d4('0x31')](_0x3e1694[_0xa5d4('0x40')],function(_0xc9b0b2){var _0x177609={};_0x177609[_0xc9b0b2]={'$like':'%'+_0x2ef3e0[_0xa5d4('0x39')][_0xa5d4('0x9c')]+'%'};return _0x177609;})});}_0x3e1694[_0xa5d4('0x9a')][_0xa5d4('0x8b')]=![];if(_0x2ef3e0[_0xa5d4('0x39')]['id']){_0x3e1694[_0xa5d4('0x9a')]['id']={'$gt':_0x2ef3e0['query']['id']};}_0x3e1694=_[_0xa5d4('0x2c')]({},_0x3e1694,_0x2ef3e0['options']);return db[_0xa5d4('0x5e')]['count']({'where':_0x3e1694['where']})[_0xa5d4('0x13')](function(_0x2bfbb6){_0x5bb5c0[_0xa5d4('0x24')]=_0x2bfbb6;_0x3e1694[_0xa5d4('0xa2')]=[];if(_0x2ef3e0[_0xa5d4('0x39')][_0xa5d4('0xa3')]){_0x3e1694[_0xa5d4('0xa2')][_0xa5d4('0xa4')]({'model':db[_0xa5d4('0x7b')],'as':'User','attributes':['id',_0xa5d4('0x86'),_0xa5d4('0x85')]});}if(_0x2ef3e0['query']['includeAll']){_0x3e1694[_0xa5d4('0xa2')]=[{'all':!![]}];}return db[_0xa5d4('0x5e')]['findAll'](_0x3e1694);})['then'](function(_0x24ae18){_0x5bb5c0[_0xa5d4('0xa5')]=_0x24ae18;return _0x5bb5c0;});}})['then'](respondWithFilteredResult(_0x33f5c2,_0x3e1694))[_0xa5d4('0x1e')](handleError(_0x33f5c2,null));};exports[_0xa5d4('0xa6')]=function(_0x1e1938,_0x3633c2){return db[_0xa5d4('0x32')]['find']({'where':{'id':_0x1e1938[_0xa5d4('0x47')]['id']}})[_0xa5d4('0x13')](handleEntityNotFound(_0x3633c2,null))['then'](function(_0x5f4f53){if(_0x5f4f53){return _0x5f4f53[_0xa5d4('0xa7')](_0x1e1938[_0xa5d4('0x2d')][_0xa5d4('0x95')],_[_0xa5d4('0xa8')](_0x1e1938[_0xa5d4('0x2d')],[_0xa5d4('0x95'),'id'])||{})[_0xa5d4('0xa9')](function(){return db['Tag'][_0xa5d4('0x37')]({'attributes':['id','name',_0xa5d4('0xaa')],'where':{'id':_0x1e1938[_0xa5d4('0x2d')][_0xa5d4('0x95')]}});})[_0xa5d4('0x13')](function(_0x1810c8){socket[_0xa5d4('0xab')](_0xa5d4('0xac'),{'id':Number(_0x1e1938['params']['id']),'tags':_0x1810c8||[]});return{'id':Number(_0x1e1938[_0xa5d4('0x47')]['id']),'tags':_0x1810c8||[]};});}})[_0xa5d4('0x13')](respondWithResult(_0x3633c2,null))['catch'](handleError(_0x3633c2,null));};exports['removeTags']=function(_0x3c7c6c,_0x572f42){return db[_0xa5d4('0x32')][_0xa5d4('0x45')]({'where':{'id':_0x3c7c6c['params']['id']}})[_0xa5d4('0x13')](handleEntityNotFound(_0x572f42,null))['then'](function(_0xc566de){if(_0xc566de){return _0xc566de[_0xa5d4('0xad')](_0x3c7c6c[_0xa5d4('0x39')][_0xa5d4('0x95')]);}})[_0xa5d4('0x13')](respondWithStatusCode(_0x572f42,null))[_0xa5d4('0x1e')](handleError(_0x572f42,null));};exports['download']=function(_0x44d258,_0x57dec2){var _0x59a0db=moment()['unix']()[_0xa5d4('0xae')]();var _0x4eeea6=path[_0xa5d4('0x71')](config['root'],_0xa5d4('0xaf'),'files','tmp');var _0x1fde04=path[_0xa5d4('0x71')](config[_0xa5d4('0x72')],_0xa5d4('0xaf'),'files','attachments');var _0x3d4adb=path[_0xa5d4('0x71')](_0x4eeea6,_0x59a0db);var _0x2941fe=util[_0xa5d4('0x78')](_0xa5d4('0xb0'),_0x44d258['params']['id'],_0x59a0db);var _0x49ca3e=path[_0xa5d4('0x71')](_0x4eeea6,_0x2941fe);var _0x45483a=[];_0x45483a[_0xa5d4('0xa4')]({'model':db[_0xa5d4('0x7b')],'as':_0xa5d4('0x7b'),'attributes':['id',_0xa5d4('0x86')],'raw':!![]});_0x45483a['push']({'model':db[_0xa5d4('0x5f')],'as':_0xa5d4('0x60'),'attributes':['id',_0xa5d4('0xb1'),_0xa5d4('0xb2')],'raw':!![]});if(_0x44d258[_0xa5d4('0x39')][_0xa5d4('0xb3')]){_0x45483a[_0xa5d4('0xa4')]({'model':db[_0xa5d4('0x6f')],'as':_0xa5d4('0x6f'),'raw':!![]});}var _0x8aea71=[{'model':db[_0xa5d4('0x5e')],'as':_0xa5d4('0x7a'),'attributes':['id',_0xa5d4('0x2d'),'createdAt','direction',_0xa5d4('0x8b'),_0xa5d4('0xb4')],'include':_0x45483a}];_0x8aea71[_0xa5d4('0xa4')]({'model':db[_0xa5d4('0x7c')],'as':'Account','attributes':['id',_0xa5d4('0x29')]});_0x8aea71[_0xa5d4('0xa4')]({'model':db[_0xa5d4('0x7b')],'as':_0xa5d4('0xb5'),'attributes':['id',_0xa5d4('0x86')]});return db[_0xa5d4('0x32')][_0xa5d4('0x45')]({'where':{'id':_0x44d258['params']['id']},'include':_0x8aea71})[_0xa5d4('0x13')](handleEntityNotFound(_0x57dec2,null))[_0xa5d4('0x13')](function(_0x4ac5e5){if(_0x4ac5e5){var _0x409897=_0x4ac5e5[_0xa5d4('0xb6')]({'plain':!![]});fs[_0xa5d4('0xb7')](_0x3d4adb);var _0x3bd317={'channel':_0xa5d4('0xb8'),'account':_0x409897[_0xa5d4('0xb9')][_0xa5d4('0x29')],'agent':_0x409897[_0xa5d4('0xb5')]?_0x409897[_0xa5d4('0xb5')][_0xa5d4('0x86')]:_0xa5d4('0xba'),'createdAt':moment(_0x409897[_0xa5d4('0xbb')])[_0xa5d4('0x78')]('YYYY-MM-DD\x20HH:mm:ss')[_0xa5d4('0xae')](),'closedAt':_0x409897[_0xa5d4('0x64')]?moment(_0x409897['closedAt'])[_0xa5d4('0x78')]('YYYY-MM-DD\x20HH:mm:ss')['toString']():'','disposition':_0x409897[_0xa5d4('0x65')],'chatInfo':{'browser':_0x409897[_0xa5d4('0xbc')],'os':_0x409897[_0xa5d4('0xbd')],'referer':_0x409897[_0xa5d4('0xbe')],'customerIp':_0x409897[_0xa5d4('0xbf')],'customerPort':_0x409897['customerPort']?_0x409897[_0xa5d4('0xc0')]:'N.A.'},'messages':_(_0x409897[_0xa5d4('0x7a')])[_0xa5d4('0xc1')]()[_0xa5d4('0x9c')]({'secret':![]})['map'](function(_0x6b2d6a){if(_0x6b2d6a[_0xa5d4('0x6f')]){var _0xec798a=path[_0xa5d4('0x71')](_0x1fde04,_0x6b2d6a[_0xa5d4('0x6f')][_0xa5d4('0x69')]);if(fs[_0xa5d4('0xc2')](_0xec798a)){fs[_0xa5d4('0xc3')](_0xec798a)[_0xa5d4('0xc4')](fs[_0xa5d4('0xc5')](path[_0xa5d4('0x71')](_0x3d4adb,_0x6b2d6a['Attachment']['basename'])));}}return{'date':moment(_0x6b2d6a[_0xa5d4('0xbb')])['format'](_0xa5d4('0xc6'))[_0xa5d4('0xae')](),'sender':_0x6b2d6a[_0xa5d4('0x8a')]==='out'?_0x6b2d6a[_0xa5d4('0x7b')]?_0x6b2d6a[_0xa5d4('0x7b')][_0xa5d4('0x86')]:_0xa5d4('0x81'):_0x6b2d6a[_0xa5d4('0x60')]['firstName']+(_0x6b2d6a[_0xa5d4('0x60')]['lastName']?'\x20'+_0x6b2d6a[_0xa5d4('0x60')]['lastName']:''),'body':_0x6b2d6a[_0xa5d4('0x6f')]?_0x6b2d6a[_0xa5d4('0x6f')]['basename']:_0x6b2d6a[_0xa5d4('0x2d')],'direction':_0x6b2d6a[_0xa5d4('0x8a')]===_0xa5d4('0x5d')?'A':'C','secret':_0x6b2d6a['secret'],'read':_0x6b2d6a[_0xa5d4('0xb4')],'attachment':_0x6b2d6a[_0xa5d4('0x6f')]};})[_0xa5d4('0xc7')]()};return ejs[_0xa5d4('0xc8')](path[_0xa5d4('0x71')](config['root'],_0xa5d4('0xaf'),_0xa5d4('0xc9'),'downloadInteraction.ejs'),{'interaction':_0x3bd317})['then'](function(_0xc17f32){var _0x56f357=path[_0xa5d4('0x71')](_0x3d4adb,_0xa5d4('0xca')+_0x409897['id']+'-'+_0x59a0db+_0xa5d4('0xcb'));var _0x2714fa={'path':_0x56f357,'channel':_0xa5d4('0xb8'),'interactionId':_0x409897['id']};return pdf[_0xa5d4('0xcc')](_0xc17f32,_0x2714fa);})['then'](function(){return new Promise(function(_0x3d2c8d,_0x28e326){zipdir(_0x3d4adb,{'saveTo':_0x49ca3e},function(_0x182a1f,_0x34f1a6){if(_0x182a1f)return _0x28e326(_0x182a1f);return _0x3d2c8d(_0x34f1a6);});})[_0xa5d4('0x13')](function(){return new BPromise(function(_0x2bdfff,_0x478946){rimraf(_0x3d4adb,function(_0x42d808){if(_0x42d808)_0x478946(_0x42d808);return _0x2bdfff();});});})[_0xa5d4('0x13')](function(){return _0x57dec2['download'](_0x49ca3e,_0x2941fe,function(_0x5e808a){if(_0x5e808a){logger[_0xa5d4('0x1a')](_0xa5d4('0xcd'),_0x5e808a);}else{fs[_0xa5d4('0xce')](_0x49ca3e);}});});});}else{return _0x57dec2['sendStatus'](0xc8);}})[_0xa5d4('0x1e')](handleError(_0x57dec2,null));};