Built motion from commit f94df7f0.|2.5.48
[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 _0x01e7=['catch','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','replace','SessionsClient','sessionPath','message','dialogflowV2','diagnosticInfo','queryResult','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','name','intent','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','queryText','intentDetectionConfidence','providerResponse','fulfillmentText','push','lodash','moment','routing','./utils','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','clone','Message','then','info','body','error','[%s][DIALOGFLOWV2]\x20%s','stringify','isNil','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','AccountId','upperFirst','interaction','created','getMustacheRender','create'];(function(_0xe66186,_0x1d97b8){var _0x3cc27d=function(_0xb3ea8e){while(--_0xb3ea8e){_0xe66186['push'](_0xe66186['shift']());}};_0x3cc27d(++_0x1d97b8);}(_0x01e7,0x134));var _0x701e=function(_0x978ec7,_0x522052){_0x978ec7=_0x978ec7-0x0;var _0xf38617=_0x01e7[_0x978ec7];return _0xf38617;};'use strict';var _=require(_0x701e('0x0'));var dialogflow=require('dialogflow');var md5=require('md5');var moment=require(_0x701e('0x1'));var Promise=require('bluebird');var logger=require('../../../../config/logger')(_0x701e('0x2'));var utils=require(_0x701e('0x3'));var rpc={'chatMessage':require(_0x701e('0x4')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x701e('0x5')),'smsMessage':require(_0x701e('0x6')),'faxMessage':require(_0x701e('0x7')),'whatsappMessage':require(_0x701e('0x8'))};function createMessage(_0x53abc3,_0x1f1a9d,_0xd80cc4,_0x4f4d6c){return new Promise(function(_0x43a118,_0x52168e){var _0x4c5660=_[_0x701e('0x9')](_0xd80cc4);_0x4c5660['body']=_0x4f4d6c;return rpc[_0x1f1a9d+_0x701e('0xa')]['create'](_0x4c5660)[_0x701e('0xb')](function(){logger[_0x701e('0xc')]('[%s][DIALOGFLOWV2]\x20%s',_0x53abc3,_0x4c5660[_0x701e('0xd')]);_0x43a118();})['catch'](function(_0x557b3a){logger[_0x701e('0xe')](_0x701e('0xf'),_0x53abc3,JSON[_0x701e('0x10')](_0x557b3a));_0x52168e(_0x557b3a);});});}exports['consequence']=function(_0x1a53be,_0x19049e){return function(_0x1e5f19){try{if(!_[_0x701e('0x11')](this['interaction'][_0x701e('0x12')])){logger[_0x701e('0xc')](_0x701e('0xf'),_0x1a53be,_0x701e('0x13'));return _0x1e5f19[_0x701e('0x14')]();}var _0xf494ae={'ContactId':this[_0x701e('0x15')]['id'],'sentAt':moment()[_0x701e('0x16')](_0x701e('0x17')),'direction':_0x701e('0x18')};if(this[_0x701e('0x19')]===_0x701e('0x1a')||this[_0x701e('0x19')]===_0x701e('0x1b')){_0xf494ae[_0x701e('0x1c')]=this['interaction'][_0x701e('0x1c')];}var _0x22ea07=this[_0x701e('0x19')];if(_0x22ea07===_0x701e('0x1d')){_0xf494ae['ChatWebsiteId']=this[_0x701e('0x1e')]['id'];}else{_0xf494ae[_['upperFirst'](_0x22ea07)+_0x701e('0x1f')]=this['account']['id'];}_0xf494ae[_[_0x701e('0x20')](_0x22ea07)+'InteractionId']=this['interaction']['id'];if(this[_0x701e('0x21')][_0x701e('0x22')]){var _0x26fd3f=_0x19049e[0x4];if(!_['isEmpty'](_0x26fd3f)){_0xf494ae[_0x701e('0xd')]=utils[_0x701e('0x23')](_0x26fd3f,this);return rpc[_0x22ea07+_0x701e('0xa')][_0x701e('0x24')](_0xf494ae)['then'](function(_0xaceef){logger[_0x701e('0xc')](_0x701e('0xf'),_0x1a53be,_0xf494ae['body']);})[_0x701e('0x25')](function(_0x454bca){logger['error'](_0x701e('0xf'),_0x1a53be,JSON[_0x701e('0x10')](_0x454bca));})[_0x701e('0x26')](function(){logger[_0x701e('0xc')](_0x701e('0x27'),_0x1a53be);_0x1e5f19[_0x701e('0x28')]();});}else{logger['info']('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x1a53be);_0x1e5f19['stop']();}}else{var _0x22e5ad=this;var _0x4596c2=_0x19049e[0x2][_0x701e('0x29')](/\\n/g,'\x0a');var _0x9a72cf={'credentials':{'private_key':_0x4596c2,'client_email':_0x19049e[0x1]}};var _0x429c71=new dialogflow[(_0x701e('0x2a'))](_0x9a72cf);var _0x48e697=_0x429c71[_0x701e('0x2b')](_0x19049e[0x0],md5(_0x22e5ad[_0x701e('0x21')]['id']));var _0x152570={'session':_0x48e697,'queryInput':{'text':{'text':_0x22e5ad[_0x701e('0x2c')]['body'],'languageCode':_0x19049e[0x3]||'en'}}};return _0x429c71['detectIntent'](_0x152570)[_0x701e('0xb')](function(_0x137b3e){if(_0x137b3e&&_0x137b3e['length']){_0x22e5ad[_0x701e('0xd')][_0x701e('0x2d')]=_0x137b3e;var _0xa67094=_0x137b3e[0x0];var _0x4d3f23=_0xa67094['queryResult'][_0x701e('0x2e')]&&_0xa67094[_0x701e('0x2f')][_0x701e('0x2e')][_0x701e('0x30')]?_0xa67094[_0x701e('0x2f')]['diagnosticInfo']['fields'][_0x701e('0x31')][_0x701e('0x32')]:![];_0x22e5ad[_0x701e('0xd')][_0x701e('0x33')]=_0xa67094[_0x701e('0x2f')][_0x701e('0x34')];_0x22e5ad['body'][_0x701e('0x35')]=_0xa67094['queryResult'][_0x701e('0x36')];_0x22e5ad[_0x701e('0xd')][_0x701e('0x37')]=_0xa67094[_0x701e('0x2f')][_0x701e('0x2e')]&&_0xa67094[_0x701e('0x2f')][_0x701e('0x2e')]['fields']?_0xa67094[_0x701e('0x2f')]['diagnosticInfo'][_0x701e('0x30')]['end_conversation'][_0x701e('0x32')]:![];_0x22e5ad[_0x701e('0xd')][_0x701e('0x38')]=_0xa67094[_0x701e('0x2f')]['intent'][_0x701e('0x39')];_0x22e5ad[_0x701e('0xd')]['DIALOGFLOWV2_INTENTDISPLAYNAME']=_0xa67094[_0x701e('0x2f')][_0x701e('0x3a')][_0x701e('0x3b')];_0x22e5ad[_0x701e('0xd')][_0x701e('0x3c')]=_0xa67094[_0x701e('0x2f')][_0x701e('0x3a')][_0x701e('0x3d')];_0x22e5ad[_0x701e('0xd')][_0x701e('0x3e')]=_0xa67094['queryResult'][_0x701e('0x3f')];_0x22e5ad['body']['DIALOGFLOWV2_QUERYTEXT']=_0xa67094[_0x701e('0x2f')][_0x701e('0x40')];_0x22e5ad[_0x701e('0xd')]['DIALOGFLOWV2_SCORE']=_0xa67094[_0x701e('0x2f')][_0x701e('0x41')];_0xf494ae['providerName']=_0x701e('0x2d');_0xf494ae[_0x701e('0x42')]=JSON[_0x701e('0x10')](_0x137b3e);var _0x14d62c=[];for(var _0x4a5506=0x0;_0x4a5506<_0x137b3e['length'];_0x4a5506++){var _0x5b6540=_0x137b3e[_0x4a5506];if(_0x5b6540&&_0x5b6540[_0x701e('0x2f')]&&_0x5b6540[_0x701e('0x2f')][_0x701e('0x43')]){_0x14d62c[_0x701e('0x44')](createMessage(_0x1a53be,_0x22ea07,_0xf494ae,_0x5b6540['queryResult'][_0x701e('0x43')]));}}return Promise['all'](_0x14d62c)[_0x701e('0xb')](function(){if(_0x4d3f23){_0x1e5f19['next']();}else{_0x1e5f19[_0x701e('0x28')]();}})[_0x701e('0x25')](function(_0x3b56a4){logger['error'](_0x701e('0xf'),_0x1a53be,JSON[_0x701e('0x10')](_0x3b56a4));_0x1e5f19[_0x701e('0x14')]();});}})[_0x701e('0x25')](function(_0x5060bd){logger[_0x701e('0xe')](_0x701e('0xf'),_0x1a53be,_0x5060bd['message']);_0x1e5f19[_0x701e('0x14')]();});}}catch(_0x109fdf){logger[_0x701e('0xe')]('[%s][DIALOGFLOWV2]\x20%s',_0x1a53be,JSON[_0x701e('0x10')](_0x109fdf));_0x1e5f19[_0x701e('0x28')]();}};};