Built motion from commit (unavailable).|2.5.22
[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 _0x3175=['DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','intent','name','displayName','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','providerName','dialogflowV2','providerResponse','stringify','fulfillmentText','push','all','next','dialogflow','md5','moment','routing','./utils','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','clone','body','Message','create','then','info','[%s][DIALOGFLOWV2]\x20%s','error','consequence','isNil','UserId','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','format','channel','sms','whatsapp','phone','chat','AccountId','InteractionId','interaction','created','isEmpty','getMustacheRender','catch','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','replace','SessionsClient','detectIntent','length','queryResult','diagnosticInfo','fields','boolValue','DIALOGFLOWV2_ACTION','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent'];(function(_0x5d6c3e,_0x409a3e){var _0x44ecb7=function(_0x936b6a){while(--_0x936b6a){_0x5d6c3e['push'](_0x5d6c3e['shift']());}};_0x44ecb7(++_0x409a3e);}(_0x3175,0xd8));var _0x5317=function(_0x13524d,_0x505b49){_0x13524d=_0x13524d-0x0;var _0x9918b4=_0x3175[_0x13524d];return _0x9918b4;};'use strict';var _=require('lodash');var dialogflow=require(_0x5317('0x0'));var md5=require(_0x5317('0x1'));var moment=require(_0x5317('0x2'));var Promise=require('bluebird');var logger=require('../../../../config/logger')(_0x5317('0x3'));var utils=require(_0x5317('0x4'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x5317('0x5')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x5317('0x6')),'faxMessage':require(_0x5317('0x7')),'whatsappMessage':require(_0x5317('0x8'))};function createMessage(_0x4c7b45,_0x58b0ed,_0x9f055a,_0x284741){return new Promise(function(_0x43c3ed,_0x23a981){var _0x2ce850=_[_0x5317('0x9')](_0x9f055a);_0x2ce850[_0x5317('0xa')]=_0x284741;return rpc[_0x58b0ed+_0x5317('0xb')][_0x5317('0xc')](_0x2ce850)[_0x5317('0xd')](function(){logger[_0x5317('0xe')](_0x5317('0xf'),_0x4c7b45,_0x2ce850['body']);_0x43c3ed();})['catch'](function(_0x52fbce){logger[_0x5317('0x10')](_0x5317('0xf'),_0x4c7b45,JSON['stringify'](_0x52fbce));_0x23a981(_0x52fbce);});});}exports[_0x5317('0x11')]=function(_0x431cb2,_0x1fc53a){return function(_0x23c6e0){try{if(!_[_0x5317('0x12')](this['interaction'][_0x5317('0x13')])){logger['info'](_0x5317('0xf'),_0x431cb2,_0x5317('0x14'));return _0x23c6e0['next']();}var _0xbc0b6={'ContactId':this['contact']['id'],'sentAt':moment()[_0x5317('0x15')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':'out'};if(this[_0x5317('0x16')]===_0x5317('0x17')||this[_0x5317('0x16')]===_0x5317('0x18')){_0xbc0b6[_0x5317('0x19')]=this['interaction'][_0x5317('0x19')];}var _0x29c39b=this[_0x5317('0x16')];if(_0x29c39b===_0x5317('0x1a')){_0xbc0b6['ChatWebsiteId']=this['account']['id'];}else{_0xbc0b6[_['upperFirst'](_0x29c39b)+_0x5317('0x1b')]=this['account']['id'];}_0xbc0b6[_['upperFirst'](_0x29c39b)+_0x5317('0x1c')]=this[_0x5317('0x1d')]['id'];if(this[_0x5317('0x1d')][_0x5317('0x1e')]){var _0x951377=_0x1fc53a[0x4];if(!_[_0x5317('0x1f')](_0x951377)){_0xbc0b6[_0x5317('0xa')]=utils[_0x5317('0x20')](_0x951377,this);return rpc[_0x29c39b+_0x5317('0xb')][_0x5317('0xc')](_0xbc0b6)[_0x5317('0xd')](function(_0x78f164){logger[_0x5317('0xe')](_0x5317('0xf'),_0x431cb2,_0xbc0b6['body']);})[_0x5317('0x21')](function(_0x2e9d14){logger['error'](_0x5317('0xf'),_0x431cb2,JSON['stringify'](_0x2e9d14));})[_0x5317('0x22')](function(){logger['info'](_0x5317('0x23'),_0x431cb2);_0x23c6e0[_0x5317('0x24')]();});}else{logger[_0x5317('0xe')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x431cb2);_0x23c6e0[_0x5317('0x24')]();}}else{var _0x2eb51e=this;var _0x57c576=_0x1fc53a[0x2][_0x5317('0x25')](/\\n/g,'\x0a');var _0xb1dbf5={'credentials':{'private_key':_0x57c576,'client_email':_0x1fc53a[0x1]}};var _0x12f37e=new dialogflow[(_0x5317('0x26'))](_0xb1dbf5);var _0x2a6300=_0x12f37e['sessionPath'](_0x1fc53a[0x0],md5(_0x2eb51e[_0x5317('0x1d')]['id']));var _0x2bf2b0={'session':_0x2a6300,'queryInput':{'text':{'text':_0x2eb51e['message'][_0x5317('0xa')],'languageCode':_0x1fc53a[0x3]||'en'}}};return _0x12f37e[_0x5317('0x27')](_0x2bf2b0)['then'](function(_0x44aefa){if(_0x44aefa&&_0x44aefa[_0x5317('0x28')]){_0x2eb51e[_0x5317('0xa')]['dialogflowV2']=_0x44aefa;var _0x47857e=_0x44aefa[0x0];var _0x331271=_0x47857e[_0x5317('0x29')][_0x5317('0x2a')]&&_0x47857e[_0x5317('0x29')][_0x5317('0x2a')][_0x5317('0x2b')]?_0x47857e[_0x5317('0x29')][_0x5317('0x2a')][_0x5317('0x2b')]['end_conversation'][_0x5317('0x2c')]:![];_0x2eb51e['body'][_0x5317('0x2d')]=_0x47857e[_0x5317('0x29')]['action'];_0x2eb51e[_0x5317('0xa')][_0x5317('0x2e')]=_0x47857e[_0x5317('0x29')][_0x5317('0x2f')];_0x2eb51e['body'][_0x5317('0x30')]=_0x47857e[_0x5317('0x29')]['diagnosticInfo']&&_0x47857e[_0x5317('0x29')][_0x5317('0x2a')]['fields']?_0x47857e['queryResult'][_0x5317('0x2a')][_0x5317('0x2b')]['end_conversation'][_0x5317('0x2c')]:![];_0x2eb51e['body'][_0x5317('0x31')]=_0x47857e[_0x5317('0x29')][_0x5317('0x32')][_0x5317('0x33')];_0x2eb51e[_0x5317('0xa')]['DIALOGFLOWV2_INTENTDISPLAYNAME']=_0x47857e[_0x5317('0x29')][_0x5317('0x32')][_0x5317('0x34')];_0x2eb51e[_0x5317('0xa')]['DIALOGFLOWV2_ISFALLBACKINTENT']=_0x47857e[_0x5317('0x29')][_0x5317('0x32')]['isFallback'];_0x2eb51e[_0x5317('0xa')][_0x5317('0x35')]=_0x47857e[_0x5317('0x29')][_0x5317('0x36')];_0x2eb51e[_0x5317('0xa')][_0x5317('0x37')]=_0x47857e[_0x5317('0x29')][_0x5317('0x38')];_0x2eb51e['body'][_0x5317('0x39')]=_0x47857e[_0x5317('0x29')]['intentDetectionConfidence'];_0xbc0b6[_0x5317('0x3a')]=_0x5317('0x3b');_0xbc0b6[_0x5317('0x3c')]=JSON[_0x5317('0x3d')](_0x44aefa);var _0x5df0d4=[];for(var _0x5e1833=0x0;_0x5e1833<_0x44aefa[_0x5317('0x28')];_0x5e1833++){var _0x2a696f=_0x44aefa[_0x5e1833];if(_0x2a696f&&_0x2a696f['queryResult']&&_0x2a696f[_0x5317('0x29')][_0x5317('0x3e')]){_0x5df0d4[_0x5317('0x3f')](createMessage(_0x431cb2,_0x29c39b,_0xbc0b6,_0x2a696f['queryResult'][_0x5317('0x3e')]));}}return Promise[_0x5317('0x40')](_0x5df0d4)[_0x5317('0xd')](function(){if(_0x331271){_0x23c6e0[_0x5317('0x41')]();}else{_0x23c6e0[_0x5317('0x24')]();}})[_0x5317('0x21')](function(_0x5a3246){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x431cb2,JSON[_0x5317('0x3d')](_0x5a3246));_0x23c6e0[_0x5317('0x41')]();});}})['catch'](function(_0x3f380b){logger['error'](_0x5317('0xf'),_0x431cb2,_0x3f380b['message']);_0x23c6e0[_0x5317('0x41')]();});}}catch(_0x986684){logger['error'](_0x5317('0xf'),_0x431cb2,JSON[_0x5317('0x3d')](_0x986684));_0x23c6e0[_0x5317('0x24')]();}};};