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 _0x8a39=['YYYY-MM-DD\x20HH:mm:ss','UserId','Message','findOne','Message\x20with\x20id\x20','\x20not\x20found','update','updateMessageById','read1stAt','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','query','sequelize','QueryTypes','findContactById','User','agent','name','email','internal','capitalize','fax','FaxInteractionId','mail','MailInteractionId','openchannel','OpenchannelInteractionId','sms','SmsInteractionId','whatsapp','WhatsappInteractionId','min','col','chat','assign','parse','interaction','formData','EventManager','acceptmessage','sendAmiAcceptEvent','acceptMessage','sendRoutingAcceptEvent','newinteraction','sendInteractionOpenedEvent','lodash','moment','../../mysqldb','../../errors/api','APINotFoundError','../../config/logger','api','client','request','then','%s,\x20%s,\x20%s','request\x20sent','debug','%s,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','params','body','get','read','format'];(function(_0x5b36fc,_0x15bc05){var _0x53265c=function(_0x20c7a7){while(--_0x20c7a7){_0x5b36fc['push'](_0x5b36fc['shift']());}};_0x53265c(++_0x15bc05);}(_0x8a39,0xfb));var _0x98a3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8a39[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x98a3('0x0'));var moment=require(_0x98a3('0x1'));var jayson=require('jayson/promise');var db=require(_0x98a3('0x2'))['db'];var APINotFoundError=require(_0x98a3('0x3'))[_0x98a3('0x4')];var logger=require(_0x98a3('0x5'))(_0x98a3('0x6'));var rpcAmiClient=jayson[_0x98a3('0x7')]['http']({'port':0x232a});var rpcRoutingClient=jayson[_0x98a3('0x7')]['http']({'port':0x232c});function respondWithRpcPromise(_0x45e95e,_0x1df121,_0x4595a9,_0x400ea4,_0x178065){return new Promise(function(_0x3ed0a0,_0x548367){return _0x178065[_0x98a3('0x8')](_0x1df121,_0x400ea4)[_0x98a3('0x9')](function(_0x534bcc){logger['info'](_0x98a3('0xa'),_0x45e95e,_0x4595a9,_0x98a3('0xb'));logger[_0x98a3('0xc')](_0x98a3('0xd'),_0x45e95e,_0x4595a9,'request\x20sent',JSON[_0x98a3('0xe')](_0x534bcc));if(_0x534bcc['error']){if(_0x534bcc[_0x98a3('0xf')][_0x98a3('0x10')]===0x1f4){logger[_0x98a3('0xf')](_0x98a3('0xa'),_0x45e95e,_0x4595a9,_0x534bcc['error'][_0x98a3('0x11')]);return _0x548367(_0x534bcc[_0x98a3('0xf')]['message']);}logger[_0x98a3('0xf')](_0x98a3('0xa'),_0x45e95e,_0x4595a9,_0x534bcc[_0x98a3('0xf')][_0x98a3('0x11')]);return _0x3ed0a0(_0x534bcc[_0x98a3('0xf')][_0x98a3('0x11')]);}else{logger['info'](_0x98a3('0xa'),_0x45e95e,_0x4595a9,_0x98a3('0xb'));_0x3ed0a0(_0x534bcc[_0x98a3('0x12')][_0x98a3('0x11')]);}})[_0x98a3('0x13')](function(_0x5a1728){logger[_0x98a3('0xf')](_0x98a3('0xa'),_0x45e95e,_0x4595a9,_0x5a1728);_0x548367(_0x5a1728);});});}function getAcceptParams(_0x34a2cc){var _0x2aa8c0=_0x34a2cc[_0x98a3('0x14')]['id'];var _0x404b63=_0x34a2cc[_0x98a3('0x15')];delete _0x404b63['id'];var _0x158d03=_0x34a2cc['user'][_0x98a3('0x16')]({'plain':!![]});_0x404b63[_0x98a3('0x17')]=!![];_0x404b63['readAt']=moment()[_0x98a3('0x18')](_0x98a3('0x19'));_0x404b63[_0x98a3('0x1a')]=_0x404b63[_0x98a3('0x1a')]||_0x158d03['id'];return{'messageId':_0x2aa8c0,'payload':_0x404b63,'user':_0x158d03};}exports['getAcceptParams']=getAcceptParams;function updateMessageById(_0x4cfd20,_0x5be825,_0x22e66a){var _0x51c6de=_['capitalize'](_0x4cfd20)+_0x98a3('0x1b');return db[_0x51c6de][_0x98a3('0x1c')]({'where':{'id':_0x5be825,'UserId':null}})[_0x98a3('0x9')](function(_0xf2de4c){if(!_0xf2de4c){throw new APINotFoundError(_0x98a3('0x1d')+_0x5be825+_0x98a3('0x1e'));}return _0xf2de4c[_0x98a3('0x1f')](_0x22e66a);})[_0x98a3('0x9')](function(_0x1ac7fe){return _0x1ac7fe[_0x98a3('0x16')]({'plain':!![]});});}exports[_0x98a3('0x20')]=updateMessageById;function updateInteractionById(_0x2d8b9e,_0x2b8bbc,_0x250368){var _0x3c0aad=_['capitalize'](_0x2d8b9e)+'Interaction';return db[_0x3c0aad][_0x98a3('0x1c')]({'where':{'id':_0x2b8bbc}})[_0x98a3('0x9')](function(_0x3ea924){if(!_0x3ea924){throw new APINotFoundError('Interaction\x20with\x20id\x20'+_0x2b8bbc+'\x20not\x20found');}var _0x1b0ffb=_0x3ea924[_0x98a3('0x21')]||moment()[_0x98a3('0x18')](_0x98a3('0x19'));return _0x3ea924['update']({'UserId':_0x250368,'read1stAt':_0x1b0ffb});})[_0x98a3('0x9')](function(_0x5cf4ac){return _0x5cf4ac[_0x98a3('0x16')]({'plain':!![]});});}exports['updateInteractionById']=updateInteractionById;function findContactById(_0x165757){var _0x56cc77=_0x98a3('0x22')+_0x165757;return db['sequelize'][_0x98a3('0x23')](_0x56cc77,{'type':db[_0x98a3('0x24')][_0x98a3('0x25')]['SELECT'],'raw':!![]})[_0x98a3('0x9')](function(_0x40e1ec){if(_0x40e1ec['length']===0x0){throw new APINotFoundError('Contact\x20with\x20id\x20'+_0x165757+_0x98a3('0x1e'));}return _0x40e1ec[0x0];});}exports[_0x98a3('0x26')]=findContactById;function findAgentById(_0x49f852){return db[_0x98a3('0x27')]['findOne']({'where':{'id':_0x49f852,'role':_0x98a3('0x28')},'attributes':['id',_0x98a3('0x29'),'fullname',_0x98a3('0x2a'),_0x98a3('0x2b')],'raw':!![]});}exports['findAgentById']=findAgentById;function isNewInteraction(_0xee4617,_0x4f2b51,_0x1fc7ff){var _0x54db01=_[_0x98a3('0x2c')](_0xee4617)+_0x98a3('0x1b');var _0x183567={};switch(_0xee4617){case'chat':_0x183567['ChatInteractionId']=_0x4f2b51;break;case _0x98a3('0x2d'):_0x183567[_0x98a3('0x2e')]=_0x4f2b51;break;case _0x98a3('0x2f'):_0x183567[_0x98a3('0x30')]=_0x4f2b51;break;case _0x98a3('0x31'):_0x183567[_0x98a3('0x32')]=_0x4f2b51;break;case _0x98a3('0x33'):_0x183567[_0x98a3('0x34')]=_0x4f2b51;break;case _0x98a3('0x35'):_0x183567[_0x98a3('0x36')]=_0x4f2b51;break;}return db[_0x54db01][_0x98a3('0x1c')]({'where':_0x183567,'attributes':[[db[_0x98a3('0x24')]['fn'](_0x98a3('0x37'),db[_0x98a3('0x24')][_0x98a3('0x38')]('id')),'id']],'raw':!![]})[_0x98a3('0x9')](function(_0x27908c){return _0x1fc7ff===_0x27908c['id'];});}exports['isNewInteraction']=isNewInteraction;function sendAmiAcceptEvent(_0x46e948,_0x5bb707){var _0x3d63a0=_[_0x98a3('0x2c')](_0x46e948)+_0x98a3('0x1b');var _0x267f74=_0x5bb707[_0x98a3('0x11')];if(_0x46e948===_0x98a3('0x39')){Object[_0x98a3('0x3a')](_0x267f74,JSON[_0x98a3('0x3b')](_0x5bb707[_0x98a3('0x3c')][_0x98a3('0x3d')]));}return respondWithRpcPromise(_0x3d63a0,_0x98a3('0x3e'),'EventManager',{'event':_0x98a3('0x3f'),'message':_0x267f74},rpcAmiClient);}exports[_0x98a3('0x40')]=sendAmiAcceptEvent;function sendRoutingAcceptEvent(_0x5b5f84,_0x3d1b75){var _0x39c180=_[_0x98a3('0x2c')](_0x5b5f84)+_0x98a3('0x1b');return respondWithRpcPromise(_0x39c180,'AcceptMessage',_0x98a3('0x41'),_0x3d1b75,rpcRoutingClient);}exports[_0x98a3('0x42')]=sendRoutingAcceptEvent;function sendInteractionOpenedEvent(_0xe79965,_0x3a9900){var _0x50a065=_[_0x98a3('0x2c')](_0xe79965)+'Message';return respondWithRpcPromise(_0x50a065,'EventManager',_0x98a3('0x3e'),{'event':_0x98a3('0x43'),'message':Object[_0x98a3('0x3a')]({},_0x3a9900,{'event':'opened'})},rpcAmiClient);}exports[_0x98a3('0x44')]=sendInteractionOpenedEvent;