570ffe143aab40c5196ecc63bc5308912db5cb09
[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 _0xe260=['diagnosticInfo','fields','end_conversation','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','intent','DIALOGFLOWV2_INTENTDISPLAYNAME','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','length','fulfillmentText','push','all','stop','lodash','dialogflow','md5','moment','bluebird','../../../../config/logger','routing','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','clone','Message','create','then','info','[%s][DIALOGFLOWV2]\x20%s','catch','error','consequence','isNil','interaction','next','format','YYYY-MM-DD\x20HH:mm:ss','out','sms','channel','whatsapp','phone','chat','account','upperFirst','AccountId','InteractionId','created','isEmpty','body','getMustacheRender','stringify','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','replace','SessionsClient','message','detectIntent','dialogflowV2','queryResult'];(function(_0x5b96f6,_0x26fe54){var _0xe67cd8=function(_0x585ce5){while(--_0x585ce5){_0x5b96f6['push'](_0x5b96f6['shift']());}};_0xe67cd8(++_0x26fe54);}(_0xe260,0x1c8));var _0x0e26=function(_0x2de999,_0xfabbb2){_0x2de999=_0x2de999-0x0;var _0xb87ae=_0xe260[_0x2de999];return _0xb87ae;};'use strict';var _=require(_0x0e26('0x0'));var dialogflow=require(_0x0e26('0x1'));var md5=require(_0x0e26('0x2'));var moment=require(_0x0e26('0x3'));var Promise=require(_0x0e26('0x4'));var logger=require(_0x0e26('0x5'))(_0x0e26('0x6'));var utils=require(_0x0e26('0x7'));var rpc={'chatMessage':require(_0x0e26('0x8')),'openchannelMessage':require(_0x0e26('0x9')),'mailMessage':require(_0x0e26('0xa')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x3ee085,_0x405910,_0x256da0,_0x361a99){return new Promise(function(_0x1b6ce0,_0x3f0021){var _0x457b04=_[_0x0e26('0xb')](_0x256da0);_0x457b04['body']=_0x361a99;return rpc[_0x405910+_0x0e26('0xc')][_0x0e26('0xd')](_0x457b04)[_0x0e26('0xe')](function(){logger[_0x0e26('0xf')](_0x0e26('0x10'),_0x3ee085,_0x457b04['body']);_0x1b6ce0();})[_0x0e26('0x11')](function(_0x1a2d8b){logger[_0x0e26('0x12')](_0x0e26('0x10'),_0x3ee085,JSON['stringify'](_0x1a2d8b));_0x3f0021(_0x1a2d8b);});});}exports[_0x0e26('0x13')]=function(_0x583286,_0x4e3eb0){return function(_0x46b614){try{if(!_[_0x0e26('0x14')](this[_0x0e26('0x15')]['UserId'])){logger[_0x0e26('0xf')](_0x0e26('0x10'),_0x583286,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x46b614[_0x0e26('0x16')]();}var _0x4ea5c4={'ContactId':this['contact']['id'],'sentAt':moment()[_0x0e26('0x17')](_0x0e26('0x18')),'direction':_0x0e26('0x19')};if(this['channel']===_0x0e26('0x1a')||this[_0x0e26('0x1b')]===_0x0e26('0x1c')){_0x4ea5c4[_0x0e26('0x1d')]=this[_0x0e26('0x15')]['phone'];}var _0x56cbd4=this[_0x0e26('0x1b')];if(_0x56cbd4===_0x0e26('0x1e')){_0x4ea5c4['ChatWebsiteId']=this[_0x0e26('0x1f')]['id'];}else{_0x4ea5c4[_[_0x0e26('0x20')](_0x56cbd4)+_0x0e26('0x21')]=this[_0x0e26('0x1f')]['id'];}_0x4ea5c4[_[_0x0e26('0x20')](_0x56cbd4)+_0x0e26('0x22')]=this[_0x0e26('0x15')]['id'];if(this[_0x0e26('0x15')][_0x0e26('0x23')]){var _0x34337f=_0x4e3eb0[0x4];if(!_[_0x0e26('0x24')](_0x34337f)){_0x4ea5c4[_0x0e26('0x25')]=utils[_0x0e26('0x26')](_0x34337f,this);return rpc[_0x56cbd4+_0x0e26('0xc')][_0x0e26('0xd')](_0x4ea5c4)[_0x0e26('0xe')](function(_0x10ed17){logger['info'](_0x0e26('0x10'),_0x583286,_0x4ea5c4[_0x0e26('0x25')]);})['catch'](function(_0x3e5af1){logger[_0x0e26('0x12')](_0x0e26('0x10'),_0x583286,JSON[_0x0e26('0x27')](_0x3e5af1));})[_0x0e26('0x28')](function(){logger[_0x0e26('0xf')](_0x0e26('0x29'),_0x583286);_0x46b614['stop']();});}else{logger[_0x0e26('0xf')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x583286);_0x46b614['stop']();}}else{var _0x292499=this;var _0x57e821=_0x4e3eb0[0x2][_0x0e26('0x2a')](/\\n/g,'\x0a');var _0x4b8b50={'credentials':{'private_key':_0x57e821,'client_email':_0x4e3eb0[0x1]}};var _0x3af757=new dialogflow[(_0x0e26('0x2b'))](_0x4b8b50);var _0x1f1001=_0x3af757['sessionPath'](_0x4e3eb0[0x0],md5(_0x292499[_0x0e26('0x15')]['id']));var _0x1c9115={'session':_0x1f1001,'queryInput':{'text':{'text':_0x292499[_0x0e26('0x2c')][_0x0e26('0x25')],'languageCode':_0x4e3eb0[0x3]||'en'}}};return _0x3af757[_0x0e26('0x2d')](_0x1c9115)['then'](function(_0x160ee8){if(_0x160ee8&&_0x160ee8['length']){_0x292499[_0x0e26('0x25')][_0x0e26('0x2e')]=_0x160ee8;var _0x830abc=_0x160ee8[0x0];var _0x48f50a=_0x830abc[_0x0e26('0x2f')][_0x0e26('0x30')]&&_0x830abc[_0x0e26('0x2f')][_0x0e26('0x30')][_0x0e26('0x31')]?_0x830abc[_0x0e26('0x2f')][_0x0e26('0x30')][_0x0e26('0x31')][_0x0e26('0x32')]['boolValue']:![];_0x292499['body']['DIALOGFLOWV2_ACTION']=_0x830abc[_0x0e26('0x2f')][_0x0e26('0x33')];_0x292499[_0x0e26('0x25')][_0x0e26('0x34')]=_0x830abc[_0x0e26('0x2f')][_0x0e26('0x35')];_0x292499[_0x0e26('0x25')][_0x0e26('0x36')]=_0x830abc[_0x0e26('0x2f')][_0x0e26('0x30')]&&_0x830abc[_0x0e26('0x2f')][_0x0e26('0x30')]['fields']?_0x830abc[_0x0e26('0x2f')][_0x0e26('0x30')][_0x0e26('0x31')][_0x0e26('0x32')]['boolValue']:![];_0x292499[_0x0e26('0x25')][_0x0e26('0x37')]=_0x830abc[_0x0e26('0x2f')][_0x0e26('0x38')]['name'];_0x292499[_0x0e26('0x25')][_0x0e26('0x39')]=_0x830abc[_0x0e26('0x2f')]['intent']['displayName'];_0x292499[_0x0e26('0x25')][_0x0e26('0x3a')]=_0x830abc['queryResult'][_0x0e26('0x38')][_0x0e26('0x3b')];_0x292499['body'][_0x0e26('0x3c')]=_0x830abc['queryResult'][_0x0e26('0x3d')];_0x292499['body'][_0x0e26('0x3e')]=_0x830abc[_0x0e26('0x2f')][_0x0e26('0x3f')];_0x292499[_0x0e26('0x25')][_0x0e26('0x40')]=_0x830abc['queryResult'][_0x0e26('0x41')];_0x4ea5c4[_0x0e26('0x42')]=_0x0e26('0x2e');_0x4ea5c4['providerResponse']=JSON['stringify'](_0x160ee8);var _0x522028=[];for(var _0x3773c4=0x0;_0x3773c4<_0x160ee8[_0x0e26('0x43')];_0x3773c4++){var _0x2baf75=_0x160ee8[_0x3773c4];if(_0x2baf75&&_0x2baf75['queryResult']&&_0x2baf75[_0x0e26('0x2f')][_0x0e26('0x44')]){_0x522028[_0x0e26('0x45')](createMessage(_0x583286,_0x56cbd4,_0x4ea5c4,_0x2baf75['queryResult']['fulfillmentText']));}}return Promise[_0x0e26('0x46')](_0x522028)[_0x0e26('0xe')](function(){if(_0x48f50a){_0x46b614[_0x0e26('0x16')]();}else{_0x46b614[_0x0e26('0x47')]();}})[_0x0e26('0x11')](function(_0x548cad){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x583286,JSON['stringify'](_0x548cad));_0x46b614[_0x0e26('0x16')]();});}})['catch'](function(_0x44b0e0){logger[_0x0e26('0x12')](_0x0e26('0x10'),_0x583286,_0x44b0e0[_0x0e26('0x2c')]);_0x46b614['next']();});}}catch(_0x8fbe2b){logger[_0x0e26('0x12')](_0x0e26('0x10'),_0x583286,JSON[_0x0e26('0x27')](_0x8fbe2b));_0x46b614[_0x0e26('0x47')]();}};};