e7791fe0e602c11e40f5e51619673e9350a0058e
[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 _0xb6aa=['then','[%s][DIALOGFLOWV2]\x20%s','catch','stringify','interaction','UserId','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','channel','sms','whatsapp','phone','chat','upperFirst','AccountId','account','InteractionId','created','isEmpty','getMustacheRender','error','stop','replace','detectIntent','length','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','providerResponse','fulfillmentText','push','next','bluebird','../../../../config/logger','routing','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','body','Message','create'];(function(_0x1fbcc9,_0x45f952){var _0x137e55=function(_0x4e049b){while(--_0x4e049b){_0x1fbcc9['push'](_0x1fbcc9['shift']());}};_0x137e55(++_0x45f952);}(_0xb6aa,0x134));var _0xab6a=function(_0x538ff3,_0x4e5420){_0x538ff3=_0x538ff3-0x0;var _0xe63f8a=_0xb6aa[_0x538ff3];return _0xe63f8a;};'use strict';var _=require('lodash');var dialogflow=require('dialogflow');var md5=require('md5');var moment=require('moment');var Promise=require(_0xab6a('0x0'));var logger=require(_0xab6a('0x1'))(_0xab6a('0x2'));var utils=require(_0xab6a('0x3'));var rpc={'chatMessage':require(_0xab6a('0x4')),'openchannelMessage':require(_0xab6a('0x5')),'mailMessage':require(_0xab6a('0x6')),'smsMessage':require(_0xab6a('0x7')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xab6a('0x8'))};function createMessage(_0x542344,_0x3777e3,_0x5af2eb,_0x502517){return new Promise(function(_0xf9d8e1,_0x7c02fb){var _0x1dceb4=_['clone'](_0x5af2eb);_0x1dceb4[_0xab6a('0x9')]=_0x502517;return rpc[_0x3777e3+_0xab6a('0xa')][_0xab6a('0xb')](_0x1dceb4)[_0xab6a('0xc')](function(){logger['info'](_0xab6a('0xd'),_0x542344,_0x1dceb4[_0xab6a('0x9')]);_0xf9d8e1();})[_0xab6a('0xe')](function(_0x3d47bc){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x542344,JSON[_0xab6a('0xf')](_0x3d47bc));_0x7c02fb(_0x3d47bc);});});}exports['consequence']=function(_0x45e4a4,_0x2b8845){return function(_0x1c3b75){try{if(!_['isNil'](this[_0xab6a('0x10')][_0xab6a('0x11')])){logger[_0xab6a('0x12')](_0xab6a('0xd'),_0x45e4a4,_0xab6a('0x13'));return _0x1c3b75['next']();}var _0xffdea3={'ContactId':this[_0xab6a('0x14')]['id'],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'direction':'out'};if(this[_0xab6a('0x15')]===_0xab6a('0x16')||this[_0xab6a('0x15')]===_0xab6a('0x17')){_0xffdea3[_0xab6a('0x18')]=this[_0xab6a('0x10')][_0xab6a('0x18')];}var _0x8d689d=this[_0xab6a('0x15')];if(_0x8d689d===_0xab6a('0x19')){_0xffdea3['ChatWebsiteId']=this['account']['id'];}else{_0xffdea3[_[_0xab6a('0x1a')](_0x8d689d)+_0xab6a('0x1b')]=this[_0xab6a('0x1c')]['id'];}_0xffdea3[_[_0xab6a('0x1a')](_0x8d689d)+_0xab6a('0x1d')]=this['interaction']['id'];if(this['interaction'][_0xab6a('0x1e')]){var _0x2c4cfd=_0x2b8845[0x4];if(!_[_0xab6a('0x1f')](_0x2c4cfd)){_0xffdea3[_0xab6a('0x9')]=utils[_0xab6a('0x20')](_0x2c4cfd,this);return rpc[_0x8d689d+_0xab6a('0xa')][_0xab6a('0xb')](_0xffdea3)[_0xab6a('0xc')](function(_0x187d86){logger[_0xab6a('0x12')](_0xab6a('0xd'),_0x45e4a4,_0xffdea3[_0xab6a('0x9')]);})[_0xab6a('0xe')](function(_0x49e4a3){logger[_0xab6a('0x21')](_0xab6a('0xd'),_0x45e4a4,JSON[_0xab6a('0xf')](_0x49e4a3));})['finally'](function(){logger['info']('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x45e4a4);_0x1c3b75[_0xab6a('0x22')]();});}else{logger[_0xab6a('0x12')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x45e4a4);_0x1c3b75[_0xab6a('0x22')]();}}else{var _0x4799d3=this;var _0x5b0b99=_0x2b8845[0x2][_0xab6a('0x23')](/\\n/g,'\x0a');var _0x5d45f6={'credentials':{'private_key':_0x5b0b99,'client_email':_0x2b8845[0x1]}};var _0x25122f=new dialogflow['SessionsClient'](_0x5d45f6);var _0x386cfc=_0x25122f['sessionPath'](_0x2b8845[0x0],md5(_0x4799d3[_0xab6a('0x10')]['id']));var _0x350674={'session':_0x386cfc,'queryInput':{'text':{'text':_0x4799d3['message'][_0xab6a('0x9')],'languageCode':_0x2b8845[0x3]||'en'}}};return _0x25122f[_0xab6a('0x24')](_0x350674)[_0xab6a('0xc')](function(_0x29505e){if(_0x29505e&&_0x29505e[_0xab6a('0x25')]){_0x4799d3['body'][_0xab6a('0x26')]=_0x29505e;var _0x449d81=_0x29505e[0x0];var _0x41077d=_0x449d81[_0xab6a('0x27')]['diagnosticInfo']&&_0x449d81[_0xab6a('0x27')][_0xab6a('0x28')][_0xab6a('0x29')]?_0x449d81[_0xab6a('0x27')][_0xab6a('0x28')][_0xab6a('0x29')][_0xab6a('0x2a')][_0xab6a('0x2b')]:![];_0x4799d3['body'][_0xab6a('0x2c')]=_0x449d81[_0xab6a('0x27')][_0xab6a('0x2d')];_0x4799d3['body']['DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT']=_0x449d81['queryResult'][_0xab6a('0x2e')];_0x4799d3[_0xab6a('0x9')][_0xab6a('0x2f')]=_0x449d81[_0xab6a('0x27')][_0xab6a('0x28')]&&_0x449d81[_0xab6a('0x27')][_0xab6a('0x28')]['fields']?_0x449d81[_0xab6a('0x27')][_0xab6a('0x28')][_0xab6a('0x29')][_0xab6a('0x2a')][_0xab6a('0x2b')]:![];_0x4799d3[_0xab6a('0x9')]['DIALOGFLOWV2_INTENTNAME']=_0x449d81[_0xab6a('0x27')][_0xab6a('0x30')][_0xab6a('0x31')];_0x4799d3[_0xab6a('0x9')][_0xab6a('0x32')]=_0x449d81['queryResult'][_0xab6a('0x30')][_0xab6a('0x33')];_0x4799d3['body'][_0xab6a('0x34')]=_0x449d81['queryResult'][_0xab6a('0x30')][_0xab6a('0x35')];_0x4799d3[_0xab6a('0x9')]['DIALOGFLOWV2_LANGUAGECODE']=_0x449d81[_0xab6a('0x27')][_0xab6a('0x36')];_0x4799d3['body'][_0xab6a('0x37')]=_0x449d81['queryResult'][_0xab6a('0x38')];_0x4799d3['body'][_0xab6a('0x39')]=_0x449d81[_0xab6a('0x27')][_0xab6a('0x3a')];_0xffdea3[_0xab6a('0x3b')]=_0xab6a('0x26');_0xffdea3[_0xab6a('0x3c')]=JSON[_0xab6a('0xf')](_0x29505e);var _0x32389e=[];for(var _0x34e4e7=0x0;_0x34e4e7<_0x29505e['length'];_0x34e4e7++){var _0x49c39f=_0x29505e[_0x34e4e7];if(_0x49c39f&&_0x49c39f[_0xab6a('0x27')]&&_0x49c39f[_0xab6a('0x27')][_0xab6a('0x3d')]){_0x32389e[_0xab6a('0x3e')](createMessage(_0x45e4a4,_0x8d689d,_0xffdea3,_0x49c39f[_0xab6a('0x27')][_0xab6a('0x3d')]));}}return Promise['all'](_0x32389e)[_0xab6a('0xc')](function(){if(_0x41077d){_0x1c3b75[_0xab6a('0x3f')]();}else{_0x1c3b75[_0xab6a('0x22')]();}})['catch'](function(_0x3bfc2c){logger['error'](_0xab6a('0xd'),_0x45e4a4,JSON[_0xab6a('0xf')](_0x3bfc2c));_0x1c3b75[_0xab6a('0x3f')]();});}})[_0xab6a('0xe')](function(_0x2c477b){logger[_0xab6a('0x21')](_0xab6a('0xd'),_0x45e4a4,_0x2c477b['message']);_0x1c3b75[_0xab6a('0x3f')]();});}}catch(_0x54d067){logger[_0xab6a('0x21')](_0xab6a('0xd'),_0x45e4a4,JSON['stringify'](_0x54d067));_0x1c3b75['stop']();}};};