b445bccd69e9dccebd1f860ee596bf18eb6aa883
[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 _0xec2a=['next','format','YYYY-MM-DD\x20HH:mm:ss','out','sms','channel','phone','ChatWebsiteId','upperFirst','account','interaction','created','isEmpty','getMustacheRender','stringify','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','message','detectIntent','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','DIALOGFLOWV2_ACTION','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','DIALOGFLOWV2_ENDCONVERSATION','boolValue','DIALOGFLOWV2_INTENTNAME','intent','name','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','intentDetectionConfidence','providerName','providerResponse','length','fulfillmentText','push','lodash','dialogflow','md5','moment','bluebird','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','clone','body','Message','create','then','info','catch','error','[%s][DIALOGFLOWV2]\x20%s','consequence','isNil','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.'];(function(_0x5e71fd,_0x3c8534){var _0x1c9d9f=function(_0x97714a){while(--_0x97714a){_0x5e71fd['push'](_0x5e71fd['shift']());}};_0x1c9d9f(++_0x3c8534);}(_0xec2a,0x147));var _0xaec2=function(_0xaf4af7,_0x6a8b6f){_0xaf4af7=_0xaf4af7-0x0;var _0x596009=_0xec2a[_0xaf4af7];return _0x596009;};'use strict';var _=require(_0xaec2('0x0'));var dialogflow=require(_0xaec2('0x1'));var md5=require(_0xaec2('0x2'));var moment=require(_0xaec2('0x3'));var Promise=require(_0xaec2('0x4'));var logger=require(_0xaec2('0x5'))(_0xaec2('0x6'));var utils=require('./utils');var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0xaec2('0x7')),'mailMessage':require(_0xaec2('0x8')),'smsMessage':require(_0xaec2('0x9')),'faxMessage':require(_0xaec2('0xa')),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x440f36,_0x31c427,_0x596ede,_0x473211){return new Promise(function(_0x3d6f43,_0x4ca70e){var _0x125ff3=_[_0xaec2('0xb')](_0x596ede);_0x125ff3[_0xaec2('0xc')]=_0x473211;return rpc[_0x31c427+_0xaec2('0xd')][_0xaec2('0xe')](_0x125ff3)[_0xaec2('0xf')](function(){logger[_0xaec2('0x10')]('[%s][DIALOGFLOWV2]\x20%s',_0x440f36,_0x125ff3[_0xaec2('0xc')]);_0x3d6f43();})[_0xaec2('0x11')](function(_0x50d1e3){logger[_0xaec2('0x12')](_0xaec2('0x13'),_0x440f36,JSON['stringify'](_0x50d1e3));_0x4ca70e(_0x50d1e3);});});}exports[_0xaec2('0x14')]=function(_0xa65f88,_0x24e729){return function(_0x5d5e07){try{if(!_[_0xaec2('0x15')](this['interaction']['UserId'])){logger['info'](_0xaec2('0x13'),_0xa65f88,_0xaec2('0x16'));return _0x5d5e07[_0xaec2('0x17')]();}var _0x1a73ca={'ContactId':this['contact']['id'],'sentAt':moment()[_0xaec2('0x18')](_0xaec2('0x19')),'direction':_0xaec2('0x1a')};if(this['channel']===_0xaec2('0x1b')||this[_0xaec2('0x1c')]==='whatsapp'){_0x1a73ca[_0xaec2('0x1d')]=this['interaction'][_0xaec2('0x1d')];}var _0x1e5970=this[_0xaec2('0x1c')];if(_0x1e5970==='chat'){_0x1a73ca[_0xaec2('0x1e')]=this['account']['id'];}else{_0x1a73ca[_[_0xaec2('0x1f')](_0x1e5970)+'AccountId']=this[_0xaec2('0x20')]['id'];}_0x1a73ca[_[_0xaec2('0x1f')](_0x1e5970)+'InteractionId']=this[_0xaec2('0x21')]['id'];if(this[_0xaec2('0x21')][_0xaec2('0x22')]){var _0x591e61=_0x24e729[0x4];if(!_[_0xaec2('0x23')](_0x591e61)){_0x1a73ca['body']=utils[_0xaec2('0x24')](_0x591e61,this);return rpc[_0x1e5970+_0xaec2('0xd')][_0xaec2('0xe')](_0x1a73ca)['then'](function(_0x17dbd4){logger[_0xaec2('0x10')](_0xaec2('0x13'),_0xa65f88,_0x1a73ca['body']);})['catch'](function(_0x28e9f2){logger[_0xaec2('0x12')]('[%s][DIALOGFLOWV2]\x20%s',_0xa65f88,JSON[_0xaec2('0x25')](_0x28e9f2));})[_0xaec2('0x26')](function(){logger[_0xaec2('0x10')](_0xaec2('0x27'),_0xa65f88);_0x5d5e07[_0xaec2('0x28')]();});}else{logger['info'](_0xaec2('0x29'),_0xa65f88);_0x5d5e07[_0xaec2('0x28')]();}}else{var _0x9dad1c=this;var _0x523ce2=_0x24e729[0x2][_0xaec2('0x2a')](/\\n/g,'\x0a');var _0x178e6e={'credentials':{'private_key':_0x523ce2,'client_email':_0x24e729[0x1]}};var _0x2179a3=new dialogflow[(_0xaec2('0x2b'))](_0x178e6e);var _0xf29ecd=_0x2179a3['sessionPath'](_0x24e729[0x0],md5(_0x9dad1c[_0xaec2('0x21')]['id']));var _0x29b192={'session':_0xf29ecd,'queryInput':{'text':{'text':_0x9dad1c[_0xaec2('0x2c')][_0xaec2('0xc')],'languageCode':_0x24e729[0x3]||'en'}}};return _0x2179a3[_0xaec2('0x2d')](_0x29b192)[_0xaec2('0xf')](function(_0x37d431){if(_0x37d431&&_0x37d431['length']){_0x9dad1c[_0xaec2('0xc')][_0xaec2('0x2e')]=_0x37d431;var _0x5d3c0b=_0x37d431[0x0];var _0x55b941=_0x5d3c0b[_0xaec2('0x2f')][_0xaec2('0x30')]&&_0x5d3c0b[_0xaec2('0x2f')][_0xaec2('0x30')][_0xaec2('0x31')]?_0x5d3c0b[_0xaec2('0x2f')][_0xaec2('0x30')][_0xaec2('0x31')][_0xaec2('0x32')]['boolValue']:![];_0x9dad1c['body'][_0xaec2('0x33')]=_0x5d3c0b[_0xaec2('0x2f')]['action'];_0x9dad1c[_0xaec2('0xc')][_0xaec2('0x34')]=_0x5d3c0b[_0xaec2('0x2f')]['allRequiredParamsPresent'];_0x9dad1c[_0xaec2('0xc')][_0xaec2('0x35')]=_0x5d3c0b[_0xaec2('0x2f')][_0xaec2('0x30')]&&_0x5d3c0b[_0xaec2('0x2f')]['diagnosticInfo'][_0xaec2('0x31')]?_0x5d3c0b[_0xaec2('0x2f')][_0xaec2('0x30')][_0xaec2('0x31')][_0xaec2('0x32')][_0xaec2('0x36')]:![];_0x9dad1c[_0xaec2('0xc')][_0xaec2('0x37')]=_0x5d3c0b[_0xaec2('0x2f')][_0xaec2('0x38')][_0xaec2('0x39')];_0x9dad1c[_0xaec2('0xc')]['DIALOGFLOWV2_INTENTDISPLAYNAME']=_0x5d3c0b[_0xaec2('0x2f')]['intent'][_0xaec2('0x3a')];_0x9dad1c['body'][_0xaec2('0x3b')]=_0x5d3c0b[_0xaec2('0x2f')]['intent'][_0xaec2('0x3c')];_0x9dad1c[_0xaec2('0xc')][_0xaec2('0x3d')]=_0x5d3c0b[_0xaec2('0x2f')][_0xaec2('0x3e')];_0x9dad1c[_0xaec2('0xc')][_0xaec2('0x3f')]=_0x5d3c0b[_0xaec2('0x2f')]['queryText'];_0x9dad1c[_0xaec2('0xc')]['DIALOGFLOWV2_SCORE']=_0x5d3c0b[_0xaec2('0x2f')][_0xaec2('0x40')];_0x1a73ca[_0xaec2('0x41')]=_0xaec2('0x2e');_0x1a73ca[_0xaec2('0x42')]=JSON[_0xaec2('0x25')](_0x37d431);var _0x1486a9=[];for(var _0x126e1e=0x0;_0x126e1e<_0x37d431[_0xaec2('0x43')];_0x126e1e++){var _0x4351e8=_0x37d431[_0x126e1e];if(_0x4351e8&&_0x4351e8[_0xaec2('0x2f')]&&_0x4351e8['queryResult'][_0xaec2('0x44')]){_0x1486a9[_0xaec2('0x45')](createMessage(_0xa65f88,_0x1e5970,_0x1a73ca,_0x4351e8['queryResult']['fulfillmentText']));}}return Promise['all'](_0x1486a9)['then'](function(){if(_0x55b941){_0x5d5e07[_0xaec2('0x17')]();}else{_0x5d5e07['stop']();}})[_0xaec2('0x11')](function(_0x12d4e2){logger[_0xaec2('0x12')]('[%s][DIALOGFLOWV2]\x20%s',_0xa65f88,JSON[_0xaec2('0x25')](_0x12d4e2));_0x5d5e07[_0xaec2('0x17')]();});}})[_0xaec2('0x11')](function(_0xa180f){logger[_0xaec2('0x12')](_0xaec2('0x13'),_0xa65f88,_0xa180f[_0xaec2('0x2c')]);_0x5d5e07['next']();});}}catch(_0x2be2a1){logger[_0xaec2('0x12')](_0xaec2('0x13'),_0xa65f88,JSON[_0xaec2('0x25')](_0x2be2a1));_0x5d5e07[_0xaec2('0x28')]();}};};