Built motion from commit b0a9a629.|2.6.33
[motion2.git] / server / components / interaction / accept-message.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 _0xbf07=['EventManager','acceptmessage','sendAmiAcceptEvent','AcceptMessage','acceptMessage','sendRoutingAcceptEvent','newinteraction','sendInteractionOpenedEvent','../../mysqldb','../../errors/api','APINotFoundError','../../config/logger','api','client','http','then','info','%s,\x20%s,\x20%s','request\x20sent','debug','%s,\x20%s,\x20%s,\x20%s','code','error','message','catch','params','user','get','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','getAcceptParams','capitalize','findOne','Message\x20with\x20id\x20','\x20not\x20found','updateMessageById','Interaction','Interaction\x20with\x20id\x20','read1stAt','updateInteractionById','sequelize','query','QueryTypes','SELECT','length','Contact\x20with\x20id\x20','findContactById','name','fullname','internal','findAgentById','Message','chat','fax','mail','openchannel','OpenchannelInteractionId','sms','SmsInteractionId','WhatsappInteractionId','min','col','isNewInteraction','parse','interaction','formData'];(function(_0x209bbf,_0x2e2375){var _0x592d4b=function(_0x419947){while(--_0x419947){_0x209bbf['push'](_0x209bbf['shift']());}};_0x592d4b(++_0x2e2375);}(_0xbf07,0x92));var _0x7bf0=function(_0x2afbb0,_0x44f16d){_0x2afbb0=_0x2afbb0-0x0;var _0x411ff2=_0xbf07[_0x2afbb0];return _0x411ff2;};'use strict';var _=require('lodash');var moment=require('moment');var jayson=require('jayson/promise');var db=require(_0x7bf0('0x0'))['db'];var APINotFoundError=require(_0x7bf0('0x1'))[_0x7bf0('0x2')];var logger=require(_0x7bf0('0x3'))(_0x7bf0('0x4'));var rpcAmiClient=jayson[_0x7bf0('0x5')][_0x7bf0('0x6')]({'port':0x232a});var rpcRoutingClient=jayson[_0x7bf0('0x5')][_0x7bf0('0x6')]({'port':0x232c});function respondWithRpcPromise(_0xedc5bc,_0x27dd57,_0x5a8a9b,_0x279959,_0x2a40b4){return new Promise(function(_0xfe395b,_0x1c0632){return _0x2a40b4['request'](_0x27dd57,_0x279959)[_0x7bf0('0x7')](function(_0xb3c59d){logger[_0x7bf0('0x8')](_0x7bf0('0x9'),_0xedc5bc,_0x5a8a9b,_0x7bf0('0xa'));logger[_0x7bf0('0xb')](_0x7bf0('0xc'),_0xedc5bc,_0x5a8a9b,'request\x20sent',JSON['stringify'](_0xb3c59d));if(_0xb3c59d['error']){if(_0xb3c59d['error'][_0x7bf0('0xd')]===0x1f4){logger[_0x7bf0('0xe')]('%s,\x20%s,\x20%s',_0xedc5bc,_0x5a8a9b,_0xb3c59d[_0x7bf0('0xe')][_0x7bf0('0xf')]);return _0x1c0632(_0xb3c59d[_0x7bf0('0xe')][_0x7bf0('0xf')]);}logger[_0x7bf0('0xe')](_0x7bf0('0x9'),_0xedc5bc,_0x5a8a9b,_0xb3c59d[_0x7bf0('0xe')][_0x7bf0('0xf')]);return _0xfe395b(_0xb3c59d[_0x7bf0('0xe')][_0x7bf0('0xf')]);}else{logger[_0x7bf0('0x8')](_0x7bf0('0x9'),_0xedc5bc,_0x5a8a9b,'request\x20sent');_0xfe395b(_0xb3c59d['result'][_0x7bf0('0xf')]);}})[_0x7bf0('0x10')](function(_0x2ef9e9){logger['error'](_0x7bf0('0x9'),_0xedc5bc,_0x5a8a9b,_0x2ef9e9);_0x1c0632(_0x2ef9e9);});});}function getAcceptParams(_0x154d50){var _0x7e08ac=_0x154d50[_0x7bf0('0x11')]['id'];var _0x1a10a4=_0x154d50['body'];delete _0x1a10a4['id'];var _0x3a1cf0=_0x154d50[_0x7bf0('0x12')][_0x7bf0('0x13')]({'plain':!![]});_0x1a10a4[_0x7bf0('0x14')]=!![];_0x1a10a4[_0x7bf0('0x15')]=moment()[_0x7bf0('0x16')](_0x7bf0('0x17'));_0x1a10a4[_0x7bf0('0x18')]=_0x1a10a4[_0x7bf0('0x18')]||_0x3a1cf0['id'];return{'messageId':_0x7e08ac,'payload':_0x1a10a4,'user':_0x3a1cf0};}exports[_0x7bf0('0x19')]=getAcceptParams;function updateMessageById(_0x54356f,_0x5c41e7,_0x5a332a){var _0x5339c6=_[_0x7bf0('0x1a')](_0x54356f)+'Message';return db[_0x5339c6][_0x7bf0('0x1b')]({'where':{'id':_0x5c41e7,'UserId':null}})[_0x7bf0('0x7')](function(_0x52eca5){if(!_0x52eca5){throw new APINotFoundError(_0x7bf0('0x1c')+_0x5c41e7+_0x7bf0('0x1d'));}return _0x52eca5['update'](_0x5a332a);})['then'](function(_0xcb9281){return _0xcb9281[_0x7bf0('0x13')]({'plain':!![]});});}exports[_0x7bf0('0x1e')]=updateMessageById;function updateInteractionById(_0x12423d,_0x2f2a18,_0xda04c2){var _0x4c10dd=_[_0x7bf0('0x1a')](_0x12423d)+_0x7bf0('0x1f');return db[_0x4c10dd][_0x7bf0('0x1b')]({'where':{'id':_0x2f2a18}})[_0x7bf0('0x7')](function(_0xeb9d7d){if(!_0xeb9d7d){throw new APINotFoundError(_0x7bf0('0x20')+_0x2f2a18+'\x20not\x20found');}var _0x4f4ec9=_0xeb9d7d[_0x7bf0('0x21')]||moment()['format'](_0x7bf0('0x17'));return _0xeb9d7d['update']({'UserId':_0xda04c2,'read1stAt':_0x4f4ec9});})[_0x7bf0('0x7')](function(_0xe7931a){return _0xe7931a[_0x7bf0('0x13')]({'plain':!![]});});}exports[_0x7bf0('0x22')]=updateInteractionById;function findContactById(_0x180425){var _0xbd19a2='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x180425;return db[_0x7bf0('0x23')][_0x7bf0('0x24')](_0xbd19a2,{'type':db[_0x7bf0('0x23')][_0x7bf0('0x25')][_0x7bf0('0x26')],'raw':!![]})[_0x7bf0('0x7')](function(_0x12d750){if(_0x12d750[_0x7bf0('0x27')]===0x0){throw new APINotFoundError(_0x7bf0('0x28')+_0x180425+_0x7bf0('0x1d'));}return _0x12d750[0x0];});}exports[_0x7bf0('0x29')]=findContactById;function findAgentById(_0xeab2af){return db['User'][_0x7bf0('0x1b')]({'where':{'id':_0xeab2af,'role':'agent'},'attributes':['id',_0x7bf0('0x2a'),_0x7bf0('0x2b'),'email',_0x7bf0('0x2c')],'raw':!![]});}exports[_0x7bf0('0x2d')]=findAgentById;function isNewInteraction(_0x30e364,_0x31fcf9,_0x2dc69a){var _0x2ee4df=_['capitalize'](_0x30e364)+_0x7bf0('0x2e');var _0xbb5e05={};switch(_0x30e364){case _0x7bf0('0x2f'):_0xbb5e05['ChatInteractionId']=_0x31fcf9;break;case _0x7bf0('0x30'):_0xbb5e05['FaxInteractionId']=_0x31fcf9;break;case _0x7bf0('0x31'):_0xbb5e05['MailInteractionId']=_0x31fcf9;break;case _0x7bf0('0x32'):_0xbb5e05[_0x7bf0('0x33')]=_0x31fcf9;break;case _0x7bf0('0x34'):_0xbb5e05[_0x7bf0('0x35')]=_0x31fcf9;break;case'whatsapp':_0xbb5e05[_0x7bf0('0x36')]=_0x31fcf9;break;}return db[_0x2ee4df]['findOne']({'where':_0xbb5e05,'attributes':[[db[_0x7bf0('0x23')]['fn'](_0x7bf0('0x37'),db['sequelize'][_0x7bf0('0x38')]('id')),'id']],'raw':!![]})[_0x7bf0('0x7')](function(_0x3afb5b){return _0x2dc69a===_0x3afb5b['id'];});}exports[_0x7bf0('0x39')]=isNewInteraction;function sendAmiAcceptEvent(_0x512ddf,_0x3ebe14){var _0x753f43=_[_0x7bf0('0x1a')](_0x512ddf)+_0x7bf0('0x2e');var _0x3ab51c=_0x3ebe14['message'];if(_0x512ddf===_0x7bf0('0x2f')){Object['assign'](_0x3ab51c,JSON[_0x7bf0('0x3a')](_0x3ebe14[_0x7bf0('0x3b')][_0x7bf0('0x3c')]));}return respondWithRpcPromise(_0x753f43,_0x7bf0('0x3d'),_0x7bf0('0x3d'),{'event':_0x7bf0('0x3e'),'message':_0x3ab51c},rpcAmiClient);}exports[_0x7bf0('0x3f')]=sendAmiAcceptEvent;function sendRoutingAcceptEvent(_0x168026,_0xc4db2e){var _0x4adcf4=_['capitalize'](_0x168026)+'Message';return respondWithRpcPromise(_0x4adcf4,_0x7bf0('0x40'),_0x7bf0('0x41'),_0xc4db2e,rpcRoutingClient);}exports[_0x7bf0('0x42')]=sendRoutingAcceptEvent;function sendInteractionOpenedEvent(_0x1984b5,_0x42503e){var _0xbd4f2d=_[_0x7bf0('0x1a')](_0x1984b5)+_0x7bf0('0x2e');return respondWithRpcPromise(_0xbd4f2d,'EventManager','EventManager',{'event':_0x7bf0('0x43'),'message':Object['assign']({},_0x42503e,{'event':'opened'})},rpcAmiClient);}exports[_0x7bf0('0x44')]=sendInteractionOpenedEvent;