08c5e9e2cf68d89c985a8d2af7f3c7181eb6e421
[motion2.git] / server / services / routing / server / applications / dialogflowV2.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 _0xf684=['isNil','interaction','UserId','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp','phone','chat','ChatWebsiteId','AccountId','InteractionId','created','isEmpty','finally','info','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','SessionsClient','sessionPath','message','detectIntent','length','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','boolValue','action','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','name','DIALOGFLOWV2_INTENTDISPLAYNAME','intent','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','providerResponse','push','fulfillmentText','all','next','lodash','md5','bluebird','./utils','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','body','create','then','[%s][DIALOGFLOWV2]\x20%s','catch','error','stringify','consequence'];(function(_0x5a780c,_0x46304a){var _0x5097e7=function(_0x489962){while(--_0x489962){_0x5a780c['push'](_0x5a780c['shift']());}};_0x5097e7(++_0x46304a);}(_0xf684,0x1d9));var _0x4f68=function(_0x1b1149,_0x5d31d2){_0x1b1149=_0x1b1149-0x0;var _0xa0b52c=_0xf684[_0x1b1149];return _0xa0b52c;};'use strict';var _=require(_0x4f68('0x0'));var dialogflow=require('dialogflow');var md5=require(_0x4f68('0x1'));var moment=require('moment');var Promise=require(_0x4f68('0x2'));var logger=require('../../../../config/logger')('routing');var utils=require(_0x4f68('0x3'));var rpc={'chatMessage':require(_0x4f68('0x4')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x4f68('0x5')),'smsMessage':require(_0x4f68('0x6')),'faxMessage':require(_0x4f68('0x7')),'whatsappMessage':require(_0x4f68('0x8'))};function createMessage(_0x2ffcbc,_0x439a57,_0x573572,_0x476cd3){return new Promise(function(_0x528f90,_0x475dcf){var _0x4f2d3d=_['clone'](_0x573572);_0x4f2d3d[_0x4f68('0x9')]=_0x476cd3;return rpc[_0x439a57+'Message'][_0x4f68('0xa')](_0x4f2d3d)[_0x4f68('0xb')](function(){logger['info'](_0x4f68('0xc'),_0x2ffcbc,_0x4f2d3d[_0x4f68('0x9')]);_0x528f90();})[_0x4f68('0xd')](function(_0x42f620){logger[_0x4f68('0xe')](_0x4f68('0xc'),_0x2ffcbc,JSON[_0x4f68('0xf')](_0x42f620));_0x475dcf(_0x42f620);});});}exports[_0x4f68('0x10')]=function(_0x492728,_0x47b658){return function(_0x486cd6){try{if(!_[_0x4f68('0x11')](this[_0x4f68('0x12')][_0x4f68('0x13')])){logger['info']('[%s][DIALOGFLOWV2]\x20%s',_0x492728,_0x4f68('0x14'));return _0x486cd6['next']();}var _0x3d7e1a={'ContactId':this[_0x4f68('0x15')]['id'],'sentAt':moment()[_0x4f68('0x16')](_0x4f68('0x17')),'direction':_0x4f68('0x18')};if(this[_0x4f68('0x19')]==='sms'||this['channel']===_0x4f68('0x1a')){_0x3d7e1a[_0x4f68('0x1b')]=this[_0x4f68('0x12')][_0x4f68('0x1b')];}var _0x2a513d=this[_0x4f68('0x19')];if(_0x2a513d===_0x4f68('0x1c')){_0x3d7e1a[_0x4f68('0x1d')]=this['account']['id'];}else{_0x3d7e1a[_['upperFirst'](_0x2a513d)+_0x4f68('0x1e')]=this['account']['id'];}_0x3d7e1a[_['upperFirst'](_0x2a513d)+_0x4f68('0x1f')]=this[_0x4f68('0x12')]['id'];if(this[_0x4f68('0x12')][_0x4f68('0x20')]){var _0x16c540=_0x47b658[0x4];if(!_[_0x4f68('0x21')](_0x16c540)){_0x3d7e1a[_0x4f68('0x9')]=utils['getMustacheRender'](_0x16c540,this);return rpc[_0x2a513d+'Message'][_0x4f68('0xa')](_0x3d7e1a)[_0x4f68('0xb')](function(_0xfaac70){logger['info'](_0x4f68('0xc'),_0x492728,_0x3d7e1a[_0x4f68('0x9')]);})['catch'](function(_0x48712a){logger[_0x4f68('0xe')](_0x4f68('0xc'),_0x492728,JSON[_0x4f68('0xf')](_0x48712a));})[_0x4f68('0x22')](function(){logger[_0x4f68('0x23')](_0x4f68('0x24'),_0x492728);_0x486cd6[_0x4f68('0x25')]();});}else{logger['info'](_0x4f68('0x26'),_0x492728);_0x486cd6[_0x4f68('0x25')]();}}else{var _0x15443f=this;var _0x1f2e75=_0x47b658[0x2]['replace'](/\\n/g,'\x0a');var _0x1a8e2a={'credentials':{'private_key':_0x1f2e75,'client_email':_0x47b658[0x1]}};var _0x5c54e0=new dialogflow[(_0x4f68('0x27'))](_0x1a8e2a);var _0x454f24=_0x5c54e0[_0x4f68('0x28')](_0x47b658[0x0],md5(_0x15443f[_0x4f68('0x12')]['id']));var _0x19630a={'session':_0x454f24,'queryInput':{'text':{'text':_0x15443f[_0x4f68('0x29')][_0x4f68('0x9')],'languageCode':_0x47b658[0x3]||'en'}}};return _0x5c54e0[_0x4f68('0x2a')](_0x19630a)[_0x4f68('0xb')](function(_0x464833){if(_0x464833&&_0x464833[_0x4f68('0x2b')]){_0x15443f[_0x4f68('0x9')][_0x4f68('0x2c')]=_0x464833;var _0x291dbd=_0x464833[0x0];var _0x102c0b=_0x291dbd[_0x4f68('0x2d')][_0x4f68('0x2e')]&&_0x291dbd[_0x4f68('0x2d')][_0x4f68('0x2e')][_0x4f68('0x2f')]?_0x291dbd[_0x4f68('0x2d')]['diagnosticInfo'][_0x4f68('0x2f')][_0x4f68('0x30')][_0x4f68('0x31')]:![];_0x15443f[_0x4f68('0x9')]['DIALOGFLOWV2_ACTION']=_0x291dbd[_0x4f68('0x2d')][_0x4f68('0x32')];_0x15443f[_0x4f68('0x9')]['DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT']=_0x291dbd[_0x4f68('0x2d')]['allRequiredParamsPresent'];_0x15443f[_0x4f68('0x9')][_0x4f68('0x33')]=_0x291dbd[_0x4f68('0x2d')][_0x4f68('0x2e')]&&_0x291dbd[_0x4f68('0x2d')]['diagnosticInfo'][_0x4f68('0x2f')]?_0x291dbd[_0x4f68('0x2d')][_0x4f68('0x2e')][_0x4f68('0x2f')]['end_conversation']['boolValue']:![];_0x15443f[_0x4f68('0x9')][_0x4f68('0x34')]=_0x291dbd[_0x4f68('0x2d')]['intent'][_0x4f68('0x35')];_0x15443f[_0x4f68('0x9')][_0x4f68('0x36')]=_0x291dbd[_0x4f68('0x2d')][_0x4f68('0x37')][_0x4f68('0x38')];_0x15443f[_0x4f68('0x9')][_0x4f68('0x39')]=_0x291dbd['queryResult']['intent'][_0x4f68('0x3a')];_0x15443f[_0x4f68('0x9')][_0x4f68('0x3b')]=_0x291dbd[_0x4f68('0x2d')]['languageCode'];_0x15443f[_0x4f68('0x9')][_0x4f68('0x3c')]=_0x291dbd[_0x4f68('0x2d')][_0x4f68('0x3d')];_0x15443f[_0x4f68('0x9')][_0x4f68('0x3e')]=_0x291dbd[_0x4f68('0x2d')][_0x4f68('0x3f')];_0x3d7e1a[_0x4f68('0x40')]=_0x4f68('0x2c');_0x3d7e1a[_0x4f68('0x41')]=JSON[_0x4f68('0xf')](_0x464833);var _0x58c48d=[];for(var _0x2ea873=0x0;_0x2ea873<_0x464833['length'];_0x2ea873++){var _0x378eff=_0x464833[_0x2ea873];if(_0x378eff&&_0x378eff[_0x4f68('0x2d')]&&_0x378eff[_0x4f68('0x2d')]['fulfillmentText']){_0x58c48d[_0x4f68('0x42')](createMessage(_0x492728,_0x2a513d,_0x3d7e1a,_0x378eff[_0x4f68('0x2d')][_0x4f68('0x43')]));}}return Promise[_0x4f68('0x44')](_0x58c48d)[_0x4f68('0xb')](function(){if(_0x102c0b){_0x486cd6[_0x4f68('0x45')]();}else{_0x486cd6[_0x4f68('0x25')]();}})[_0x4f68('0xd')](function(_0x5becf0){logger[_0x4f68('0xe')](_0x4f68('0xc'),_0x492728,JSON[_0x4f68('0xf')](_0x5becf0));_0x486cd6['next']();});}})[_0x4f68('0xd')](function(_0x2f39db){logger['error'](_0x4f68('0xc'),_0x492728,_0x2f39db['message']);_0x486cd6[_0x4f68('0x45')]();});}}catch(_0x31461e){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x492728,JSON[_0x4f68('0xf')](_0x31461e));_0x486cd6[_0x4f68('0x25')]();}};};