Built motion from commit b5413ace.|2.6.9
[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 _0x2d81=['DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','providerResponse','fulfillmentText','push','all','then','next','lodash','dialogflow','bluebird','../../../../config/logger','routing','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','body','create','info','[%s][DIALOGFLOWV2]\x20%s','error','stringify','consequence','UserId','contact','out','sms','channel','whatsapp','phone','chat','account','AccountId','upperFirst','interaction','created','isEmpty','getMustacheRender','Message','catch','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','SessionsClient','sessionPath','message','detectIntent','length','dialogflowV2','diagnosticInfo','queryResult','fields','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','end_conversation','name','DIALOGFLOWV2_INTENTDISPLAYNAME','intent','DIALOGFLOWV2_ISFALLBACKINTENT'];(function(_0x4bd336,_0x31d665){var _0x3407db=function(_0x8653d7){while(--_0x8653d7){_0x4bd336['push'](_0x4bd336['shift']());}};_0x3407db(++_0x31d665);}(_0x2d81,0xeb));var _0x12d8=function(_0x4c19,_0x42d9e8){_0x4c19=_0x4c19-0x0;var _0x1ca06f=_0x2d81[_0x4c19];return _0x1ca06f;};'use strict';var _=require(_0x12d8('0x0'));var dialogflow=require(_0x12d8('0x1'));var md5=require('md5');var moment=require('moment');var Promise=require(_0x12d8('0x2'));var logger=require(_0x12d8('0x3'))(_0x12d8('0x4'));var utils=require(_0x12d8('0x5'));var rpc={'chatMessage':require(_0x12d8('0x6')),'openchannelMessage':require(_0x12d8('0x7')),'mailMessage':require(_0x12d8('0x8')),'smsMessage':require(_0x12d8('0x9')),'faxMessage':require(_0x12d8('0xa')),'whatsappMessage':require(_0x12d8('0xb'))};function createMessage(_0x3aec37,_0x60031,_0x5142a2,_0x340c56){return new Promise(function(_0x3a5642,_0x6cbf60){var _0x3a0dc3=_['clone'](_0x5142a2);_0x3a0dc3[_0x12d8('0xc')]=_0x340c56;return rpc[_0x60031+'Message'][_0x12d8('0xd')](_0x3a0dc3)['then'](function(){logger[_0x12d8('0xe')](_0x12d8('0xf'),_0x3aec37,_0x3a0dc3[_0x12d8('0xc')]);_0x3a5642();})['catch'](function(_0x49a102){logger[_0x12d8('0x10')](_0x12d8('0xf'),_0x3aec37,JSON[_0x12d8('0x11')](_0x49a102));_0x6cbf60(_0x49a102);});});}exports[_0x12d8('0x12')]=function(_0x1c93a1,_0xc75bc4){return function(_0x141c66){try{if(!_['isNil'](this['interaction'][_0x12d8('0x13')])){logger[_0x12d8('0xe')](_0x12d8('0xf'),_0x1c93a1,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x141c66['next']();}var _0xda3394={'ContactId':this[_0x12d8('0x14')]['id'],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x12d8('0x15')};if(this['channel']===_0x12d8('0x16')||this[_0x12d8('0x17')]===_0x12d8('0x18')){_0xda3394[_0x12d8('0x19')]=this['interaction']['phone'];}var _0x5b9a83=this[_0x12d8('0x17')];if(_0x5b9a83===_0x12d8('0x1a')){_0xda3394['ChatWebsiteId']=this[_0x12d8('0x1b')]['id'];}else{_0xda3394[_['upperFirst'](_0x5b9a83)+_0x12d8('0x1c')]=this[_0x12d8('0x1b')]['id'];}_0xda3394[_[_0x12d8('0x1d')](_0x5b9a83)+'InteractionId']=this[_0x12d8('0x1e')]['id'];if(this[_0x12d8('0x1e')][_0x12d8('0x1f')]){var _0x22d358=_0xc75bc4[0x4];if(!_[_0x12d8('0x20')](_0x22d358)){_0xda3394['body']=utils[_0x12d8('0x21')](_0x22d358,this);return rpc[_0x5b9a83+_0x12d8('0x22')][_0x12d8('0xd')](_0xda3394)['then'](function(_0x9cd00){logger['info'](_0x12d8('0xf'),_0x1c93a1,_0xda3394[_0x12d8('0xc')]);})[_0x12d8('0x23')](function(_0x4f0c43){logger['error'](_0x12d8('0xf'),_0x1c93a1,JSON[_0x12d8('0x11')](_0x4f0c43));})[_0x12d8('0x24')](function(){logger[_0x12d8('0xe')](_0x12d8('0x25'),_0x1c93a1);_0x141c66[_0x12d8('0x26')]();});}else{logger['info'](_0x12d8('0x27'),_0x1c93a1);_0x141c66[_0x12d8('0x26')]();}}else{var _0x4e7485=this;var _0x4578bf=_0xc75bc4[0x2][_0x12d8('0x28')](/\\n/g,'\x0a');var _0x81e1ed={'credentials':{'private_key':_0x4578bf,'client_email':_0xc75bc4[0x1]}};var _0xeed2f4=new dialogflow[(_0x12d8('0x29'))](_0x81e1ed);var _0x3cc4aa=_0xeed2f4[_0x12d8('0x2a')](_0xc75bc4[0x0],md5(_0x4e7485['interaction']['id']));var _0x29064c={'session':_0x3cc4aa,'queryInput':{'text':{'text':_0x4e7485[_0x12d8('0x2b')][_0x12d8('0xc')],'languageCode':_0xc75bc4[0x3]||'en'}}};return _0xeed2f4[_0x12d8('0x2c')](_0x29064c)['then'](function(_0x50cc1d){if(_0x50cc1d&&_0x50cc1d[_0x12d8('0x2d')]){_0x4e7485[_0x12d8('0xc')][_0x12d8('0x2e')]=_0x50cc1d;var _0x45b1bf=_0x50cc1d[0x0];var _0x5829ae=_0x45b1bf['queryResult'][_0x12d8('0x2f')]&&_0x45b1bf[_0x12d8('0x30')][_0x12d8('0x2f')][_0x12d8('0x31')]?_0x45b1bf[_0x12d8('0x30')]['diagnosticInfo']['fields']['end_conversation'][_0x12d8('0x32')]:![];_0x4e7485['body'][_0x12d8('0x33')]=_0x45b1bf['queryResult'][_0x12d8('0x34')];_0x4e7485[_0x12d8('0xc')][_0x12d8('0x35')]=_0x45b1bf['queryResult'][_0x12d8('0x36')];_0x4e7485[_0x12d8('0xc')][_0x12d8('0x37')]=_0x45b1bf[_0x12d8('0x30')][_0x12d8('0x2f')]&&_0x45b1bf['queryResult'][_0x12d8('0x2f')]['fields']?_0x45b1bf[_0x12d8('0x30')]['diagnosticInfo'][_0x12d8('0x31')][_0x12d8('0x38')]['boolValue']:![];_0x4e7485[_0x12d8('0xc')]['DIALOGFLOWV2_INTENTNAME']=_0x45b1bf[_0x12d8('0x30')]['intent'][_0x12d8('0x39')];_0x4e7485[_0x12d8('0xc')][_0x12d8('0x3a')]=_0x45b1bf[_0x12d8('0x30')][_0x12d8('0x3b')]['displayName'];_0x4e7485[_0x12d8('0xc')][_0x12d8('0x3c')]=_0x45b1bf[_0x12d8('0x30')][_0x12d8('0x3b')]['isFallback'];_0x4e7485[_0x12d8('0xc')][_0x12d8('0x3d')]=_0x45b1bf['queryResult'][_0x12d8('0x3e')];_0x4e7485[_0x12d8('0xc')][_0x12d8('0x3f')]=_0x45b1bf[_0x12d8('0x30')][_0x12d8('0x40')];_0x4e7485[_0x12d8('0xc')][_0x12d8('0x41')]=_0x45b1bf['queryResult'][_0x12d8('0x42')];_0xda3394[_0x12d8('0x43')]=_0x12d8('0x2e');_0xda3394[_0x12d8('0x44')]=JSON[_0x12d8('0x11')](_0x50cc1d);var _0x303c7a=[];for(var _0x43f4ad=0x0;_0x43f4ad<_0x50cc1d['length'];_0x43f4ad++){var _0x3d61ef=_0x50cc1d[_0x43f4ad];if(_0x3d61ef&&_0x3d61ef[_0x12d8('0x30')]&&_0x3d61ef['queryResult'][_0x12d8('0x45')]){_0x303c7a[_0x12d8('0x46')](createMessage(_0x1c93a1,_0x5b9a83,_0xda3394,_0x3d61ef[_0x12d8('0x30')][_0x12d8('0x45')]));}}return Promise[_0x12d8('0x47')](_0x303c7a)[_0x12d8('0x48')](function(){if(_0x5829ae){_0x141c66[_0x12d8('0x49')]();}else{_0x141c66[_0x12d8('0x26')]();}})['catch'](function(_0x276ede){logger[_0x12d8('0x10')](_0x12d8('0xf'),_0x1c93a1,JSON['stringify'](_0x276ede));_0x141c66[_0x12d8('0x49')]();});}})[_0x12d8('0x23')](function(_0x4ec68f){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x1c93a1,_0x4ec68f[_0x12d8('0x2b')]);_0x141c66[_0x12d8('0x49')]();});}}catch(_0x256a37){logger['error'](_0x12d8('0xf'),_0x1c93a1,JSON['stringify'](_0x256a37));_0x141c66[_0x12d8('0x26')]();}};};