984e8a5b4dd0daf99347287143c8e52ff916580e
[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 _0x03fa=['whatsapp','phone','interaction','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','getMustacheRender','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','sessionPath','message','length','dialogflowV2','queryResult','diagnosticInfo','fields','boolValue','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','end_conversation','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','providerName','providerResponse','fulfillmentText','all','stack','lodash','md5','bluebird','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','body','Message','create','then','info','catch','error','[%s][DIALOGFLOWV2]\x20%s','stringify','consequence','isNil','UserId','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms'];(function(_0x2495a5,_0x26a90b){var _0xe69a2f=function(_0x1169d8){while(--_0x1169d8){_0x2495a5['push'](_0x2495a5['shift']());}};_0xe69a2f(++_0x26a90b);}(_0x03fa,0x70));var _0xa03f=function(_0x2a851d,_0x48e8d0){_0x2a851d=_0x2a851d-0x0;var _0x138c9f=_0x03fa[_0x2a851d];return _0x138c9f;};'use strict';var _=require(_0xa03f('0x0'));var dialogflow=require('dialogflow');var md5=require(_0xa03f('0x1'));var moment=require('moment');var Promise=require(_0xa03f('0x2'));var logger=require(_0xa03f('0x3'))(_0xa03f('0x4'));var utils=require('./utils');var rpc={'chatMessage':require(_0xa03f('0x5')),'openchannelMessage':require(_0xa03f('0x6')),'mailMessage':require(_0xa03f('0x7')),'smsMessage':require(_0xa03f('0x8')),'faxMessage':require(_0xa03f('0x9')),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x223794,_0x4bdf5b,_0x921917,_0x51b54a){return new Promise(function(_0x5a3fcd,_0x17eba4){var _0x2beacc=_['clone'](_0x921917);_0x2beacc[_0xa03f('0xa')]=_0x51b54a;return rpc[_0x4bdf5b+_0xa03f('0xb')][_0xa03f('0xc')](_0x2beacc)[_0xa03f('0xd')](function(){logger[_0xa03f('0xe')]('[%s][DIALOGFLOWV2]\x20%s',_0x223794,_0x2beacc['body']);_0x5a3fcd();})[_0xa03f('0xf')](function(_0x3eba0d){logger[_0xa03f('0x10')](_0xa03f('0x11'),_0x223794,JSON[_0xa03f('0x12')](_0x3eba0d));_0x17eba4(_0x3eba0d);});});}exports[_0xa03f('0x13')]=function(_0xdc715b,_0x20eccd){return function(_0x468dfb){try{if(!_[_0xa03f('0x14')](this['interaction'][_0xa03f('0x15')])){logger['info'](_0xa03f('0x11'),_0xdc715b,_0xa03f('0x16'));return _0x468dfb[_0xa03f('0x17')]();}var _0x324480={'ContactId':this[_0xa03f('0x18')]['id'],'sentAt':moment()[_0xa03f('0x19')](_0xa03f('0x1a')),'direction':_0xa03f('0x1b')};if(this[_0xa03f('0x1c')]===_0xa03f('0x1d')||this[_0xa03f('0x1c')]===_0xa03f('0x1e')){_0x324480[_0xa03f('0x1f')]=this[_0xa03f('0x20')][_0xa03f('0x1f')];}var _0x531f1e=this[_0xa03f('0x1c')];if(_0x531f1e===_0xa03f('0x21')){_0x324480[_0xa03f('0x22')]=this[_0xa03f('0x23')]['id'];}else{_0x324480[_[_0xa03f('0x24')](_0x531f1e)+_0xa03f('0x25')]=this['account']['id'];}_0x324480[_['upperFirst'](_0x531f1e)+_0xa03f('0x26')]=this['interaction']['id'];if(this[_0xa03f('0x20')][_0xa03f('0x27')]){var _0xfa829c=_0x20eccd[0x4];if(!_[_0xa03f('0x28')](_0xfa829c)){_0x324480['body']=utils[_0xa03f('0x29')](_0xfa829c,this);return rpc[_0x531f1e+_0xa03f('0xb')][_0xa03f('0xc')](_0x324480)[_0xa03f('0xd')](function(_0x284065){logger[_0xa03f('0xe')]('[%s][DIALOGFLOWV2]\x20%s',_0xdc715b,_0x324480['body']);})[_0xa03f('0xf')](function(_0x1f97bb){logger[_0xa03f('0x10')](_0xa03f('0x11'),_0xdc715b,JSON[_0xa03f('0x12')](_0x1f97bb));})['finally'](function(){logger[_0xa03f('0xe')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0xdc715b);_0x468dfb[_0xa03f('0x2a')]();});}else{logger[_0xa03f('0xe')](_0xa03f('0x2b'),_0xdc715b);_0x468dfb[_0xa03f('0x2a')]();}}else{var _0x1c2a8b=this;var _0x315d3c=_0x20eccd[0x2][_0xa03f('0x2c')](/\\n/g,'\x0a');var _0x5dc284={'credentials':{'private_key':_0x315d3c,'client_email':_0x20eccd[0x1]}};var _0x3b38ac=new dialogflow['SessionsClient'](_0x5dc284);var _0x4596d2=_0x3b38ac[_0xa03f('0x2d')](_0x20eccd[0x0],md5(_0x1c2a8b['interaction']['id']));var _0x122512={'session':_0x4596d2,'queryInput':{'text':{'text':_0x1c2a8b[_0xa03f('0x2e')]['body'],'languageCode':_0x20eccd[0x3]||'en'}}};return _0x3b38ac['detectIntent'](_0x122512)[_0xa03f('0xd')](function(_0x170f4d){if(_0x170f4d&&_0x170f4d[_0xa03f('0x2f')]){_0x1c2a8b[_0xa03f('0xa')][_0xa03f('0x30')]=_0x170f4d;var _0x1fdcbd=_0x170f4d[0x0];var _0x24e8cd=_0x1fdcbd[_0xa03f('0x31')][_0xa03f('0x32')]&&_0x1fdcbd['queryResult'][_0xa03f('0x32')][_0xa03f('0x33')]?_0x1fdcbd[_0xa03f('0x31')][_0xa03f('0x32')][_0xa03f('0x33')]['end_conversation'][_0xa03f('0x34')]:![];_0x1c2a8b[_0xa03f('0xa')]['DIALOGFLOWV2_ACTION']=_0x1fdcbd[_0xa03f('0x31')]['action'];_0x1c2a8b[_0xa03f('0xa')]['DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT']=_0x1fdcbd[_0xa03f('0x31')][_0xa03f('0x35')];_0x1c2a8b[_0xa03f('0xa')][_0xa03f('0x36')]=_0x1fdcbd['queryResult'][_0xa03f('0x32')]&&_0x1fdcbd['queryResult']['diagnosticInfo'][_0xa03f('0x33')]?_0x1fdcbd['queryResult'][_0xa03f('0x32')][_0xa03f('0x33')][_0xa03f('0x37')][_0xa03f('0x34')]:![];_0x1c2a8b['body']['DIALOGFLOWV2_INTENTNAME']=_0x1fdcbd[_0xa03f('0x31')][_0xa03f('0x38')][_0xa03f('0x39')];_0x1c2a8b[_0xa03f('0xa')][_0xa03f('0x3a')]=_0x1fdcbd[_0xa03f('0x31')][_0xa03f('0x38')][_0xa03f('0x3b')];_0x1c2a8b[_0xa03f('0xa')][_0xa03f('0x3c')]=_0x1fdcbd['queryResult']['intent'][_0xa03f('0x3d')];_0x1c2a8b[_0xa03f('0xa')]['DIALOGFLOWV2_LANGUAGECODE']=_0x1fdcbd[_0xa03f('0x31')][_0xa03f('0x3e')];_0x1c2a8b[_0xa03f('0xa')][_0xa03f('0x3f')]=_0x1fdcbd[_0xa03f('0x31')][_0xa03f('0x40')];_0x1c2a8b[_0xa03f('0xa')][_0xa03f('0x41')]=_0x1fdcbd[_0xa03f('0x31')]['intentDetectionConfidence'];_0x324480[_0xa03f('0x42')]=_0xa03f('0x30');_0x324480[_0xa03f('0x43')]=JSON[_0xa03f('0x12')](_0x170f4d);var _0x19e905=[];for(var _0x5db334=0x0;_0x5db334<_0x170f4d[_0xa03f('0x2f')];_0x5db334++){var _0x133b89=_0x170f4d[_0x5db334];if(_0x133b89&&_0x133b89[_0xa03f('0x31')]&&_0x133b89[_0xa03f('0x31')][_0xa03f('0x44')]){_0x19e905['push'](createMessage(_0xdc715b,_0x531f1e,_0x324480,_0x133b89[_0xa03f('0x31')][_0xa03f('0x44')]));}}return Promise[_0xa03f('0x45')](_0x19e905)[_0xa03f('0xd')](function(){if(_0x24e8cd){_0x468dfb[_0xa03f('0x17')]();}else{_0x468dfb['stop']();}})[_0xa03f('0xf')](function(_0x43d225){logger[_0xa03f('0x10')]('[%s][DIALOGFLOWV2]\x20%s',_0xdc715b,JSON[_0xa03f('0x12')](_0x43d225));_0x468dfb['next']();});}})['catch'](function(_0x25c901){logger['error'](_0xa03f('0x11'),_0xdc715b,_0x25c901[_0xa03f('0x2e')],_0x25c901[_0xa03f('0x46')]);_0x468dfb[_0xa03f('0x17')]();});}}catch(_0x50778d){logger[_0xa03f('0x10')]('[%s][DIALOGFLOWV2]\x20%s',_0xdc715b,JSON[_0xa03f('0x12')](_0x50778d));_0x468dfb[_0xa03f('0x2a')]();}};};