5898d4285b6533705f489e8ce769fb2fb9365f49
[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 _0xeb16=['../../../../config/logger','routing','./utils','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','clone','Message','create','then','info','[%s][DIALOGFLOWV2]\x20%s','catch','error','consequence','isNil','UserId','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','YYYY-MM-DD\x20HH:mm:ss','channel','sms','interaction','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','getMustacheRender','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','SessionsClient','sessionPath','length','body','dialogflowV2','diagnosticInfo','queryResult','fields','end_conversation','DIALOGFLOWV2_ACTION','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','DIALOGFLOWV2_ENDCONVERSATION','boolValue','DIALOGFLOWV2_INTENTNAME','intent','name','displayName','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerResponse','fulfillmentText','push','message','stack','md5','bluebird'];(function(_0x1667df,_0x266940){var _0x341abf=function(_0x123c3f){while(--_0x123c3f){_0x1667df['push'](_0x1667df['shift']());}};_0x341abf(++_0x266940);}(_0xeb16,0x11e));var _0x6eb1=function(_0x2c9703,_0x55b2c3){_0x2c9703=_0x2c9703-0x0;var _0x41ff7c=_0xeb16[_0x2c9703];return _0x41ff7c;};'use strict';var _=require('lodash');var dialogflow=require('dialogflow');var md5=require(_0x6eb1('0x0'));var moment=require('moment');var Promise=require(_0x6eb1('0x1'));var logger=require(_0x6eb1('0x2'))(_0x6eb1('0x3'));var utils=require(_0x6eb1('0x4'));var rpc={'chatMessage':require(_0x6eb1('0x5')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x6eb1('0x6')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x6eb1('0x7')),'whatsappMessage':require(_0x6eb1('0x8'))};function createMessage(_0x401d94,_0x154872,_0x4ec4f7,_0x30ef01){return new Promise(function(_0x128ec5,_0x134513){var _0x413210=_[_0x6eb1('0x9')](_0x4ec4f7);_0x413210['body']=_0x30ef01;return rpc[_0x154872+_0x6eb1('0xa')][_0x6eb1('0xb')](_0x413210)[_0x6eb1('0xc')](function(){logger[_0x6eb1('0xd')](_0x6eb1('0xe'),_0x401d94,_0x413210['body']);_0x128ec5();})[_0x6eb1('0xf')](function(_0x184e7d){logger[_0x6eb1('0x10')](_0x6eb1('0xe'),_0x401d94,JSON['stringify'](_0x184e7d));_0x134513(_0x184e7d);});});}exports[_0x6eb1('0x11')]=function(_0x14ea99,_0x33726a){return function(_0x1d503d){try{if(!_[_0x6eb1('0x12')](this['interaction'][_0x6eb1('0x13')])){logger[_0x6eb1('0xd')](_0x6eb1('0xe'),_0x14ea99,_0x6eb1('0x14'));return _0x1d503d[_0x6eb1('0x15')]();}var _0x3f4e2d={'ContactId':this[_0x6eb1('0x16')]['id'],'sentAt':moment()['format'](_0x6eb1('0x17')),'direction':'out'};if(this[_0x6eb1('0x18')]===_0x6eb1('0x19')||this[_0x6eb1('0x18')]==='whatsapp'){_0x3f4e2d['phone']=this[_0x6eb1('0x1a')][_0x6eb1('0x1b')];}var _0x28f1a8=this[_0x6eb1('0x18')];if(_0x28f1a8===_0x6eb1('0x1c')){_0x3f4e2d[_0x6eb1('0x1d')]=this[_0x6eb1('0x1e')]['id'];}else{_0x3f4e2d[_[_0x6eb1('0x1f')](_0x28f1a8)+_0x6eb1('0x20')]=this['account']['id'];}_0x3f4e2d[_[_0x6eb1('0x1f')](_0x28f1a8)+_0x6eb1('0x21')]=this[_0x6eb1('0x1a')]['id'];if(this[_0x6eb1('0x1a')][_0x6eb1('0x22')]){var _0x1d79b5=_0x33726a[0x4];if(!_[_0x6eb1('0x23')](_0x1d79b5)){_0x3f4e2d['body']=utils[_0x6eb1('0x24')](_0x1d79b5,this);return rpc[_0x28f1a8+_0x6eb1('0xa')]['create'](_0x3f4e2d)['then'](function(_0x50ba52){logger[_0x6eb1('0xd')](_0x6eb1('0xe'),_0x14ea99,_0x3f4e2d['body']);})[_0x6eb1('0xf')](function(_0x357a6e){logger[_0x6eb1('0x10')]('[%s][DIALOGFLOWV2]\x20%s',_0x14ea99,JSON[_0x6eb1('0x25')](_0x357a6e));})[_0x6eb1('0x26')](function(){logger[_0x6eb1('0xd')](_0x6eb1('0x27'),_0x14ea99);_0x1d503d['stop']();});}else{logger['info'](_0x6eb1('0x28'),_0x14ea99);_0x1d503d[_0x6eb1('0x29')]();}}else{var _0x233e26=this;var _0x423686=_0x33726a[0x2][_0x6eb1('0x2a')](/\\n/g,'\x0a');var _0x8df887={'credentials':{'private_key':_0x423686,'client_email':_0x33726a[0x1]}};var _0x18b7d3=new dialogflow[(_0x6eb1('0x2b'))](_0x8df887);var _0x3ed2d1=_0x18b7d3[_0x6eb1('0x2c')](_0x33726a[0x0],md5(_0x233e26[_0x6eb1('0x1a')]['id']));var _0x4e0e05={'session':_0x3ed2d1,'queryInput':{'text':{'text':_0x233e26['message']['body'],'languageCode':_0x33726a[0x3]||'en'}}};return _0x18b7d3['detectIntent'](_0x4e0e05)[_0x6eb1('0xc')](function(_0x2d650d){if(_0x2d650d&&_0x2d650d[_0x6eb1('0x2d')]){_0x233e26[_0x6eb1('0x2e')][_0x6eb1('0x2f')]=_0x2d650d;var _0x5931e5=_0x2d650d[0x0];var _0x2e15e5=_0x5931e5['queryResult'][_0x6eb1('0x30')]&&_0x5931e5[_0x6eb1('0x31')][_0x6eb1('0x30')]['fields']?_0x5931e5[_0x6eb1('0x31')]['diagnosticInfo'][_0x6eb1('0x32')][_0x6eb1('0x33')]['boolValue']:![];_0x233e26['body'][_0x6eb1('0x34')]=_0x5931e5[_0x6eb1('0x31')]['action'];_0x233e26[_0x6eb1('0x2e')][_0x6eb1('0x35')]=_0x5931e5[_0x6eb1('0x31')]['allRequiredParamsPresent'];_0x233e26[_0x6eb1('0x2e')][_0x6eb1('0x36')]=_0x5931e5['queryResult'][_0x6eb1('0x30')]&&_0x5931e5[_0x6eb1('0x31')]['diagnosticInfo'][_0x6eb1('0x32')]?_0x5931e5[_0x6eb1('0x31')][_0x6eb1('0x30')][_0x6eb1('0x32')][_0x6eb1('0x33')][_0x6eb1('0x37')]:![];_0x233e26[_0x6eb1('0x2e')][_0x6eb1('0x38')]=_0x5931e5[_0x6eb1('0x31')][_0x6eb1('0x39')][_0x6eb1('0x3a')];_0x233e26['body']['DIALOGFLOWV2_INTENTDISPLAYNAME']=_0x5931e5[_0x6eb1('0x31')]['intent'][_0x6eb1('0x3b')];_0x233e26['body']['DIALOGFLOWV2_ISFALLBACKINTENT']=_0x5931e5['queryResult']['intent'][_0x6eb1('0x3c')];_0x233e26['body'][_0x6eb1('0x3d')]=_0x5931e5[_0x6eb1('0x31')][_0x6eb1('0x3e')];_0x233e26[_0x6eb1('0x2e')][_0x6eb1('0x3f')]=_0x5931e5['queryResult'][_0x6eb1('0x40')];_0x233e26[_0x6eb1('0x2e')][_0x6eb1('0x41')]=_0x5931e5[_0x6eb1('0x31')][_0x6eb1('0x42')];_0x3f4e2d['providerName']='dialogflowV2';_0x3f4e2d[_0x6eb1('0x43')]=JSON['stringify'](_0x2d650d);var _0x5733a7=[];for(var _0x57bc51=0x0;_0x57bc51<_0x2d650d[_0x6eb1('0x2d')];_0x57bc51++){var _0xb0830b=_0x2d650d[_0x57bc51];if(_0xb0830b&&_0xb0830b['queryResult']&&_0xb0830b[_0x6eb1('0x31')][_0x6eb1('0x44')]){_0x5733a7[_0x6eb1('0x45')](createMessage(_0x14ea99,_0x28f1a8,_0x3f4e2d,_0xb0830b[_0x6eb1('0x31')][_0x6eb1('0x44')]));}}return Promise['all'](_0x5733a7)[_0x6eb1('0xc')](function(){if(_0x2e15e5){_0x1d503d[_0x6eb1('0x15')]();}else{_0x1d503d[_0x6eb1('0x29')]();}})[_0x6eb1('0xf')](function(_0x418450){logger[_0x6eb1('0x10')](_0x6eb1('0xe'),_0x14ea99,JSON[_0x6eb1('0x25')](_0x418450));_0x1d503d[_0x6eb1('0x15')]();});}})[_0x6eb1('0xf')](function(_0x5c10f2){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x14ea99,_0x5c10f2[_0x6eb1('0x46')],_0x5c10f2[_0x6eb1('0x47')]);_0x1d503d[_0x6eb1('0x15')]();});}}catch(_0x4ea21d){logger['error'](_0x6eb1('0xe'),_0x14ea99,JSON[_0x6eb1('0x25')](_0x4ea21d));_0x1d503d[_0x6eb1('0x29')]();}};};