be294bba4286be0e59d96122c611318456a21dd0
[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 _0xfe5e=['SessionsClient','sessionPath','message','detectIntent','length','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','DIALOGFLOWV2_ISFALLBACKINTENT','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','providerResponse','fulfillmentText','all','dialogflow','moment','bluebird','../../../../config/logger','routing','../../rpc/mailMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','clone','body','Message','create','then','error','[%s][DIALOGFLOWV2]\x20%s','isNil','interaction','UserId','info','next','contact','format','out','channel','sms','phone','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','isEmpty','getMustacheRender','catch','stringify','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','replace'];(function(_0x39f4f5,_0x4c10cc){var _0x376276=function(_0x200540){while(--_0x200540){_0x39f4f5['push'](_0x39f4f5['shift']());}};_0x376276(++_0x4c10cc);}(_0xfe5e,0x176));var _0xefe5=function(_0x5f0089,_0x227e2c){_0x5f0089=_0x5f0089-0x0;var _0x193892=_0xfe5e[_0x5f0089];return _0x193892;};'use strict';var _=require('lodash');var dialogflow=require(_0xefe5('0x0'));var md5=require('md5');var moment=require(_0xefe5('0x1'));var Promise=require(_0xefe5('0x2'));var logger=require(_0xefe5('0x3'))(_0xefe5('0x4'));var utils=require('./utils');var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xefe5('0x5')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0xefe5('0x6')),'whatsappMessage':require(_0xefe5('0x7'))};function createMessage(_0x4254e7,_0x59a38d,_0xa3f10d,_0x3489ec){return new Promise(function(_0x1e62e0,_0x24e423){var _0x43e4ec=_[_0xefe5('0x8')](_0xa3f10d);_0x43e4ec[_0xefe5('0x9')]=_0x3489ec;return rpc[_0x59a38d+_0xefe5('0xa')][_0xefe5('0xb')](_0x43e4ec)[_0xefe5('0xc')](function(){logger['info']('[%s][DIALOGFLOWV2]\x20%s',_0x4254e7,_0x43e4ec[_0xefe5('0x9')]);_0x1e62e0();})['catch'](function(_0x5da94d){logger[_0xefe5('0xd')](_0xefe5('0xe'),_0x4254e7,JSON['stringify'](_0x5da94d));_0x24e423(_0x5da94d);});});}exports['consequence']=function(_0x5a581d,_0x50067c){return function(_0x4225dc){try{if(!_[_0xefe5('0xf')](this[_0xefe5('0x10')][_0xefe5('0x11')])){logger[_0xefe5('0x12')](_0xefe5('0xe'),_0x5a581d,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x4225dc[_0xefe5('0x13')]();}var _0x268e50={'ContactId':this[_0xefe5('0x14')]['id'],'sentAt':moment()[_0xefe5('0x15')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0xefe5('0x16')};if(this[_0xefe5('0x17')]===_0xefe5('0x18')||this[_0xefe5('0x17')]==='whatsapp'){_0x268e50[_0xefe5('0x19')]=this[_0xefe5('0x10')][_0xefe5('0x19')];}var _0x33e86f=this['channel'];if(_0x33e86f==='chat'){_0x268e50[_0xefe5('0x1a')]=this[_0xefe5('0x1b')]['id'];}else{_0x268e50[_[_0xefe5('0x1c')](_0x33e86f)+_0xefe5('0x1d')]=this['account']['id'];}_0x268e50[_[_0xefe5('0x1c')](_0x33e86f)+_0xefe5('0x1e')]=this[_0xefe5('0x10')]['id'];if(this[_0xefe5('0x10')]['created']){var _0x3ec09d=_0x50067c[0x4];if(!_[_0xefe5('0x1f')](_0x3ec09d)){_0x268e50[_0xefe5('0x9')]=utils[_0xefe5('0x20')](_0x3ec09d,this);return rpc[_0x33e86f+_0xefe5('0xa')][_0xefe5('0xb')](_0x268e50)[_0xefe5('0xc')](function(_0x2e7ecd){logger[_0xefe5('0x12')]('[%s][DIALOGFLOWV2]\x20%s',_0x5a581d,_0x268e50[_0xefe5('0x9')]);})[_0xefe5('0x21')](function(_0x37608d){logger['error'](_0xefe5('0xe'),_0x5a581d,JSON[_0xefe5('0x22')](_0x37608d));})[_0xefe5('0x23')](function(){logger[_0xefe5('0x12')](_0xefe5('0x24'),_0x5a581d);_0x4225dc['stop']();});}else{logger['info'](_0xefe5('0x25'),_0x5a581d);_0x4225dc[_0xefe5('0x26')]();}}else{var _0x15e41e=this;var _0x46fd47=_0x50067c[0x2][_0xefe5('0x27')](/\\n/g,'\x0a');var _0xc7e00f={'credentials':{'private_key':_0x46fd47,'client_email':_0x50067c[0x1]}};var _0x35823b=new dialogflow[(_0xefe5('0x28'))](_0xc7e00f);var _0x36a7b8=_0x35823b[_0xefe5('0x29')](_0x50067c[0x0],md5(_0x15e41e[_0xefe5('0x10')]['id']));var _0x40540b={'session':_0x36a7b8,'queryInput':{'text':{'text':_0x15e41e[_0xefe5('0x2a')][_0xefe5('0x9')],'languageCode':_0x50067c[0x3]||'en'}}};return _0x35823b[_0xefe5('0x2b')](_0x40540b)[_0xefe5('0xc')](function(_0x643a86){if(_0x643a86&&_0x643a86[_0xefe5('0x2c')]){_0x15e41e[_0xefe5('0x9')][_0xefe5('0x2d')]=_0x643a86;var _0x4f33f6=_0x643a86[0x0];var _0xfed7a2=_0x4f33f6[_0xefe5('0x2e')][_0xefe5('0x2f')]&&_0x4f33f6['queryResult'][_0xefe5('0x2f')]['fields']?_0x4f33f6['queryResult'][_0xefe5('0x2f')][_0xefe5('0x30')][_0xefe5('0x31')][_0xefe5('0x32')]:![];_0x15e41e['body'][_0xefe5('0x33')]=_0x4f33f6[_0xefe5('0x2e')]['action'];_0x15e41e[_0xefe5('0x9')][_0xefe5('0x34')]=_0x4f33f6[_0xefe5('0x2e')][_0xefe5('0x35')];_0x15e41e[_0xefe5('0x9')][_0xefe5('0x36')]=_0x4f33f6[_0xefe5('0x2e')][_0xefe5('0x2f')]&&_0x4f33f6['queryResult'][_0xefe5('0x2f')]['fields']?_0x4f33f6['queryResult'][_0xefe5('0x2f')]['fields']['end_conversation']['boolValue']:![];_0x15e41e[_0xefe5('0x9')][_0xefe5('0x37')]=_0x4f33f6[_0xefe5('0x2e')][_0xefe5('0x38')][_0xefe5('0x39')];_0x15e41e[_0xefe5('0x9')][_0xefe5('0x3a')]=_0x4f33f6[_0xefe5('0x2e')][_0xefe5('0x38')]['displayName'];_0x15e41e[_0xefe5('0x9')][_0xefe5('0x3b')]=_0x4f33f6['queryResult']['intent']['isFallback'];_0x15e41e[_0xefe5('0x9')]['DIALOGFLOWV2_LANGUAGECODE']=_0x4f33f6[_0xefe5('0x2e')][_0xefe5('0x3c')];_0x15e41e[_0xefe5('0x9')][_0xefe5('0x3d')]=_0x4f33f6['queryResult'][_0xefe5('0x3e')];_0x15e41e['body'][_0xefe5('0x3f')]=_0x4f33f6['queryResult'][_0xefe5('0x40')];_0x268e50[_0xefe5('0x41')]=_0xefe5('0x2d');_0x268e50[_0xefe5('0x42')]=JSON[_0xefe5('0x22')](_0x643a86);var _0x5ca758=[];for(var _0x13078e=0x0;_0x13078e<_0x643a86[_0xefe5('0x2c')];_0x13078e++){var _0x248eda=_0x643a86[_0x13078e];if(_0x248eda&&_0x248eda[_0xefe5('0x2e')]&&_0x248eda[_0xefe5('0x2e')]['fulfillmentText']){_0x5ca758['push'](createMessage(_0x5a581d,_0x33e86f,_0x268e50,_0x248eda['queryResult'][_0xefe5('0x43')]));}}return Promise[_0xefe5('0x44')](_0x5ca758)[_0xefe5('0xc')](function(){if(_0xfed7a2){_0x4225dc[_0xefe5('0x13')]();}else{_0x4225dc[_0xefe5('0x26')]();}})[_0xefe5('0x21')](function(_0x265e8e){logger[_0xefe5('0xd')](_0xefe5('0xe'),_0x5a581d,JSON[_0xefe5('0x22')](_0x265e8e));_0x4225dc[_0xefe5('0x13')]();});}})[_0xefe5('0x21')](function(_0x27f212){logger[_0xefe5('0xd')](_0xefe5('0xe'),_0x5a581d,_0x27f212['message']);_0x4225dc['next']();});}}catch(_0x587f69){logger[_0xefe5('0xd')](_0xefe5('0xe'),_0x5a581d,JSON['stringify'](_0x587f69));_0x4225dc[_0xefe5('0x26')]();}};};