Built motion from commit 3c2ce842.|2.6.31
[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 _0x83fb=['isEmpty','getMustacheRender','info','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','replace','SessionsClient','sessionPath','message','detectIntent','length','queryResult','diagnosticInfo','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','dialogflowV2','fulfillmentText','push','all','stack','lodash','bluebird','../../../../config/logger','routing','./utils','../../rpc/mailMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','body','Message','create','then','[%s][DIALOGFLOWV2]\x20%s','catch','error','stringify','interaction','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','phone','chat','ChatWebsiteId','upperFirst'];(function(_0x459f12,_0x437064){var _0x4bb7a0=function(_0x2a1e40){while(--_0x2a1e40){_0x459f12['push'](_0x459f12['shift']());}};_0x4bb7a0(++_0x437064);}(_0x83fb,0xa7));var _0xb83f=function(_0x31ecb9,_0x2c6293){_0x31ecb9=_0x31ecb9-0x0;var _0x52250b=_0x83fb[_0x31ecb9];return _0x52250b;};'use strict';var _=require(_0xb83f('0x0'));var dialogflow=require('dialogflow');var md5=require('md5');var moment=require('moment');var Promise=require(_0xb83f('0x1'));var logger=require(_0xb83f('0x2'))(_0xb83f('0x3'));var utils=require(_0xb83f('0x4'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xb83f('0x5')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0xb83f('0x6')),'whatsappMessage':require(_0xb83f('0x7'))};function createMessage(_0x209734,_0x233a59,_0x3ab0fe,_0x1ca5c9){return new Promise(function(_0x389aa0,_0x5533a7){var _0x109297=_['clone'](_0x3ab0fe);_0x109297[_0xb83f('0x8')]=_0x1ca5c9;return rpc[_0x233a59+_0xb83f('0x9')][_0xb83f('0xa')](_0x109297)[_0xb83f('0xb')](function(){logger['info'](_0xb83f('0xc'),_0x209734,_0x109297[_0xb83f('0x8')]);_0x389aa0();})[_0xb83f('0xd')](function(_0x2efff2){logger[_0xb83f('0xe')](_0xb83f('0xc'),_0x209734,JSON[_0xb83f('0xf')](_0x2efff2));_0x5533a7(_0x2efff2);});});}exports['consequence']=function(_0x203474,_0x5d3e2f){return function(_0x44c5f6){try{if(!_['isNil'](this[_0xb83f('0x10')]['UserId'])){logger['info']('[%s][DIALOGFLOWV2]\x20%s',_0x203474,_0xb83f('0x11'));return _0x44c5f6[_0xb83f('0x12')]();}var _0x465f0b={'ContactId':this['contact']['id'],'sentAt':moment()[_0xb83f('0x13')](_0xb83f('0x14')),'direction':_0xb83f('0x15')};if(this[_0xb83f('0x16')]===_0xb83f('0x17')||this['channel']==='whatsapp'){_0x465f0b[_0xb83f('0x18')]=this[_0xb83f('0x10')][_0xb83f('0x18')];}var _0x4cb584=this[_0xb83f('0x16')];if(_0x4cb584===_0xb83f('0x19')){_0x465f0b[_0xb83f('0x1a')]=this['account']['id'];}else{_0x465f0b[_[_0xb83f('0x1b')](_0x4cb584)+'AccountId']=this['account']['id'];}_0x465f0b[_[_0xb83f('0x1b')](_0x4cb584)+'InteractionId']=this['interaction']['id'];if(this['interaction']['created']){var _0x3d69e1=_0x5d3e2f[0x4];if(!_[_0xb83f('0x1c')](_0x3d69e1)){_0x465f0b['body']=utils[_0xb83f('0x1d')](_0x3d69e1,this);return rpc[_0x4cb584+'Message'][_0xb83f('0xa')](_0x465f0b)['then'](function(_0x42cbeb){logger[_0xb83f('0x1e')](_0xb83f('0xc'),_0x203474,_0x465f0b['body']);})[_0xb83f('0xd')](function(_0x19f7b0){logger['error'](_0xb83f('0xc'),_0x203474,JSON[_0xb83f('0xf')](_0x19f7b0));})[_0xb83f('0x1f')](function(){logger[_0xb83f('0x1e')](_0xb83f('0x20'),_0x203474);_0x44c5f6['stop']();});}else{logger['info'](_0xb83f('0x21'),_0x203474);_0x44c5f6[_0xb83f('0x22')]();}}else{var _0x1d7759=this;var _0x59626b=_0x5d3e2f[0x2][_0xb83f('0x23')](/\\n/g,'\x0a');var _0x150d8b={'credentials':{'private_key':_0x59626b,'client_email':_0x5d3e2f[0x1]}};var _0x421e68=new dialogflow[(_0xb83f('0x24'))](_0x150d8b);var _0x256292=_0x421e68[_0xb83f('0x25')](_0x5d3e2f[0x0],md5(_0x1d7759[_0xb83f('0x10')]['id']));var _0x47ae11={'session':_0x256292,'queryInput':{'text':{'text':_0x1d7759[_0xb83f('0x26')][_0xb83f('0x8')],'languageCode':_0x5d3e2f[0x3]||'en'}}};return _0x421e68[_0xb83f('0x27')](_0x47ae11)['then'](function(_0x1b465e){if(_0x1b465e&&_0x1b465e[_0xb83f('0x28')]){_0x1d7759[_0xb83f('0x8')]['dialogflowV2']=_0x1b465e;var _0xc0b6f6=_0x1b465e[0x0];var _0x19be41=_0xc0b6f6[_0xb83f('0x29')][_0xb83f('0x2a')]&&_0xc0b6f6[_0xb83f('0x29')][_0xb83f('0x2a')][_0xb83f('0x2b')]?_0xc0b6f6['queryResult'][_0xb83f('0x2a')][_0xb83f('0x2b')][_0xb83f('0x2c')][_0xb83f('0x2d')]:![];_0x1d7759['body'][_0xb83f('0x2e')]=_0xc0b6f6[_0xb83f('0x29')][_0xb83f('0x2f')];_0x1d7759['body']['DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT']=_0xc0b6f6[_0xb83f('0x29')][_0xb83f('0x30')];_0x1d7759[_0xb83f('0x8')][_0xb83f('0x31')]=_0xc0b6f6[_0xb83f('0x29')]['diagnosticInfo']&&_0xc0b6f6[_0xb83f('0x29')]['diagnosticInfo'][_0xb83f('0x2b')]?_0xc0b6f6['queryResult']['diagnosticInfo'][_0xb83f('0x2b')][_0xb83f('0x2c')]['boolValue']:![];_0x1d7759[_0xb83f('0x8')][_0xb83f('0x32')]=_0xc0b6f6['queryResult'][_0xb83f('0x33')][_0xb83f('0x34')];_0x1d7759[_0xb83f('0x8')][_0xb83f('0x35')]=_0xc0b6f6[_0xb83f('0x29')]['intent'][_0xb83f('0x36')];_0x1d7759[_0xb83f('0x8')][_0xb83f('0x37')]=_0xc0b6f6[_0xb83f('0x29')][_0xb83f('0x33')][_0xb83f('0x38')];_0x1d7759[_0xb83f('0x8')]['DIALOGFLOWV2_LANGUAGECODE']=_0xc0b6f6[_0xb83f('0x29')]['languageCode'];_0x1d7759['body']['DIALOGFLOWV2_QUERYTEXT']=_0xc0b6f6[_0xb83f('0x29')]['queryText'];_0x1d7759[_0xb83f('0x8')][_0xb83f('0x39')]=_0xc0b6f6[_0xb83f('0x29')][_0xb83f('0x3a')];_0x465f0b[_0xb83f('0x3b')]=_0xb83f('0x3c');_0x465f0b['providerResponse']=JSON[_0xb83f('0xf')](_0x1b465e);var _0x1a5df5=[];for(var _0xf422af=0x0;_0xf422af<_0x1b465e['length'];_0xf422af++){var _0x3726a7=_0x1b465e[_0xf422af];if(_0x3726a7&&_0x3726a7[_0xb83f('0x29')]&&_0x3726a7[_0xb83f('0x29')][_0xb83f('0x3d')]){_0x1a5df5[_0xb83f('0x3e')](createMessage(_0x203474,_0x4cb584,_0x465f0b,_0x3726a7[_0xb83f('0x29')][_0xb83f('0x3d')]));}}return Promise[_0xb83f('0x3f')](_0x1a5df5)[_0xb83f('0xb')](function(){if(_0x19be41){_0x44c5f6[_0xb83f('0x12')]();}else{_0x44c5f6['stop']();}})[_0xb83f('0xd')](function(_0x56d1f7){logger['error'](_0xb83f('0xc'),_0x203474,JSON[_0xb83f('0xf')](_0x56d1f7));_0x44c5f6[_0xb83f('0x12')]();});}})[_0xb83f('0xd')](function(_0x2afe3c){logger[_0xb83f('0xe')](_0xb83f('0xc'),_0x203474,_0x2afe3c[_0xb83f('0x26')],_0x2afe3c[_0xb83f('0x40')]);_0x44c5f6[_0xb83f('0x12')]();});}}catch(_0x4d50c4){logger[_0xb83f('0xe')](_0xb83f('0xc'),_0x203474,JSON['stringify'](_0x4d50c4));_0x44c5f6[_0xb83f('0x22')]();}};};