4be640b6a10a1eecb8564279b9e3e816a625b612
[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 _0x6208=['moment','../../../../config/logger','routing','./utils','../../rpc/mailMessage','../../rpc/faxMessage','body','Message','create','then','info','[%s][DIALOGFLOWV2]\x20%s','catch','error','consequence','isNil','interaction','UserId','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','chat','account','upperFirst','AccountId','InteractionId','created','isEmpty','getMustacheRender','stringify','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','replace','SessionsClient','sessionPath','message','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','intent','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','push','fulfillmentText','all','lodash','dialogflow'];(function(_0xbd08b4,_0x4790ed){var _0x314f1e=function(_0x161589){while(--_0x161589){_0xbd08b4['push'](_0xbd08b4['shift']());}};_0x314f1e(++_0x4790ed);}(_0x6208,0x15c));var _0x8620=function(_0x195c21,_0x332612){_0x195c21=_0x195c21-0x0;var _0x3576a8=_0x6208[_0x195c21];return _0x3576a8;};'use strict';var _=require(_0x8620('0x0'));var dialogflow=require(_0x8620('0x1'));var md5=require('md5');var moment=require(_0x8620('0x2'));var Promise=require('bluebird');var logger=require(_0x8620('0x3'))(_0x8620('0x4'));var utils=require(_0x8620('0x5'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x8620('0x6')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x8620('0x7')),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x40e4f2,_0x2d7d57,_0x573380,_0x5501af){return new Promise(function(_0x11fb62,_0x4ccda4){var _0x4db409=_['clone'](_0x573380);_0x4db409[_0x8620('0x8')]=_0x5501af;return rpc[_0x2d7d57+_0x8620('0x9')][_0x8620('0xa')](_0x4db409)[_0x8620('0xb')](function(){logger[_0x8620('0xc')](_0x8620('0xd'),_0x40e4f2,_0x4db409[_0x8620('0x8')]);_0x11fb62();})[_0x8620('0xe')](function(_0x106388){logger[_0x8620('0xf')](_0x8620('0xd'),_0x40e4f2,JSON['stringify'](_0x106388));_0x4ccda4(_0x106388);});});}exports[_0x8620('0x10')]=function(_0x40fb3b,_0x17c49b){return function(_0x533e0a){try{if(!_[_0x8620('0x11')](this[_0x8620('0x12')][_0x8620('0x13')])){logger[_0x8620('0xc')](_0x8620('0xd'),_0x40fb3b,_0x8620('0x14'));return _0x533e0a[_0x8620('0x15')]();}var _0x4718bb={'ContactId':this[_0x8620('0x16')]['id'],'sentAt':moment()[_0x8620('0x17')](_0x8620('0x18')),'direction':_0x8620('0x19')};if(this[_0x8620('0x1a')]===_0x8620('0x1b')||this[_0x8620('0x1a')]===_0x8620('0x1c')){_0x4718bb[_0x8620('0x1d')]=this[_0x8620('0x12')]['phone'];}var _0x210f32=this[_0x8620('0x1a')];if(_0x210f32===_0x8620('0x1e')){_0x4718bb['ChatWebsiteId']=this[_0x8620('0x1f')]['id'];}else{_0x4718bb[_[_0x8620('0x20')](_0x210f32)+_0x8620('0x21')]=this[_0x8620('0x1f')]['id'];}_0x4718bb[_['upperFirst'](_0x210f32)+_0x8620('0x22')]=this[_0x8620('0x12')]['id'];if(this[_0x8620('0x12')][_0x8620('0x23')]){var _0x5ddb33=_0x17c49b[0x4];if(!_[_0x8620('0x24')](_0x5ddb33)){_0x4718bb[_0x8620('0x8')]=utils[_0x8620('0x25')](_0x5ddb33,this);return rpc[_0x210f32+_0x8620('0x9')][_0x8620('0xa')](_0x4718bb)['then'](function(_0x42975b){logger[_0x8620('0xc')](_0x8620('0xd'),_0x40fb3b,_0x4718bb[_0x8620('0x8')]);})['catch'](function(_0x589bcd){logger[_0x8620('0xf')](_0x8620('0xd'),_0x40fb3b,JSON[_0x8620('0x26')](_0x589bcd));})[_0x8620('0x27')](function(){logger[_0x8620('0xc')](_0x8620('0x28'),_0x40fb3b);_0x533e0a['stop']();});}else{logger[_0x8620('0xc')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x40fb3b);_0x533e0a['stop']();}}else{var _0x11c82e=this;var _0x5809ec=_0x17c49b[0x2][_0x8620('0x29')](/\\n/g,'\x0a');var _0x2c5885={'credentials':{'private_key':_0x5809ec,'client_email':_0x17c49b[0x1]}};var _0x313a7a=new dialogflow[(_0x8620('0x2a'))](_0x2c5885);var _0x5d38fb=_0x313a7a[_0x8620('0x2b')](_0x17c49b[0x0],md5(_0x11c82e[_0x8620('0x12')]['id']));var _0x1fff4d={'session':_0x5d38fb,'queryInput':{'text':{'text':_0x11c82e[_0x8620('0x2c')]['body'],'languageCode':_0x17c49b[0x3]||'en'}}};return _0x313a7a['detectIntent'](_0x1fff4d)[_0x8620('0xb')](function(_0x376acc){if(_0x376acc&&_0x376acc['length']){_0x11c82e['body'][_0x8620('0x2d')]=_0x376acc;var _0x41f852=_0x376acc[0x0];var _0x3c6a8b=_0x41f852[_0x8620('0x2e')][_0x8620('0x2f')]&&_0x41f852[_0x8620('0x2e')]['diagnosticInfo'][_0x8620('0x30')]?_0x41f852[_0x8620('0x2e')]['diagnosticInfo'][_0x8620('0x30')][_0x8620('0x31')][_0x8620('0x32')]:![];_0x11c82e[_0x8620('0x8')][_0x8620('0x33')]=_0x41f852[_0x8620('0x2e')][_0x8620('0x34')];_0x11c82e[_0x8620('0x8')][_0x8620('0x35')]=_0x41f852[_0x8620('0x2e')][_0x8620('0x36')];_0x11c82e[_0x8620('0x8')][_0x8620('0x37')]=_0x41f852['queryResult'][_0x8620('0x2f')]&&_0x41f852[_0x8620('0x2e')][_0x8620('0x2f')]['fields']?_0x41f852['queryResult'][_0x8620('0x2f')]['fields'][_0x8620('0x31')]['boolValue']:![];_0x11c82e[_0x8620('0x8')][_0x8620('0x38')]=_0x41f852[_0x8620('0x2e')][_0x8620('0x39')]['name'];_0x11c82e[_0x8620('0x8')][_0x8620('0x3a')]=_0x41f852['queryResult'][_0x8620('0x39')][_0x8620('0x3b')];_0x11c82e[_0x8620('0x8')]['DIALOGFLOWV2_ISFALLBACKINTENT']=_0x41f852['queryResult']['intent'][_0x8620('0x3c')];_0x11c82e[_0x8620('0x8')][_0x8620('0x3d')]=_0x41f852[_0x8620('0x2e')][_0x8620('0x3e')];_0x11c82e['body']['DIALOGFLOWV2_QUERYTEXT']=_0x41f852[_0x8620('0x2e')][_0x8620('0x3f')];_0x11c82e[_0x8620('0x8')][_0x8620('0x40')]=_0x41f852[_0x8620('0x2e')][_0x8620('0x41')];_0x4718bb[_0x8620('0x42')]=_0x8620('0x2d');_0x4718bb['providerResponse']=JSON[_0x8620('0x26')](_0x376acc);var _0xd38eb9=[];for(var _0x31f158=0x0;_0x31f158<_0x376acc['length'];_0x31f158++){var _0x43c09b=_0x376acc[_0x31f158];if(_0x43c09b&&_0x43c09b[_0x8620('0x2e')]&&_0x43c09b[_0x8620('0x2e')]['fulfillmentText']){_0xd38eb9[_0x8620('0x43')](createMessage(_0x40fb3b,_0x210f32,_0x4718bb,_0x43c09b[_0x8620('0x2e')][_0x8620('0x44')]));}}return Promise[_0x8620('0x45')](_0xd38eb9)[_0x8620('0xb')](function(){if(_0x3c6a8b){_0x533e0a['next']();}else{_0x533e0a['stop']();}})[_0x8620('0xe')](function(_0x2936f1){logger[_0x8620('0xf')](_0x8620('0xd'),_0x40fb3b,JSON[_0x8620('0x26')](_0x2936f1));_0x533e0a[_0x8620('0x15')]();});}})[_0x8620('0xe')](function(_0x282233){logger[_0x8620('0xf')](_0x8620('0xd'),_0x40fb3b,_0x282233[_0x8620('0x2c')]);_0x533e0a[_0x8620('0x15')]();});}}catch(_0x183727){logger[_0x8620('0xf')](_0x8620('0xd'),_0x40fb3b,JSON['stringify'](_0x183727));_0x533e0a['stop']();}};};