Built motion from commit 4c281f94.|2.6.31
[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 _0xb6ce=['stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','message','detectIntent','length','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','boolValue','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','DIALOGFLOWV2_LANGUAGECODE','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','providerName','providerResponse','push','fulfillmentText','stack','lodash','dialogflow','moment','bluebird','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','clone','body','Message','create','info','[%s][DIALOGFLOWV2]\x20%s','error','stringify','consequence','interaction','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','channel','sms','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','then','catch','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!'];(function(_0x283fba,_0x5bd1ce){var _0xbe2968=function(_0x241f54){while(--_0x241f54){_0x283fba['push'](_0x283fba['shift']());}};_0xbe2968(++_0x5bd1ce);}(_0xb6ce,0x17c));var _0xeb6c=function(_0x4df84a,_0x19d74e){_0x4df84a=_0x4df84a-0x0;var _0x3c0e0a=_0xb6ce[_0x4df84a];return _0x3c0e0a;};'use strict';var _=require(_0xeb6c('0x0'));var dialogflow=require(_0xeb6c('0x1'));var md5=require('md5');var moment=require(_0xeb6c('0x2'));var Promise=require(_0xeb6c('0x3'));var logger=require('../../../../config/logger')(_0xeb6c('0x4'));var utils=require('./utils');var rpc={'chatMessage':require(_0xeb6c('0x5')),'openchannelMessage':require(_0xeb6c('0x6')),'mailMessage':require(_0xeb6c('0x7')),'smsMessage':require(_0xeb6c('0x8')),'faxMessage':require(_0xeb6c('0x9')),'whatsappMessage':require(_0xeb6c('0xa'))};function createMessage(_0x253c87,_0xd20136,_0x9a6983,_0x2724e1){return new Promise(function(_0x527602,_0x5e88ab){var _0x5e6ed6=_[_0xeb6c('0xb')](_0x9a6983);_0x5e6ed6[_0xeb6c('0xc')]=_0x2724e1;return rpc[_0xd20136+_0xeb6c('0xd')][_0xeb6c('0xe')](_0x5e6ed6)['then'](function(){logger[_0xeb6c('0xf')](_0xeb6c('0x10'),_0x253c87,_0x5e6ed6[_0xeb6c('0xc')]);_0x527602();})['catch'](function(_0x324027){logger[_0xeb6c('0x11')](_0xeb6c('0x10'),_0x253c87,JSON[_0xeb6c('0x12')](_0x324027));_0x5e88ab(_0x324027);});});}exports[_0xeb6c('0x13')]=function(_0x4015bd,_0x46d43b){return function(_0x2ba244){try{if(!_['isNil'](this[_0xeb6c('0x14')]['UserId'])){logger['info']('[%s][DIALOGFLOWV2]\x20%s',_0x4015bd,_0xeb6c('0x15'));return _0x2ba244[_0xeb6c('0x16')]();}var _0x51bb2e={'ContactId':this[_0xeb6c('0x17')]['id'],'sentAt':moment()[_0xeb6c('0x18')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':'out'};if(this[_0xeb6c('0x19')]===_0xeb6c('0x1a')||this[_0xeb6c('0x19')]==='whatsapp'){_0x51bb2e['phone']=this[_0xeb6c('0x14')][_0xeb6c('0x1b')];}var _0x5e8cb5=this[_0xeb6c('0x19')];if(_0x5e8cb5===_0xeb6c('0x1c')){_0x51bb2e[_0xeb6c('0x1d')]=this[_0xeb6c('0x1e')]['id'];}else{_0x51bb2e[_[_0xeb6c('0x1f')](_0x5e8cb5)+_0xeb6c('0x20')]=this[_0xeb6c('0x1e')]['id'];}_0x51bb2e[_[_0xeb6c('0x1f')](_0x5e8cb5)+_0xeb6c('0x21')]=this[_0xeb6c('0x14')]['id'];if(this['interaction'][_0xeb6c('0x22')]){var _0x421f5f=_0x46d43b[0x4];if(!_[_0xeb6c('0x23')](_0x421f5f)){_0x51bb2e[_0xeb6c('0xc')]=utils['getMustacheRender'](_0x421f5f,this);return rpc[_0x5e8cb5+'Message'][_0xeb6c('0xe')](_0x51bb2e)[_0xeb6c('0x24')](function(_0x13f68f){logger[_0xeb6c('0xf')](_0xeb6c('0x10'),_0x4015bd,_0x51bb2e[_0xeb6c('0xc')]);})[_0xeb6c('0x25')](function(_0x5a837e){logger[_0xeb6c('0x11')](_0xeb6c('0x10'),_0x4015bd,JSON['stringify'](_0x5a837e));})[_0xeb6c('0x26')](function(){logger[_0xeb6c('0xf')](_0xeb6c('0x27'),_0x4015bd);_0x2ba244[_0xeb6c('0x28')]();});}else{logger[_0xeb6c('0xf')](_0xeb6c('0x29'),_0x4015bd);_0x2ba244[_0xeb6c('0x28')]();}}else{var _0x246472=this;var _0x5268af=_0x46d43b[0x2]['replace'](/\\n/g,'\x0a');var _0x2efe37={'credentials':{'private_key':_0x5268af,'client_email':_0x46d43b[0x1]}};var _0x51a3b8=new dialogflow['SessionsClient'](_0x2efe37);var _0x2e968a=_0x51a3b8['sessionPath'](_0x46d43b[0x0],md5(_0x246472['interaction']['id']));var _0x17b6d8={'session':_0x2e968a,'queryInput':{'text':{'text':_0x246472[_0xeb6c('0x2a')][_0xeb6c('0xc')],'languageCode':_0x46d43b[0x3]||'en'}}};return _0x51a3b8[_0xeb6c('0x2b')](_0x17b6d8)[_0xeb6c('0x24')](function(_0x18de97){if(_0x18de97&&_0x18de97[_0xeb6c('0x2c')]){_0x246472[_0xeb6c('0xc')][_0xeb6c('0x2d')]=_0x18de97;var _0x313a30=_0x18de97[0x0];var _0x3011b9=_0x313a30[_0xeb6c('0x2e')]['diagnosticInfo']&&_0x313a30[_0xeb6c('0x2e')][_0xeb6c('0x2f')][_0xeb6c('0x30')]?_0x313a30['queryResult'][_0xeb6c('0x2f')][_0xeb6c('0x30')][_0xeb6c('0x31')][_0xeb6c('0x32')]:![];_0x246472[_0xeb6c('0xc')]['DIALOGFLOWV2_ACTION']=_0x313a30['queryResult'][_0xeb6c('0x33')];_0x246472[_0xeb6c('0xc')][_0xeb6c('0x34')]=_0x313a30[_0xeb6c('0x2e')][_0xeb6c('0x35')];_0x246472['body'][_0xeb6c('0x36')]=_0x313a30[_0xeb6c('0x2e')][_0xeb6c('0x2f')]&&_0x313a30[_0xeb6c('0x2e')][_0xeb6c('0x2f')]['fields']?_0x313a30[_0xeb6c('0x2e')][_0xeb6c('0x2f')]['fields'][_0xeb6c('0x31')]['boolValue']:![];_0x246472[_0xeb6c('0xc')][_0xeb6c('0x37')]=_0x313a30[_0xeb6c('0x2e')][_0xeb6c('0x38')][_0xeb6c('0x39')];_0x246472[_0xeb6c('0xc')][_0xeb6c('0x3a')]=_0x313a30[_0xeb6c('0x2e')]['intent'][_0xeb6c('0x3b')];_0x246472[_0xeb6c('0xc')][_0xeb6c('0x3c')]=_0x313a30[_0xeb6c('0x2e')][_0xeb6c('0x38')]['isFallback'];_0x246472[_0xeb6c('0xc')][_0xeb6c('0x3d')]=_0x313a30[_0xeb6c('0x2e')]['languageCode'];_0x246472['body'][_0xeb6c('0x3e')]=_0x313a30[_0xeb6c('0x2e')][_0xeb6c('0x3f')];_0x246472[_0xeb6c('0xc')][_0xeb6c('0x40')]=_0x313a30[_0xeb6c('0x2e')]['intentDetectionConfidence'];_0x51bb2e[_0xeb6c('0x41')]=_0xeb6c('0x2d');_0x51bb2e[_0xeb6c('0x42')]=JSON['stringify'](_0x18de97);var _0x3f3b8f=[];for(var _0x414cd0=0x0;_0x414cd0<_0x18de97['length'];_0x414cd0++){var _0x220f95=_0x18de97[_0x414cd0];if(_0x220f95&&_0x220f95[_0xeb6c('0x2e')]&&_0x220f95[_0xeb6c('0x2e')]['fulfillmentText']){_0x3f3b8f[_0xeb6c('0x43')](createMessage(_0x4015bd,_0x5e8cb5,_0x51bb2e,_0x220f95[_0xeb6c('0x2e')][_0xeb6c('0x44')]));}}return Promise['all'](_0x3f3b8f)[_0xeb6c('0x24')](function(){if(_0x3011b9){_0x2ba244['next']();}else{_0x2ba244[_0xeb6c('0x28')]();}})['catch'](function(_0x8bea61){logger[_0xeb6c('0x11')](_0xeb6c('0x10'),_0x4015bd,JSON[_0xeb6c('0x12')](_0x8bea61));_0x2ba244[_0xeb6c('0x16')]();});}})[_0xeb6c('0x25')](function(_0x1c3d3a){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x4015bd,_0x1c3d3a[_0xeb6c('0x2a')],_0x1c3d3a[_0xeb6c('0x45')]);_0x2ba244[_0xeb6c('0x16')]();});}}catch(_0x347495){logger[_0xeb6c('0x11')](_0xeb6c('0x10'),_0x4015bd,JSON[_0xeb6c('0x12')](_0x347495));_0x2ba244[_0xeb6c('0x28')]();}};};